Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann ich den Abstand zwischen zwei Koordinaten in PHP genau berechnen?

Wie kann ich den Abstand zwischen zwei Koordinaten in PHP genau berechnen?

Linda Hamilton
Linda HamiltonOriginal
2024-12-03 14:48:10671Durchsuche

How Can I Accurately Calculate the Distance Between Two Coordinates in PHP?

Den Abstand zwischen zwei Koordinaten in PHP präzise messen

Das Berechnen des Abstands zwischen zwei Punkten auf der Erdoberfläche erfordert Präzision, insbesondere wenn es sich um astronomische Daten handelt Entfernungen spielen eine Rolle. Die Haversine-Formel ist eine beliebte Methode für solche Berechnungen, aber ihre Implementierung im bereitgestellten Code scheint ungenaue Ergebnisse zu liefern.

Überlegungen zur Haversine-Formel

Die Haversine-Formel verwendet sphärische Trigonometrie zur Schätzung des Abstands zwischen zwei geografischen Koordinaten. Während es für kurze Entfernungen genaue Näherungen liefert, wird es für extreme Entfernungen (z. B. in der Nähe der Antipoden) weniger zuverlässig.

Alternative Berechnungsformel: Vincenty

Zur Überwindung des Trotz der Einschränkungen der Haversine-Formel, insbesondere bei Entfernungsberechnungen im großen Maßstab, bietet die Vincenty-Formel eine verbesserte Genauigkeit. Es verwendet iterative Methoden, um den geodätischen Abstand entlang des Ellipsoids zu berechnen, der sich der Erdoberfläche annähert.

Implementierung

Unten finden Sie eine Implementierung der Vincenty-Formel in PHP:

function vincentyGreatCircleDistance($latFrom, $lonFrom, $latTo, $lonTo, $earthRadius = 6371000) {
    // Convert to radians
    $latFrom = deg2rad($latFrom);
    $lonFrom = deg2rad($lonFrom);
    $latTo = deg2rad($latTo);
    $lonTo = deg2rad($lonTo);

    $lonDelta = $lonTo - $lonFrom;
    $a = pow(cos($latTo) * sin($lonDelta), 2) +
        pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
    $b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);

    $angle = atan2(sqrt($a), $b);
    return $angle * $earthRadius;
}

Diese Implementierung gibt die Entfernung in Metern aus, konsistent mit der Eingabe $earthRadius. Für Meilen können Sie 3959 Meilen als Parameter $earthRadius übergeben. Die Verwendung der Vincenty-Formel gewährleistet zuverlässige Entfernungsberechnungen, auch für extreme Entfernungen.

Das obige ist der detaillierte Inhalt vonWie kann ich den Abstand zwischen zwei Koordinaten in PHP genau berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn