Некоторые из этих ответов «округляют» радиус земли. Если вы проверите их с другими калькуляторами расстояния (например, география ), эти функции будут отключены.
Вы можете отключить R=3959.87433
для константы преобразования ниже, если вы хотите ответьте в милях.
Если вам нужны километры, используйте R= 6372.8
.
lon1 = -103.548851
lat1 = 32.0004311
lon2 = -103.6041946
lat2 = 33.374939
def haversine(lat1, lon1, lat2, lon2):
R = 3959.87433 # this is in miles. For Earth radius in kilometers use 6372.8 km
dLat = radians(lat2 - lat1)
dLon = radians(lon2 - lon1)
lat1 = radians(lat1)
lat2 = radians(lat2)
a = sin(dLat/2)**2 + cos(lat1)*cos(lat2)*sin(dLon/2)**2
c = 2*asin(sqrt(a))
return R * c
print(haversine(lat1, lon1, lat2, lon2))