RosettaCodeData/Task/Haversine-formula/Python/haversine-formula.py

20 lines
430 B
Python
Raw Permalink Normal View History

2015-02-20 00:35:01 -05:00
from math import radians, sin, cos, sqrt, asin
2014-04-02 16:56:35 +00:00
2019-09-12 10:33:56 -07:00
def haversine(lat1, lon1, lat2, lon2):
R = 6372.8 # Earth radius in kilometers
2014-04-02 16:56:35 +00:00
2019-09-12 10:33:56 -07:00
dLat = radians(lat2 - lat1)
dLon = radians(lon2 - lon1)
lat1 = radians(lat1)
lat2 = radians(lat2)
2014-04-02 16:56:35 +00:00
2019-09-12 10:33:56 -07:00
a = sin(dLat / 2)**2 + cos(lat1) * cos(lat2) * sin(dLon / 2)**2
c = 2 * asin(sqrt(a))
2014-04-02 16:56:35 +00:00
2019-09-12 10:33:56 -07:00
return R * c
2013-04-10 21:29:02 -07:00
>>> haversine(36.12, -86.67, 33.94, -118.40)
2887.2599506071106
>>>