20 lines
430 B
Python
20 lines
430 B
Python
from math import radians, sin, cos, sqrt, asin
|
|
|
|
|
|
def haversine(lat1, lon1, lat2, lon2):
|
|
R = 6372.8 # Earth radius in kilometers
|
|
|
|
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
|
|
|
|
>>> haversine(36.12, -86.67, 33.94, -118.40)
|
|
2887.2599506071106
|
|
>>>
|