Необходимо рассчитать расстояние от двух точек

Необходимо рассчитать расстояние от двух точек координат широты и долготы.
Дополнительные параметры: codeFlowType: codeWrite codeFlowLang: PHP
Создано: 12.03.2025 13:25

Необходимо рассчитать расстояние от двух точек координат широты и долготы.

Вот пример кода на языке PHP, который вычисляет расстояние между двумя точками, заданными координатами широты и долготы, с использованием формулы гаверсинуса:

<?php
function calculateDistance($lat1, $lon1, $lat2, $lon2) {
    // Радиус Земли в километрах
    $earthRadius = 6371;

    // Преобразуем градусы в радианы
    $lat1Rad = deg2rad($lat1);
    $lon1Rad = deg2rad($lon1);
    $lat2Rad = deg2rad($lat2);
    $lon2Rad = deg2rad($lon2);

    // Разности координат
    $latDiff = $lat2Rad - $lat1Rad;
    $lonDiff = $lon2Rad - $lon1Rad;

    // Формула гаверсинуса
    $a = sin($latDiff / 2) * sin($latDiff / 2) +
         cos($lat1Rad) * cos($lat2Rad) *
         sin($lonDiff / 2) * sin($lonDiff / 2);
    $c = 2 * atan2(sqrt($a), sqrt(1 - $a));

    // Расстояние
    $distance = $earthRadius * $c;

    return $distance;
}

// Пример использования функции
$latitude1 = 52.5200;  // Широта первого места (например, Берлин)
$longitude1 = 13.4050; // Долгота первого места
$latitude2 = 48.8566;  // Широта второго места (например, Париж)
$longitude2 = 2.3522;  // Долгота второго места

$distance = calculateDistance($latitude1, $longitude1, $latitude2, $longitude2);
echo "Расстояние между точками: " . $distance . " км";
?>

Пояснение

  1. Функция calculateDistance: принимает координаты двух точек (широта и долгота) и вычисляет расстояние в километрах.
  2. Преобразование в радианы: для всех углов используются радианы, что необходимо для работы тригонометрических функций.
  3. Использование формулы гаверсинуса: эта формула требует вычислить разности координат и находит расстояние по кривизне Земли.

Пример использования

В данном коде приведен пример, где расстояние рассчитывается между Берлином и Парижем. Вы можете изменить координаты, чтобы рассчитать расстояние между другими точками.