Heim  >  Artikel  >  Backend-Entwicklung  >  PHP berechnet den Abstand zwischen zwei Punkten auf der Erde (detailliertes Beispiel)

PHP berechnet den Abstand zwischen zwei Punkten auf der Erde (detailliertes Beispiel)

藏色散人
藏色散人Original
2019-04-03 13:12:575082Durchsuche

Ermitteln Sie anhand der Längen- und Breitengrade den Abstand zwischen zwei Punkten auf der Erde. Zuerst müssen wir die Lösung des Problems verstehen und dann PHP-Code verwenden, um die Berechnung umzusetzen.

PHP berechnet den Abstand zwischen zwei Punkten auf der Erde (detailliertes Beispiel)

Dieses Problem kann gelöst werden mit 半正矢(haversine)公式:

Der Großkreisabstand oder orthogonale Abstand ist der kürzeste Abstand zwischen zwei Punkten auf der Kugel (bzw der Erdoberfläche) Entfernung. Um diese Methode nutzen zu können, benötigen wir die Koordinaten von Punkt A und Punkt B. Die Großkreismethode ist anderen Methoden überlegen.

Konvertieren Sie zunächst die Breiten- und Längengrade von Dezimalgraden in Bogenmaß. Teilen Sie daher sowohl die Längen- als auch die Breitengrade durch 180/pi. Der Wert von Pi beträgt 22/7. Der Wert von 180/Pi beträgt ungefähr 57,29577951. Wenn wir die Entfernung zwischen zwei Orten in Meilen berechnen möchten, verwenden wir 3.963, den Erdradius. Wenn wir die Entfernung zwischen zwei Orten in Kilometern berechnen wollen, verwenden wir 6.378,8, was dem Erdradius entspricht.

求纬度值(以弧度为单位):
纬度值,单位为弧度,lat =纬度/ (180/pi)
或
纬度值,以弧度为单位,lat =纬度/ 57.29577951

求经度的弧度值:
经度值,单位为弧度,long =经度/ (180/pi)
或
经度值,单位为弧度,long =经度/ 57.29577951

Finden Sie die Breiten- und Längenkoordinaten von Punkt A. Konvertieren Sie Breiten- und Längengrade mit der oben genannten Konvertierungsmethode in Bogenmaß. Ich nenne es lat1 und long1. Führen Sie den gleichen Vorgang für die Koordinaten von Punkt B durch, um lat2 und long2 zu erhalten.

Um nun den Abstand zwischen Punkt A und Punkt B zu ermitteln, verwenden Sie die folgende Formel:

距离,d = 3963.0 * arccos[(sin(lat1) * sin(lat2)) + cos(lat1) * cos(lat2) * cos(long2 - long1)]

Der resultierende Abstand d wird in Meilen angegeben. Wenn Ihre Werte in Kilometern angegeben werden sollen, multiplizieren Sie d mit 1,609344.

d(千米)= 1.609344 * d(英里)

Daher können Sie die Großkreisentfernungsmethode verwenden, um die kürzeste Entfernung zwischen zwei Orten auf der Erde zu ermitteln.

Der Implementierungscode für PHP zur Berechnung des Abstands zwischen zwei Punkten auf der Erde lautet wie folgt:

<?php 
         
      function twopoints_on_earth($latitudeFrom, $longitudeFrom, 
                                    $latitudeTo,  $longitudeTo) 
      { 
           $long1 = deg2rad($longitudeFrom); 
           $long2 = deg2rad($longitudeTo); 
           $lat1 = deg2rad($latitudeFrom); 
           $lat2 = deg2rad($latitudeTo); 
              
           $dlong = $long2 - $long1; 
           $dlati = $lat2 - $lat1; 
              
           $val = pow(sin($dlati/2),2)+cos($lat1)*cos($lat2)*pow(sin($dlong/2),2); 
              
           $res = 2 * asin(sqrt($val)); 
              
           $radius = 3958.756; 
              
           return ($res*$radius); 
      } 
  
      //经纬度两点
      $latitudeFrom = 19.017656 ; 
      $longitudeFrom = 72.856178; 
      $latitudeTo = 40.7127; 
      $longitudeTo = -74.0059; 
         
      // 孟买和纽约之间的距离
      print_r(twopoints_on_earth( $latitudeFrom, $longitudeFrom,  
                    $latitudeTo,  $longitudeTo).&#39; &#39;.&#39;miles&#39;);

Ausgabe:

2.0043678382716137 K.M

Dieser Artikel ist eine Einführung in die Methode zur Berechnung des Abstands zwischen zwei Punkten auf der Erde in PHP. Ich hoffe, er wird Freunden in Not hilfreich sein!

Das obige ist der detaillierte Inhalt vonPHP berechnet den Abstand zwischen zwei Punkten auf der Erde (detailliertes Beispiel). 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