Italian !!! Geometri/Topografi/Nautici a me!!! - Come trovare distanza tra due punti gps?

amorosik

Expert
Licensed User
A prima pensavo fosse una banalita', mi sono detto "..je do' giu a colpi di seno, coseno e tangente e risolvo.."
Ma non e' proprio cosi', nel senso che ipotizzando la forma terrestre come una sfera, ogni meridiano potrebbe essere approssimato come il diametro terrestre per pi
E quindi per passare dai gradi alla distanza lineare terrestre, approssimando un po' qui ed un poì' la', ogni grado sarebbe diametro_terra * pi / 360
Stessa cosa per i paralleli pero' non e' valida, perche' il parallelo all'equatore e' diametro terrestre * pi, ma se andiamo verso i poli la lunghezza di un parallelo si riduce a zero e pure in modo non lineare
E quindi, ipotizzando la forma terrestre sia sferica, ed il diametro terreste sia X, come fare per calcolare la distanza tra due punti data latitudine e longitudine?
 

Star-Dust

Expert
Licensed User
Longtime User
Il metodo DistanceTo è abbastanza preciso ma se si vuole maggiore precisione si può usare la formula dell'emisenoverso. Sul forum troverai il sorgente.
 

amorosik

Expert
Licensed User
Il metodo DistanceTo è abbastanza preciso ma se si vuole maggiore precisione si può usare la formula dell'emisenoverso. Sul forum troverai il sorgente.

Si, conosco il DistanceTo ma volevo capire come 'ragiona' quella funzione, insomma volevo comprendere come fare il calcolo a mano
Per 'formula emisenoverso' non trovo riferimento nel forum, stai forse parlando di questa?
 

Star-Dust

Expert
Licensed User
Longtime User
Si, conosco il DistanceTo ma volevo capire come 'ragiona' quella funzione, insomma volevo comprendere come fare il calcolo a mano
Per 'formula emisenoverso' non trovo riferimento nel forum, stai forse parlando di questa?
No, c'è un procedura che implementa la formula emisenoverso.

PS. Il raggio della terra varia da 6356,752 km ai poli a 6378,137 km all'equatore. Non è perfettamente sferica.....
 
Last edited:

amorosik

Expert
Licensed User
No, c'è un procedura che implementa la formula emisenoverso.

PS. Il raggio della terra varia da 6356,752 km ai poli a 6378,137 km all'equatore. Non è perfettamente sferica.....

Va beh, ci sara' anche, ma con la ricerca del forum non riesco a trovarla
Si, ovviamente la terra non e' una sfera
Il mio interesse, come specificato nel primo post, e' individuare la funzione per recuperare la distanza tra due punti arbitrari, ipotizzando sia sferica
 

Star-Dust

Expert
Licensed User
Longtime User
Il raggio è importante perché se calcoli il valore con un valore medio del raggio in alcuni punti potresti avere un errore anche di mezzo chilometro.

Non so che tipo di precisione vuoi ottenere
 
Last edited:

GiovanniPolese

Well-Known Member
Licensed User
Longtime User
B4X:
private Sub GeoDist(A As Location,B As Location) As Double
    Dim EarthRadius As Double, PiGrec As Double, X As Double, Y As Double, dLon As Double
    Dim Lat1,Lat2 As Double
    Dim v1,v2 As Double
    
    EarthRadius= 6372.8  ' Km
    PiGrec = 3.1415926535
    
    Lat1 = A.Latitude * PiGrec / 180
    Lat2 = B.Latitude * PiGrec / 180
    
    dLon = (B.Longitude - A.Longitude) * PiGrec / 180
    
    X = Sin(Lat1) * Sin(Lat2) + Cos(Lat1) * Cos(Lat2) * Cos(dLon)
    v1=Cos(Lat2) * Sin(dLon)
    v2=Cos(Lat1) * Sin(Lat2) - Sin(Lat1) * Cos(Lat2) * Cos(dLon)
    Y = Sqrt( v1 * v1 +  v2 * v2)
    
    Return ATan2(Y, X) * EarthRadius*1000 ' meters
End Sub
 

Star-Dust

Expert
Licensed User
Longtime User
Non era esattamente questo il codice, ma credo vada bene lo stesso
 

Elric

Well-Known Member
Licensed User
Dipende a cosa ti serve e cosa vuoi ottenere: solitamente le distanze si calcolano o in lossodromia o in ortodromia.

Brevemente:
percorso lossodromico: taglia i meridiani con angolo costante : la rotta è immutata tra il punto di partenza e quello di arrivo.
percorso ortodromico: la rotta non è fissa perché i meridiani vengono intersecati con angoli variabili, il percorso è rappresentato da un arco di cerchio massimo ed in questo caso si ha un risparmio di cammino perché è il tragitto più breve.

È il motivo per cui per andare da Roma a New York ti converrebbe volare passando per Parigi invece che per Madrid.
 

GiovanniPolese

Well-Known Member
Licensed User
Longtime User
Salve. Questa formula non è certo mia. La ho trovata con una ricerca in google qualche tempo fa, e la ho poi sostituita con la funzione interna alla Location perchè per il mio uso andava bene lo stesso. Perlomeno qui puoi cambiare il raggio della terra.
 
Top