GPS Punkte entfernungen berechnen?

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
964
Hallo ich habe 2 GPS Punke:
1. 50.9349381, 6.9607318
2. 50.9352035, 6.9602785

Und ich möchte jetzt berechnen wie groß die Entfernung, in cm, m, oder km, zwischen den beiden Punkten ist.
 
wenn es mehr als nur die 2 koordniaten sein sollen, empfehle ich eine postgresql datenbank.

dort gibt es für solche sachen die distance funktion.

vorher müssen die koordinaten aber von weltkoordinaten (EPSG:4326) in das entsprechende ziel koordinatensystem (z.B EPSG:900913) transformiert werden, sonst gibt die funktion nur den abstand in gradmaß zurück.
 
Ich möchte es ja in einem eigenen Programm verwenden..
 
Zuletzt bearbeitet:
6aab3518b37e93b48d8d560ad8f1d9df.png


http://de.wikipedia.org/wiki/Orthodrome#Strecke

Phi_A und Phi_B sind die geografischen Längen - in deinem Beispiel 6,9° -, Lambda_A und Lambda_B sind die geografischen Breiten - in deinem Beispiel 50,9°.
Lambda_A und Lambda_B sind die geografischen Längen - in deinem Beispiel 6,9° -, Phi_A und Phi_B sind die geografischen Breiten - in deinem Beispiel 50,9°.
Bei westlichen Längen- und nördlichen Breitengraden musst du in der Rechnung ein negatives Vorzeichen verwenden.
Das Ergebnis der Formel hat noch keine Einheit. Die Strecke in km bekommst du raus, wenn du mit dem Erdradius von rund 6370 km multiplizierst.

P.S.: Beim Programmieren nicht mit Grad- und Bogenmaß durcheinander kommen. Programmiersprachen wollen die Winkel in der Regel im Bogenmaß haben und liefern sie bei den trigonometrischen Funktionen in der Regel auch im Bogenmaß zurück (was wir bei der obigen Formel auch haben wollen).

/EDIT: Längen und Breiten vertauscht. Habs korrigiert
 
Zuletzt bearbeitet:
gute frage was für längengrade zeigt google maps an? Nördliche, Östliche, etc.?

Aber habe ich irgendwas vergessen? Ich bekomme raus: 3.1738524423173198 sollen aber 43.5889 m sein..
 
Hast du die Winkel ins Bogenmaß umgerechnet? Mit 2*Pi/360 multiplizieren.
Dein Ergebniss ist ja fast Pi, das deutet stark auf einen Rechenfehler hin.
Und abschließend nicht vergessen, das Ergebnis mit dem Erdradius zu multiplizieren.

lordfritte schrieb:
gute frage was für längengrade zeigt google maps an? Nördliche, Östliche, etc.?
Kommt drauf an, wo auf der Erde du gerade deinen Cursor hast. ;)
Rio de Janeiro hat z.B. ungefähr die Koordinaten 23° S und 43° W. Ist also südwestlich des Nullpunktes im geografischen Koordinatensystem. In die Formel setzt du in diesem Fall -22° als Breitengrad und -43° als Längengrad ein.
 
Zuletzt bearbeitet:
Ahhh 0.055 sieht schon besser aus, also Danke.
Hättest du auch eine Idee wie ich jetzt sowas : 50° 56′ 32″ N, 6° 57′ 28″ E umrechnen kann?
 
lordfritte schrieb:
Ahhh 0.055 sieht schon besser aus, also Danke.
Ja, das sieht schon besser aus. Die Formel berücksichtigt natürlich nicht Berge und Täler, sondern betrachtet die Erde als perfekte Kugel. Deshalb kann es unter Umständen deutliche Abweichungen zu einer Streckenmessung in Google Earth geben, wo die exakte Geometrie des Erdballs berücksichtigt wird.

lordfritte schrieb:
Hättest du auch eine Idee wie ich jetzt sowas : 50° 56′ 32″ N, 6° 57′ 28″ E umrechnen kann?
Ja. Bogenminuten (′) durch 60 teilen, Bogensekunden (′′) durch 3600 teilen und dann Beides auf die 50° draufaddieren.
 
ok vielen Danke, aber wie könnte man denn noch die höhe berücksichtigen, einfach mit dem Satz des Pythagoras oder? Ich habe Geometrie seit Jahren nicht mehr gemacht ^^
 
Die Höhenunterschiede kannst du nicht sinnvoll berücksichtigen, weil zwischen den Punkten ja alles mögliche liegen kann, das zusätzliche Höhenunterschiede einbringt. Und du willst ja nicht gerade die Luftlinienentfernung berechnen, oder?
Wenn du es genauer haben willst, musst du wohl auf eine Bibliothek zurückgreifen, die ein genaueres Modell der Erde gespeichert hat und wie Google Earth die Strecken bestimmen kann.
 
Aber so mehr Punkte ich habe, desso genauer wird es doch, ich möchte für mein Smartphone ein kleines Programm schreiben. Darin möchte ich einen Start- und einen Stopbutton, wenn es läuft soll es mir jede sec meine Position ermitteln und mir eben berechnen wie viel km ich zurück gelegt habe.
 
lordfritte schrieb:
Aber so mehr Punkte ich habe, desso genauer wird es doch, ich möchte für mein Smartphone ein kleines Programm schreiben. Darin möchte ich einen Start- und einen Stopbutton, wenn es läuft soll es mir jede sec meine Position ermitteln und mir eben berechnen wie viel km ich zurück gelegt habe.

Das GPS-Gerät müsste dir deine aktuelle Höhe zurückgeben können (wird aus der Laufzeit zum Satelliten bestimmt, die Position des Satelliten ist bekannt). Wenn du sekündlich die Position prüfst, kannst du diese Information zusätzlich verwenden und eben den Höhenunterschied mit einrechnen. Also wie du es schon gesagt hast, mit einem angenäherten Dreieck und dem Satz des Pythagoras. Solange du oft genug die Positionsänderung bestimmst, ist ein Dreieck als Näherung genau genug.
Zurückgelegte Strecke pro Sekunde = Wurzel((Streckenunterschied zwischen den Koordinaten pro Sekunde)^2 + (Höhenunterschied pro Sekunde)^2)
 
Mir ist noch aufgefallen, dass ich bei der Erklärung der Formel oben Längen und Breiten vertauscht habe. Wenn du richtig rechnest, kommst du mit der Formel bei deinen Koordinaten auf eine Entfernung von 43 m. Mit vertauschen Längen und Breiten komme ich auch auf ungefähr die von dir berechneten 55 m.
Und wie mir scheint, berücksichtigt Google Earth bei der Streckenberechnung doch nicht das Höhenprofil. Wenn ich bei einem steilen Berg das Lineal über eine Höhendifferenz von 700 m anlege, komme ich nur auf eine Strecke von 500 m. Und wenn ich das Gelände ausschalte, bleibt die Strecke gleich. Zudem entspricht die Strecke in Google Earth genau dem gerundeten Ergebnis der Formel oben. Hab die Formel selber mal in einem Programm implementiert und mit verschiedenen Koordinaten überprüft. Google Earth spuckt immer das gleiche Ergebnis aus, nur gerundet.
 
Zuletzt bearbeitet:
Zurück
Oben