Heim > Backend-Entwicklung > PHP-Tutorial > Wie berechnet man Entfernungen zwischen geografischen Koordinaten in PHP genau?

Wie berechnet man Entfernungen zwischen geografischen Koordinaten in PHP genau?

DDD
Freigeben: 2024-12-06 14:51:10
Original
970 Leute haben es durchsucht

How to Accurately Calculate Distances Between Geographical Coordinates in PHP?

Abstand zwischen Koordinaten in PHP messen

Einführung

Das Berechnen des Abstands zwischen geografischen Koordinaten ist eine grundlegende Aufgabe in verschiedenen Anwendungen. Ein gängiger Ansatz ist die Verwendung der Haversine-Formel. Insbesondere bei Antipodenpunkten kann es jedoch zu ungenauen Ergebnissen kommen. In diesem Artikel wird eine alternative Methode unter Verwendung der Vincenty-Formel untersucht, die zuverlässigere Ergebnisse für alle Entfernungen liefert.

Implementierung

Der bereitgestellte PHP-Code versucht, die Haversine-Formel für zu implementieren Entfernungen berechnen. Allerdings kann es bei großen Entfernungen zu Ungenauigkeiten aufgrund von Rundungsfehlern kommen. Stattdessen empfehlen wir die Verwendung der Vincenty-Formel, wie im folgenden Codeausschnitt dargestellt:

public static function vincentyGreatCircleDistance(
  $latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo, $earthRadius = 6371000)
{
  // Convert from degrees to radians
  $latFrom = deg2rad($latitudeFrom);
  $lonFrom = deg2rad($longitudeFrom);
  $latTo = deg2rad($latitudeTo);
  $lonTo = deg2rad($longitudeTo);

  $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;
}
Nach dem Login kopieren

Hinweis:

Standardmäßig wird die Entfernung in Metern berechnet ein Erdradius von 6371000 Metern. Um die Maßeinheit zu ändern, passen Sie den Wert von $earthRadius entsprechend an.

Fehlerbehandlung

Für antipodale Punkte (d. h. Punkte auf gegenüberliegenden Seiten der Erde) Die Vincenty-Formel liefert im Vergleich zur Haversine-Formel genauere Ergebnisse. Es ist jedoch wichtig zu beachten, dass bei beiden Formeln Rundungsfehler auftreten oder bei sehr kleinen Abständen ungenaue Ergebnisse entstehen können.

Das obige ist der detaillierte Inhalt vonWie berechnet man Entfernungen zwischen geografischen Koordinaten in PHP genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage