Sie können es mit der Haversine-Formel berechnen, die lautet:
a = sin²(/2) + cos 1 cos 2 sin²(/2)
c = 2 atan2( a, (1a) )
d = R c
Ein Beispiel zur Berechnung der Entfernung zwischen zwei Punkten finden Sie unten
Angenommen, ich muss die Entfernung zwischen Neu-Delhi und London berechnen, wie kann ich diese Formel nutzen:
Neu Delhi Koordinaten= 28.7041° N, 77.1025° E
London Koordinaten= 51.5074° N, 0.1278° W
var R = 6371e3; // Meter
var 1 = 28.7041.toRadians();
var 2 = 51.5074.toRadians();
var = (51.5074-28.7041).toRadians();
var = (0.1278-77.1025).toRadians();
var a = Math.sin(/2) * Math.sin(/2) +
Math.cos(1) * Math.cos(2) *
Math.sin(/2) * Math.sin(/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c; // Meter
d = d/1000; // km
0 Stimmen
Für eine bessere Genauigkeit - siehe stackoverflow.com/questions/1420045/…
4 Stimmen
Beachten Sie, dass Sie die Haversine-Formel nicht auf einem Rotationsellipsoid wie WGS 84 anwenden können. Sie können diese Methode nur auf einer Kugel mit einem Radius anwenden.
8 Stimmen
Die meisten Antworten hier verwenden einfache sphärische Trigonometrie, daher sind die Ergebnisse im Vergleich zu den WGS84-Ellipsoidentfernungen, die im GPS-System verwendet werden, ziemlich grob. Einige der Antworten beziehen sich zwar auf die Vincenty-Formel für Ellipsoide, aber dieser Algorithmus wurde für die Verwendung auf Schreibtischrechnern aus den 1960er Jahren entwickelt und weist Stabilitäts- und Genauigkeitsprobleme auf; wir haben jetzt bessere Hardware und Software. Bitte sehen Sie GeographicLib für eine hochwertige Bibliothek mit Implementierungen in verschiedenen Sprachen.
0 Stimmen
@MikeT - das stimmt, obwohl viele der Antworten hier nützlich zu sein scheinen über kleine Entfernungen: Wenn Sie Breiten- / Längengrad von WGS 84 nehmen und Haversine wie wenn es Punkte auf einer Kugel anwenden, erhalten Sie Antworten, deren Fehler nur auf den Erdabplattungsfaktor zurückzuführen sind, vielleicht also innerhalb von 1% einer genaueren Formel? Mit der Einschränkung, dass es sich um kleine Entfernungen handelt, sagen wir innerhalb einer einzigen Stadt.
1 Stimmen
Für diese Plattformen: Mono/.NET 4.5/.NET Core/Windows Phone 8.x/Universal Windows Platform/Xamarin iOS/Xamarin Android siehe stackoverflow.com/a/54296314/2736742
0 Stimmen
Siehe auch diese großartige Python-Antwort: Schnelle Haversine-Approximation (Python/Pandas)