Ich möchte einen Breiten- und Längengradpunkt finden, der eine Peilung, eine Entfernung und einen Startbreiten- und -längengrad aufweist.
Dies scheint das Gegenteil dieser Frage zu sein ( Abstand zwischen Lat / Long-Punkten ).
Ich habe mich bereits mit der Haversine-Formel befasst und denke, dass die Annäherung an die Welt wahrscheinlich nahe genug ist.
Ich gehe davon aus, dass ich die Haversin-Formel für meinen unbekannten Lat / Long lösen muss. Stimmt das? Gibt es gute Websites, die über solche Dinge sprechen? Es scheint, als wäre es üblich, aber mein Googeln hat nur Fragen aufgeworfen, die denen oben ähneln.
Was ich wirklich suche, ist nur eine Formel dafür. Ich würde ihm gerne eine Startzeit, eine Peilung und eine Entfernung (Meilen oder Kilometer) geben und ich würde gerne ein Paar aus der Startzeit herausholen, das darstellt, wo man gelandet wäre, wenn sie mitgereist wären diese Route.
quelle
Antworten:
Ich wäre gespannt, wie sich die Ergebnisse dieser Formel mit denen von Esri's pe.dll vergleichen lassen .
( Zitat ).
Hier ist eine HTML-Seite zum Testen .
quelle
Wenn Sie in einer Ebene sind, dann der Punkt, ist r Meter entfernt auf einem Lager von einem Grad östlich von Norden verschoben wird durch r * cos (a) in der Nordrichtung und r * sin (a) in der Ost - Richtung. (Diese Aussagen definieren mehr oder weniger den Sinus und den Cosinus.)
Obwohl Sie sich nicht in einer Ebene befinden - Sie arbeiten an der Oberfläche eines gekrümmten Ellipsoids, das die Erdoberfläche modelliert -, bedeckt jede Entfernung von weniger als ein paar hundert Kilometern einen so kleinen Teil der Oberfläche, dass dies für die meisten praktischen Zwecke möglich ist als flach angesehen werden. Die einzige verbleibende Komplikation besteht darin, dass ein Längengrad nicht die gleiche Entfernung wie ein Breitengrad zurücklegt. In einem sphärischen Erdmodell ist ein Längengrad nur cos (Breite) so lang wie ein Breitengrad. (In einem Ellipsoid-Modell ist dies immer noch eine hervorragende Annäherung, die ungefähr 2,5 signifikante Zahlen ergibt.)
Schließlich ist ein Breitengrad ungefähr 10 ^ 7/90 = 111,111 Meter. Wir haben jetzt alle Informationen, die benötigt werden, um Meter in Grad umzuwandeln:
Die Verschiebung nach Norden beträgt r * cos (a) / 111111 Grad;
Die Verschiebung nach Osten beträgt r * sin (a) / cos (Breite) / 111111 Grad.
Zum Beispiel können wir bei einer Breite von -0,31399 Grad und einer Peilung von a = 30 Grad östlich von Norden berechnen
Ab (-78.4437, -0.31399) ist der neue Standort (-78.4437 + 0.00045, -0.31399 + 0.0007794) = (-78.4432, -0.313211).
Eine genauere Antwort im modernen ITRF00-Referenzsystem ist (-78,4433, -0,313207): Dies ist 0,43 Meter von der ungefähren Antwort entfernt, was angibt, dass die Annäherung in diesem Fall um 0,43% fehlerhaft ist. Um eine höhere Genauigkeit zu erzielen, müssen Sie entweder ellipsoide Abstandsformeln (die weitaus komplizierter sind) oder eine konforme High-Fidelity-Projektion ohne Divergenz verwenden (damit die Peilung korrekt ist).
quelle
Wenn Sie eine JavaScript-Lösung benötigen, sollten Sie diese
functions
und diese Tipps beachten :Wenn Sie also eine neue Koordinate berechnen möchten, kann dies folgendermaßen aussehen:
quelle
Ich habe dies in ObjectiveC funktioniert. Der Schlüssel hierbei ist zu wissen, dass Sie Lat / Lng-Punkte im Bogenmaß benötigen und diese nach Anwendung der Gleichung wieder in Lat / Lng konvertieren müssen. Beachten Sie auch, dass Abstand und tc im Bogenmaß angegeben sind.
Hier ist die ursprüngliche Gleichung:
Hier wird es in ObjC implementiert, wobei der Bogenmaßstab ein Bogenmaßstab ist, der gegen den Uhrzeigersinn von N aus gemessen wird (z. B. PI / 2 ist W, PI ist S, 2 PI / 3 ist E) und die Entfernung in Kilometern.
quelle
Wenn Sie an einer besseren Genauigkeit interessiert sind, gibt es Vincenty . (Link ist auf die "direkte" Form, die genau das ist, was Sie suchen).
Es gibt eine ganze Reihe von Implementierungen, wenn Sie Code suchen.
Außerdem eine Frage: Sie gehen nicht davon aus, dass der Reisende während der gesamten Reise die gleiche Orientierung hat, oder? Wenn ja, dann beantworten diese Methoden nicht die richtige Frage. (Es ist besser, auf mercator zu projizieren, eine gerade Linie zu zeichnen und das Ergebnis dann zu entfernen.)
quelle
Hier ist eine Python-Lösung:
quelle
Ich benutze den unten beschriebenen Ansatz, um die nächste Koordinate unter Berücksichtigung der Peilung und des Abstands von der vorherigen Koordinate zu bestimmen. Ich habe ein Problem mit der Genauigkeit eines anderen Ansatzes, den ich aus dem Internet gelesen habe.
Ich benutze dies, um die Landfläche zu bestimmen, die ein Polygon ist, und zeichne dieses Polygon in Google Earth. Ein Landtitel weist Peilungen und Entfernungen auf, die wie folgt geschrieben sind: "Nord oder Süd x Grad y Minuten Ost oder West, z Meter bis Punkt n;".
Ausgehend von den angegebenen Koordinaten des Bezugspunkts berechne ich zunächst die Entfernung pro Breitengrad und Längengrad mit der Haversinus-Formel, da diese je nach Standort unterschiedlich ist. Dann bestimme ich die nächste Koordinate aus der Sinus- und Cosinusformel der Trigonometrie.
Unten ist das Javascript:
quelle