2010-12-09 61 views
0

J'ai deux objets LatLon (latitude-longitude) qui représentent deux endroits sur la surface du globe. Je veux trouver l'angle (en radians) entre le centre de la terre et ces deux objets Latlon. Je vais utiliser cet angle et le rayon de la terre pour calculer la longueur d'arc entre les deux emplacements (je pense que cela donnera une meilleure précision que d'utiliser de simples Pythagore, et sera plus rapide que de calculer la distance du grand cercle) .Comment trouver l'angle entre le centre de la terre et deux coordonnées latitude-longitude

J'ai déjà un code pour me donner la distance de Pythagore et la distance du grand cercle.

+0

À quel point doit-il être précis et sur quelles distances? Si nous parlons de points distants de plusieurs milliers de kilomètres, vous risquez de rencontrer des erreurs significatives (de l'ordre des miles) en supposant un modèle simplifié comme une Terre sphérique. –

+2

Si vous voulez arclength vous devez utiliser de grands cercles. Sinon, vous obtiendrez une distance euclidienne qui n'est pas précise sur la surface d'une sphère. Découvrez cet article wikipedia pour un aperçu: http://en.wikipedia.org/wiki/Great-circle_distance. En passant, si vous posez cette question sur gis.stackexhange.com, vous obtiendrez peut-être plus de réponses. – SRM

+0

@SRM, lien correct: http://gis.stackexchange.com/ –

Répondre

-1

En utilisant quelque chose comme ça - how to calculate the angle between two vectors

+0

Donc je convertis les LatLons en coordonnées cartésiennes, les normalise, prends le produit scalaire, puis calcule le cosinus inverse? Y a-t-il un moyen plus facile? – wpearse

+0

Il en résulte une distance euclidienne qui est follement imprécise à la surface d'une sphère. – SRM

+0

@wpearse oui, la longueur d'arc sur la surface de la terre n'est PAS un calcul trivial. – SRM

-2

Je pensais que cela d'abord (après quelques calc sur le papier) est cette chose pythagoricienne?
angle_between_radian = sqrt(deltaLA^2 + deltaLO^2)*PI /180
modifier: delta = delta>180?360-delta:delta
Nous travailler sur la sphère puis au-dessus doit mal ^^.
Mais ce lien peut vous aider: Calculate distance, bearing and more between Latitude/Longitude points.

+0

Pas même à proximité. Imaginez deux points chevauchant le pôle nord, 1 pouce de distance, mais différant de 180 degrés de longitude ... –

+0

Ceci juste une idée, delta nous neel ne devrait pas être plus grand que 180 alors vous pouvez faire modifier comme 360 ​​delta si delta> 180 ... – pinichi