Wenn ich einen Längen- oder Breitengrad im Standard-NMEA-Format habe, gibt es eine einfache Möglichkeit / Formel, diesen Messwert in Meter umzuwandeln, die ich dann in Java (J9) implementieren kann?
Bearbeiten: Ok scheint, was ich tun möchte, ist nicht einfach möglich , aber was ich wirklich tun möchte, ist:
Angenommen, ich habe einen Lat- und Long-Wegpunkt und einen Lat- und Long-Weg eines Benutzers. Gibt es eine einfache Möglichkeit, diese zu vergleichen, um zu entscheiden, wann dem Benutzer mitgeteilt werden soll, dass er sich in angemessener Entfernung vom Wegpunkt befindet? Mir ist klar, dass das Thema vernünftig ist, aber ist das leicht machbar oder immer noch übermäßig mathematisch?
math
geolocation
geo
Adam Taylor
quelle
quelle
Antworten:
Hier ist eine Javascript-Funktion:
Erläuterung: https://en.wikipedia.org/wiki/Haversine_formula
quelle
Wenn Sie nach einer einfachen Formel suchen, ist dies wahrscheinlich der einfachste Weg, vorausgesetzt, die Erde ist eine Kugel mit einem Umfang von 40075 km.
Länge in Metern von 1 ° Breitengrad = immer 111,32 km
Länge in Metern von 1 ° Längengrad = 40075 km * cos (Breitengrad) / 360
quelle
Für die Annäherung kurzer Abstände zwischen zwei Koordinaten habe ich Formeln von http://en.wikipedia.org/wiki/Lat-lon verwendet :
.
Im folgenden Code habe ich die Rohzahlen belassen, um ihre Beziehung zur Formel aus Wikipedia zu zeigen.
Der Wikipedia-Eintrag besagt, dass die Entfernungsberechnungen für 100 km in Längsrichtung innerhalb von 0,6 m und für 100 km in Längsrichtung innerhalb von 1 cm liegen. Ich habe dies jedoch nicht überprüft, da die Genauigkeit für meine Verwendung in der Nähe liegt.
quelle
Breiten- und Längengrade geben Punkte an, nicht Entfernungen, daher ist Ihre Frage etwas unsinnig. Wenn Sie nach der kürzesten Entfernung zwischen zwei (lat, lon) Punkten fragen, lesen Sie diesen Wikipedia-Artikel über Großkreisentfernungen.
quelle
Es gibt viele Tools, die dies vereinfachen. Weitere Informationen zu den Themen finden Sie in der Antwort von Monjardin .
Dies ist jedoch nicht unbedingt schwierig. Es hört sich so an, als würden Sie Java verwenden, daher würde ich empfehlen, sich mit etwas wie GDAL zu befassen . Es bietet Java-Wrapper für ihre Routinen und verfügt über alle Tools, die zum Konvertieren von Lat / Lon (geografische Koordinaten) in UTM (projiziertes Koordinatensystem) oder eine andere vernünftige Kartenprojektion erforderlich sind.
UTM ist schön, weil es Messgeräte sind, mit denen man so einfach arbeiten kann. Sie müssen jedoch die entsprechende UTM-Zone erhalten, damit sie gute Arbeit leistet. Es gibt einige einfache Codes, die per Googeln verfügbar sind, um eine geeignete Zone für ein Lat / Long-Paar zu finden.
quelle
Die Erde ist eine störend unregelmäßige Oberfläche, daher gibt es keine einfache Formel, um dies genau zu tun. Sie müssen mit einem ungefähren Modell der Erde leben und Ihre Koordinaten darauf projizieren. Das Modell, das ich normalerweise dafür sehe, ist WGS 84 . Dies ist, was GPS-Geräte normalerweise verwenden, um genau das gleiche Problem zu lösen.
NOAA hat einige Software, die Sie herunterladen können, um dies auf ihrer Website zu unterstützen .
quelle
Hier ist die R-Version der Funktion von bh-s , nur für den Fall:
quelle
Eine Seemeile (1852 Meter) ist definiert als eine Bogenminute Längengrad am Äquator. Sie müssen jedoch eine Kartenprojektion definieren (siehe auch UTM ), in der Sie daran arbeiten, dass die Konvertierung wirklich Sinn macht.
quelle
Es gibt einige Möglichkeiten, dies zu berechnen. Alle von ihnen verwenden Annäherungen der sphärischen Trigonometrie, bei denen der Radius der der Erde ist.
Versuchen Sie http://www.movable-type.co.uk/scripts/latlong.html für einige Methoden und Code in verschiedenen Sprachen.
quelle
quelle
Um Breiten- und Längengrade in x- und y-Darstellungen umzuwandeln, müssen Sie entscheiden, welche Art von Kartenprojektion verwendet werden soll. Elliptical Mercator scheint mir sehr gut zu sein. Hier finden Sie eine Implementierung (auch in Java).
quelle
Wenn es ausreichend nah ist, können Sie davonkommen, indem Sie sie als Koordinaten auf einer flachen Ebene behandeln. Dies funktioniert beispielsweise auf Straßen- oder Stadtebene, wenn keine perfekte Genauigkeit erforderlich ist und Sie lediglich eine grobe Schätzung der Entfernung benötigen, um sie mit einem beliebigen Grenzwert zu vergleichen.
quelle
Basierend auf der durchschnittlichen Entfernung für Degress in der Erde.
1 ° = 111 km;
Wenn Sie dies für Bogenmaß umrechnen und für Meter dividieren, nehmen Sie eine magische Zahl für den RAD in Metern: 0,000008998719243599958;
dann:
quelle
Wenn Sie eine einfache Lösung wünschen, verwenden Sie die Haversine-Formel, wie in den anderen Kommentaren beschrieben. Wenn Sie eine genauigkeitsempfindliche Anwendung haben, denken Sie daran, dass die Haversine-Formel keine Genauigkeit von mehr als 0,5% garantiert, da davon ausgegangen wird, dass die Erde eine Kugel ist. Um zu betrachten, dass die Erde ein abgeflachter Sphäroid ist, sollten Sie Vincentys Formeln verwenden . Außerdem bin ich mir nicht sicher, welchen Radius wir mit der Haversine-Formel verwenden sollen: {Äquator: 6.378,137 km, Polar: 6.356,752 km, Volumen: 6.371,0088 km}.
quelle
it is assuming the earth is a circle
^^ Einige seltsame Leute machen das heutzutage ... aber was du meinst ist wahrscheinlich eherit is assuming the earth is a sphere
;)Sie müssen die Koordinaten in Bogenmaß konvertieren, um die sphärische Geometrie zu erstellen. Nach der Konvertierung können Sie einen Abstand zwischen den beiden Punkten berechnen. Die Entfernung kann dann in ein beliebiges Maß umgewandelt werden.
quelle