Wie berechne ich die Entfernung zwischen zwei GPS-Koordinaten (anhand von Längen- und Breitengraden)?
math
geolocation
geometry
latitude-longitude
geography
nicudotro
quelle
quelle
Antworten:
Berechnen Sie den Abstand zwischen zwei Koordinaten nach Breite und Länge , einschließlich einer Javascript-Implementierung.
West und Süd - Standorte sind negativ. Denken Sie daran, dass Minuten und Sekunden von 60 abweichen, sodass S31 30 '-31,50 Grad beträgt.
Vergessen Sie nicht , Grad in Bogenmaß umzurechnen . Viele Sprachen haben diese Funktion. Oder es ist eine einfache Berechnung :
radians = degrees * PI / 180
.Hier einige Anwendungsbeispiele:
quelle
Number.prototype.toRad = function() { return this * (Math.PI / 180); };
. Oder, wie unten angegeben, können Sie es durch(Math.PI/2)
0.0174532925199433 (... unabhängig von der Genauigkeit, die Sie für erforderlich halten) ersetzen, um die Leistung zu steigern.R
normalerweise in der Mathematik bedeutet, und suchen Sie dann nach relevanten erdbezogenen Größen, um festzustellen, ob die Zahlen übereinstimmen.earthRadiusKm
werdenvar earthRadiusMiles = 3959;
, zu ihrer Information.Suchen Sie bei Google nach Haversine. Hier ist meine Lösung:
quelle
C # -Version von Haversine
Hier ist eine .NET-Geige davon , damit Sie sie mit Ihren eigenen Lat / Longs testen können.
quelle
Java-Version des Haversine-Algorithmus basierend auf der Antwort von Roman Makarov auf diesen Thread
quelle
0.07149
km gab, während Ihre Formel mir0.07156
eine Genauigkeit von ungefähr 99% gabDies ist mit dem Geografietyp in SQL Server 2008 sehr einfach.
4326 ist SRID für das elipsoidale Erdmodell WGS84
quelle
Hier ist eine Haversine-Funktion in Python, die ich verwende:
quelle
Es hängt davon ab, wie genau Sie es benötigen. Wenn Sie eine genaue Genauigkeit benötigen, ist es am besten, einen Algorithmus zu betrachten, bei dem ein Ellipsoid anstelle einer Kugel verwendet wird, z. B. der Algorithmus von Vincenty, der auf mm genau ist. http://en.wikipedia.org/wiki/Vincenty%27s_algorithm
quelle
Hier ist es in C # (lat und long im Bogenmaß):
Wenn Lat und Long in Grad angegeben sind, dividieren Sie durch 180 / PI, um sie im Bogenmaß umzurechnen.
quelle
Ich musste viele Entfernungen zwischen den Punkten für mein Projekt berechnen, also habe ich versucht, den Code zu optimieren, den ich hier gefunden habe. Im Durchschnitt läuft meine neue Implementierung in verschiedenen Browsern zweimal schneller als die am besten bewertete Antwort.
Sie können mit meinem jsPerf spielen und die Ergebnisse hier sehen .
Vor kurzem musste ich dasselbe in Python tun, daher hier eine Python-Implementierung :
Und der Vollständigkeit halber: Haversine im Wiki.
quelle
PHP-Version:
(Entfernen Sie alle,
deg2rad()
wenn Ihre Koordinaten bereits im Bogenmaß liegen.)quelle
Eine T-SQL-Funktion, mit der ich Datensätze nach Entfernung für ein Zentrum auswähle
quelle
Wenn Sie etwas genaueres benötigen, schauen Sie sich das an .
quelle
I. In Bezug auf die "Breadcrumbs" -Methode
Unten sehen Sie die Funktion in C, die # 1 und # 2 berücksichtigt:
II. Es gibt einen einfacheren Weg, der ziemlich gute Ergebnisse liefert.
Nach Durchschnittsgeschwindigkeit.
Trip_distance = Trip_average_speed * Trip_time
Da die GPS-Geschwindigkeit durch den Doppler-Effekt erkannt wird und nicht direkt mit [Lon, Lat] zusammenhängt, kann sie zumindest als sekundär (Sicherung oder Korrektur) betrachtet werden, wenn nicht als Methode zur Berechnung der Hauptentfernung.
quelle
Wenn Sie .NET verwenden, aktivieren Sie das Rad nicht erneut. Siehe System.Device.Location . Gutschrift an fnx in den Kommentaren in einer anderen Antwort .
quelle
Dieser Lua-Code wurde aus Wikipedia und dem GPSbabel- Tool von Robert Lipe übernommen :
quelle
quelle
Dies ist eine Version von "Henry Vilinskiy", angepasst für MySQL und Kilometer:
quelle
MySQL
sagteSomething is wrong in your syntax near '' on line 8
// declare distance float;
Hier ist die Swift-Implementierung aus der Antwort
quelle
Ich nahm die beste Antwort und verwendete sie in einem Scala-Programm
Ich habe die Funktion aktiviert, um auf einfache Weise Funktionen erstellen zu können, bei denen eine der beiden Positionen festgelegt ist und für die die Entfernung nur ein Paar Lat / Lon benötigt.
quelle
Ich denke du willst es entlang der Krümmung der Erde. Ihre beiden Punkte und der Erdmittelpunkt liegen auf einer Ebene. Der Erdmittelpunkt ist der Mittelpunkt eines Kreises auf dieser Ebene, und die beiden Punkte befinden sich (ungefähr) am Umfang dieses Kreises. Daraus können Sie die Entfernung berechnen, indem Sie den Winkel von einem Punkt zum anderen ermitteln.
Wenn die Punkte nicht die gleichen Höhen haben oder wenn Sie berücksichtigen müssen, dass die Erde keine perfekte Kugel ist, wird es etwas schwieriger.
quelle
Ich musste kürzlich das Gleiche tun. Ich fand diese Website sehr hilfreich, um sphärische Trigger anhand von Beispielen zu erklären, denen man leicht folgen konnte.
quelle
Eine Implementierung davon (mit einigen guten Erklärungen) finden Sie in F # auf fssnip
Hier sind die wichtigen Teile:
quelle
Ich musste dies in PowerShell implementieren, hoffe, es kann jemand anderem helfen. Einige Hinweise zu dieser Methode
Ich benutze Haversine, da andere Beiträge darauf hingewiesen haben, dass Vincentys Formeln viel genauer sind
quelle
Scala-Version
quelle
// Vielleicht ein Tippfehler? Ich nehme an,
wir haben eine nicht verwendete Variable dlon in GetDirection
sollte sein
quelle
Hier ist meine Implementierung in Elixir
quelle
Dart Version
Haversine-Algorithmus.
quelle
Ich denke, eine Version des Algorithmus in R fehlt noch:
quelle
Hier ist eine Kotlin-Variante:
quelle