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

Я посмотрел вокруг и увидел упоминание формулы haversine для определения расстояния между двумя координатами (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 по формуле выше.

Спасибо!

1 ответ

Решение

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

В каких бы единицах вы не поставляли радиус Земли.

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

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

Другие вопросы по тегам