Maison >développement back-end >tutoriel php >PHP calcule la distance entre deux points sur la terre (exemple détaillé)
É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.
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).' '.'miles');
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!