fand ich diesen Code auf Stack-Überlauf:Warum erzeugt diese Python-Haversine-Formel falsche Antworten?
from math import radians, cos, sin, asin, sqrt, atan2
def haversine(lon1, lat1, lon2, lat2):
"""
Calculate the great circle distance between two points
on the earth (specified in decimal degrees)
"""
# convert decimal degrees to radians
lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])
print(lon1, lat1, lon2, lat2)
# haversine formula
dlon = abs(lon2 - lon1)
dlat = abs(lat2 - lat1)
a = sin(dlat/2)**2 + cos(lat1) * cos(lat2) * sin(dlon/2)**2
c = 2 * atan2(sqrt(a), sqrt(1-a))
r = 6371 # Radius of earth in kilometers. Use 3956 for miles
return c * r
Wenn ich die Funktion mit diesen Koordinaten verwenden: haversine(-94.5930, 39.1230, -94.4839, 39.1561)
, gibt sie 10.103458011601726
.
Wenn ich diese Koordinaten durch Online-GPS-Koordinaten-Entfernungsrechner ausführen, produzieren sie alle eine Antwort rund 12 Kilometer.
Ich kann keine Unterschiede zwischen diesem Code und der Haversine Formel here gefunden nicht gefunden, so dass ich nicht weiß, warum es