Формула Haversine (на русском — «формула хаверсин») позволяет вычислять расстояние между двумя точками на поверхности Земли с учётом её сферической формы.
latitude) и долгота (longitude) точек.Пусть есть две точки:
lat1, lon1)lat2, lon2)
R = 6371 км (радиус Земли)
Δlat = lat2 - lat1
Δlon = lon2 - lon1
a = sin²(Δlat/2) + cos(lat1) * cos(lat2) * sin²(Δlon/2)
c = 2 * arctan2(√a, √(1-a))
d = R * c
Здесь:
d — расстояние между точками по поверхности Земли в километрах.Формулы используют радианы для широты и долготы при вычислении тригонометрических функций.
import math
def haversine(lat1, lon1, lat2, lon2):
R = 6371 # Радиус Земли в километрах
# Переводим градусы в радианы
lat1, lon1, lat2, lon2 = map(math.radians, [lat1, lon1, lat2, lon2])
dlat = lat2 - lat1
dlon = lon2 - lon1
a = math.sin(dlat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2
c = 2 * math.atan2(math.sqrt(a), math.sqrt(1 - a))
distance = R * c
return distance
# Пример использования:
berlin = (52.52, 13.4)
paris = (48.85, 2.35)
dist = haversine(berlin[0], berlin[1], paris[0], paris[1])
print(f"Расстояние между Берлином и Парижем: {dist:.2f} км")
# Расстояние между Берлином и Парижем: 877.68 км