Расстояние между двумя точками на Земле

вычисление на Python
 

Иногда возникает необходимость вычислять расстояние между объектами, положения которых задано сферическими координатами. Такая задача имеет место при нахождении расстояний между точками на Земле. Если положение первой точки задано набором (широта1, долгота1), а второй (широта2, долгота2), то функция, вычисляющая угловое расстояние между этими точками на Python будет выглядеть следующим образом:

def distance_on_sphere(lat1, long1, lat2, long2):
    '''
    Вычисляет расстояние на единичной сфере между двумя точками, координаты
    которых заданы (lat1, long1) = [широта1, долгота1] и
    (lat2, long2) = [широта2, долгота2].
    '''
    
    import math  # Можно поместить в блок импортов основного файла
    d2r = math.pi / 180.0
    # phi = 90 - широта
    phi1 = (90.0 - lat1) * d2r
    phi2 = (90.0 - lat2) * d2r
         
    # theta = долгота
    theta1 = long1 * degrees_to_radians
    theta2 = long2 * degrees_to_radians
    carc = (math.sin(phi1) * math.sin(phi2) * math.cos(theta1 - theta2) +
           math.cos(phi1) * math.cos(phi2))
    return math.acos(carc)

Представленная функция вычиляет угловое расстояние между двумя точками на единичной сфере. Если нужно вычислить расстояние между двумя точками на Земле (в предположении, что форма Земли — это идеальная сфера) следует не забывать умножать возвращаемое функцией значение на радиус Земли (где-то 6371 км).

blog comments powered by Disqus