Расстояние между двумя координатами в 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, как эта.