Trouver la distance entre deux coordonnées dans un ellipsoïde?

18

J'ai deux ensembles de latitude et de longitude.

Comment puis-je trouver la distance entre les deux emplacements si je suppose que la terre est un ellipsoïde parfait (avec une excentricité de 0,0167)?

Jon Bringhurst
la source

Réponses:

16

Je recommanderais de vérifier:
Sphérique: http://www.movable-type.co.uk/scripts/latlong.html
Great-Circle: http://www.movable-type.co.uk/scripts/gis-faq -5.1.html

Wallbasher
la source
1
Les formules de cette page semblent ignorer l'excentricité. Ils supposent que la terre est une sphère et non un ellipsoïde.
Jon Bringhurst du
Auparavant, j'utilisais toujours une bibliothèque qui avait des distances connues entre certains points longs lat définis, puis effectuais une moyenne pour calculer la distance de tout point inconnu. Je vais poser quelques questions à ce sujet.
Wallbasher
Ah, le deuxième lien semble avoir la bonne formule. Merci!
Jon Bringhurst du
1
Merci pour votre réponse @Wallbasher. Cependant, il serait préférable que les réponses soient autonomes. Il serait très utile que vous publiez également la formule appropriée avec votre réponse.
RK
7

Donc vous connaissez vos deux latitudes et longitudes, disons

Vous pouvez calculer les coordonnées cartésiennes pour chacun:

xa = (Cos(thisLat)) * (Cos(thisLong));
ya = (Cos(thisLat)) * (Sin(thisLong));
za = (Sin(thisLat));

xb = (Cos(otherLat)) * (Cos(otherLong));
yb = (Cos(otherLat)) * (Sin(otherLong));
zb = (Sin(otherLat));

Et puis calculez la distance du grand cercle entre les deux en utilisant:

MeanRadius * Acos(xa * xb + ya * yb + za * zb);

Cette approche simplifiée permet de précalculer les valeurs x, y et z, qui peuvent être stockées parallèlement dans une base de données pour des requêtes "points dans x miles" efficaces.

Bien sûr, cela suppose une sphère parfaite, et la Terre n'est même pas un élipsoïde parfait, donc la précision ne sera que de quelques mètres.

Rowland Shaw
la source
1
J'allais aussi souligner la "chose sphère parfaite". Vous devez savoir que cette méthode vous donnera différents degrés de précision selon l'endroit où vous vous trouvez sur le globe.
TroutSlayer
@TrotuSlayer est généralement assez bon pour la plupart des applications, et il y a toujours un compromis entre vitesse et précision. Si vous devez être plus précis, il est temps de sortir la roue gigogne ou de recourir à des hypothèses selon lesquelles la Terre est plate pour votre zone donnée et les distances 2D sont suffisantes.
Rowland Shaw