2012-04-12 9 views
0

Eine Menge Antworten auf die Frage gefunden, wie die Entfernung nach lat/lon und nichts nach einem "umgekehrten" Problem berechnet wird.Länge aus Entfernung berechnen

Ich habe eine Verschiebung in X und Y und einen GPS-Punkt (lat/lon), muss jedoch Koordinaten für einen neuen Punkt berechnen.

Mit Formel:

double deltaLat = dy/EARTH_RADIUS; 
double deltaLon = dx/EARTH_RADIUS; 
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct 
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon); 

Es ist richtig für Breitengrade zu berechnen, aber für die Länge ich etwa 10 – 15% Fehler. Hat jemand das gleiche Problem? Irgendwelche möglichen Formeln, um den Längengrad durch Verschiebung zu berechnen?

+0

Verschiebung Sie haben aber in welche Richtung – vipin

Antwort

0

Simplest aber nicht die beste Lösung ist:

double deltaLat = dy/EARTH_RADIUS; // up-down 
double deltaLon = dx/EARTH_RADIUS ; // left-right 
double lat = locLat + Math.signum(dy) * Math.toDegrees(deltaLat); // formula correct 
double lon = locLon + Math.signum(dx) * Math.toDegrees(deltaLon * 1.195); 
1

Der Grund, warum Sie 10-15% Längenfehler erhalten, ist, dass Sie für den Längengrad den Erdradius nicht verwenden können, um Ihre Verschiebung zu berechnen. Stattdessen müssen Sie den Radius des "Kreises" auf der entsprechenden Breite verwenden. Verwendung Daher Ihre Formel sollte Ihre Länge Berechnungen mehr sein wie

double deltaLon = dx/(EARTH_RADIUS * cos(locLat)) 

dies auch immer Sie um die Pole zu unerwünschten Ergebnissen führen kann, wie cos(locLat) nahe 0 erhalten wird, so dass Sie einige Sonderfälle für die Pole haben möchten (oder sogar um sie herum). Logischerweise, wenn Sie darüber nachdenken, wenn Sie an der Stange sind, wird das Bewegen einer beliebigen Entfernung entlang der x-Achse Sie sowieso nirgendwohin bringen.

+0

Statt 100meters ich -150meters mit Ihrer Formel zwischen Longituden erhalten. Ich nehme an, deine Formel ist nicht so gut, und sie wird schlimmer, wenn wir uns Polen nähern. –