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!