2010-12-09 9 views
0

Ich habe zwei LatLon (Längen- und Breitengrad) Objekte, die zwei Orte auf der Erdoberfläche darstellen. Ich möchte den Winkel (in Radianten) zwischen dem Mittelpunkt der Erde und diesen beiden LatLon-Objekten finden.Wie finde ich den Winkel zwischen dem Mittelpunkt der Erde und zwei Längen- und Breitenkoordinaten?

Ich werde diesen Winkel und den Radius der Erde verwenden, um die Bogenlänge zwischen den beiden Orten zu berechnen (ich denke, dies wird eine bessere Genauigkeit als mit einfachen Pythagoras geben und schneller sein als die Berechnung der Großkreisdistanz) .

Ich habe bereits Code, um mir den Pythagoräischen Abstand und die Großkreisdistanz zu geben.

+0

Wie genau muss es sein und über welche Entfernungen? Wenn wir von Punkten sprechen, die Tausende von Meilen voneinander entfernt sind, können Sie erhebliche Fehler (in der Größenordnung von Meilen) erleiden, wenn Sie ein vereinfachtes Modell wie eine kugelförmige Erde annehmen. –

+2

Wenn Sie Bogenlänge wünschen, müssen Sie große Kreise verwenden. Andernfalls erhalten Sie einen euklidischen Abstand, der auf der Oberfläche einer Kugel nicht genau ist. Sehen Sie sich diesen Wikipedia-Artikel an: http://en.wikipedia.org/wiki/Great-circle_distance. Übrigens, wenn Sie dies auf gis.stackexhange.com fragen, erhalten Sie möglicherweise mehr Antworten. – SRM

+0

@SRM, richtigen Link: http://gis.stackexchange.com/ –

Antwort

-1
+0

Also konvertiere ich die LatLons zu kartesischen Koordinaten, normalisieren sie, nehmen Sie das Skalarprodukt, dann berechnen Sie den inversen Kosinus? Gibt es einen leichteren Weg? – wpearse

+0

Dies führt zu einer euklidischen Distanz, die auf der Oberfläche einer Kugel sehr ungenau ist. – SRM

+0

@wpearse ja, Bogenlänge auf der Oberfläche der Erde ist keine triviale Berechnung. – SRM

-2

Ich dachte, das auf dem ersten (nach einigen calc auf Papier) ist dies Pythagoreische Sache?
angle_between_radian = sqrt(deltaLA^2 + deltaLO^2)*PI /180
bearbeiten: delta = delta>180?360-delta:delta
Wir arbeiten auf Kugel dann oben muss falsch ^^.
Aber dieser Link kann helfen: Calculate distance, bearing and more between Latitude/Longitude points.

+0

Nicht einmal in der Nähe. Stellen Sie sich zwei Punkte vor, die den Nordpol mit einem Abstand von 1 Zoll umgeben, aber um 180 Grad voneinander abweichen ... –

+0

Dies ist nur eine Idee, Delta, wir sollten nicht größer als 180 sein, dann können Sie wie 360-Delta modifizieren, wenn Delta> 180 ... – pinichi