Расстояние между двумя координатами в php с использованием гаверсинуса

Я огляделся и увидел упоминание о формуле гаверсинуса для определения расстояния между двумя координатами (lat1, lng1) и (lat2, lng2).

Я реализовал этот код:

    function haversineGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
  // convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $latDelta = $latTo - $latFrom;
  $lonDelta = $lonTo - $lonFrom;

  $angle = 2 * asin(sqrt(pow(sin($latDelta / 2), 2) +
    cos($latFrom) * cos($latTo) * pow(sin($lonDelta / 2), 2)));
  return $angle * $earthRadius;
}

И пытаюсь определить:

1) какие единицы это возвращает? (цель в футах)

2) правильно ли написано это уравнение?

Например, каким должно быть расстояние между этими двумя точками?

(32.8940695525, -96.7926336453) и (33.0642604502, -96.8064332754)?

Я получаю 18968.0903312 по приведенной выше формуле.

Спасибо!


person NCoder    schedule 28.02.2013    source источник


Ответы (1)


1) какие единицы это возвращается? (цель в футах)

В каких бы единицах вы не указывали радиус Земли.

2) правильно ли написано это уравнение?

Попробуй это. Вы можете сравнить свои результаты с существующей реализацией формулы Хаверсина, например этой .

person Matt Ball    schedule 28.02.2013
comment
Итак, поскольку я устанавливаю радиус Земли как $ earthRadius = 6371000, будут ли единицы измерения быть в метрах? - person NCoder; 28.02.2013