Maison >développement back-end >tutoriel php >PHP calcule la distance entre deux points sur la terre (exemple détaillé)

PHP calcule la distance entre deux points sur la terre (exemple détaillé)

藏色散人
藏色散人original
2019-04-03 13:12:575150parcourir

Étant donné la longitude et la latitude, trouvez la distance entre deux points sur la Terre. Nous devons d’abord comprendre la solution au problème, puis utiliser le code PHP pour implémenter le calcul.

PHP calcule la distance entre deux points sur la terre (exemple détaillé)

Ce problème peut être résolu avec 半正矢(haversine)公式 :

La distance orthodromique ou distance orthogonale est la distance la plus courte entre deux points de la sphère (ou la surface de la terre) distance. Pour utiliser cette méthode, nous avons besoin des coordonnées du point A et du point B. La méthode du grand cercle est supérieure aux autres méthodes.

Tout d'abord, convertissez les valeurs de latitude et de longitude de degrés décimaux en radians. Par conséquent, divisez les valeurs de longitude et de latitude par 180/pi. La valeur de pi est 22/7. La valeur de 180/pi est d'environ 57,29577951. Si nous voulons calculer la distance (en miles) entre deux endroits, nous utilisons 3 963, qui est le rayon de la Terre. Si nous voulons calculer la distance entre deux lieux en kilomètres, nous utilisons 6 378,8, qui est le rayon de la Terre.

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

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

Retrouvez les coordonnées de latitude et de longitude du point A. Convertissez les valeurs de latitude et de longitude en radians en utilisant la méthode de conversion ci-dessus. Je l'appelle lat1 et long1. Faites le même processus pour que les coordonnées du point B obtiennent lat2 et long2.

Maintenant, pour obtenir la distance entre le point A et le point B, utilisez la formule suivante :

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

La distance résultante d est en miles. Si vous souhaitez que vos valeurs soient en kilomètres, multipliez d par 1,609344.

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

Par conséquent, vous pouvez utiliser la méthode de la distance orthodromique pour obtenir la distance la plus courte entre deux endroits sur la terre.

Le code d'implémentation de PHP pour calculer la distance entre deux points sur la terre est le suivant :

<?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;);

Sortie :

2.0043678382716137 K.M

Cet article est une introduction à la méthode de calcul de la distance entre deux points sur la terre en PHP. J'espère qu'il sera utile aux amis dans le besoin !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn