Привет всем! Вчера столкнулся с проблемой определения расстояния между двумя точками на карте по координатам 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)