расстояния между двумя точками на карте

Определение расстояния между двумя точками на карте по координатам GPS

Привет всем! Вчера столкнулся с проблемой определения расстояния между двумя точками на карте по координатам GPS. Т.е. есть у нас начальные координаты точки, есть координаты точки, к которой нам нужно определить расстояние — но как это сделать?

На помощь приходит формула Хаверсина (я не ручаюсь на точность названия — в различных источниках эта формула называется самыми различными образами). Собственно, вникать в теорию не буду — ниже приведу рабочий код на Python, быть может — он вам пригодится. И да — я не претендую на оригинальность в коде — он культурно слямзен с какого-то форума (зачем изобретать велосипед, верно?).

from math import radians, cos, sin, asin, sqrt, atan2
lat1 = начальная широта
lon1 = начальная долгота
lat2 = финальная широта
lon2 = финальная долгота
 
lat1, lon1, lat2, lon2 = map(radians, [lat1, lon1, lat2, lon2])
print(lat1, lon1, lat2, lon2)
# 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 #Указываем, если нам нужно расстояние в километрах. Если же нужно считать в милях - укажите: 3956
print(c * r)