경도와 위도를 고려하여 지구상의 두 지점 사이의 거리를 구하세요. 먼저 문제에 대한 해결책을 이해한 다음 PHP 코드를 사용하여 계산을 구현해야 합니다.
이 문제는 半正矢(haversine)公式
로 해결할 수 있습니다.
대권 거리 또는 직교 거리는 구(또는 지구 표면)의 두 점 사이의 최단 거리입니다. 이 방법을 사용하려면 A점과 B점의 좌표가 필요합니다. 대권 방법은 다른 방법보다 우수합니다.
먼저 위도와 경도 값을 십진수에서 라디안으로 변환합니다. 따라서 경도와 위도 값을 모두 180/pi로 나눕니다. pi 값은 22/7입니다. 180/pi 값은 약 57.29577951입니다. 두 장소 사이의 거리를 마일 단위로 계산하려면 지구의 반경인 3,963을 사용합니다. 두 장소 사이의 거리를 킬로미터 단위로 계산하려면 지구의 반경인 6,378.8을 사용합니다.
求纬度值(以弧度为单位): 纬度值,单位为弧度,lat =纬度/ (180/pi) 或 纬度值,以弧度为单位,lat =纬度/ 57.29577951 求经度的弧度值: 经度值,单位为弧度,long =经度/ (180/pi) 或 经度值,单位为弧度,long =经度/ 57.29577951
A 지점의 위도와 경도 좌표를 구하세요. 위의 변환 방법을 사용하여 위도와 경도 값을 라디안으로 변환합니다. 나는 그것을 lat1과 long1이라고 부릅니다. lat2와 long2를 얻으려면 점 B의 좌표에 대해 동일한 프로세스를 수행하십시오.
이제 A 지점과 B 지점 사이의 거리를 구하려면 다음 공식을 사용하세요.
距离,d = 3963.0 * arccos[(sin(lat1) * sin(lat2)) + cos(lat1) * cos(lat2) * cos(long2 - long1)]
결과 거리 d는 마일 단위입니다. 값을 킬로미터 단위로 지정하려면 d에 1.609344를 곱하세요.
d(千米)= 1.609344 * d(英里)
그래서 대권 거리 방법을 사용하면 지구상의 두 장소 사이의 최단 거리를 구할 수 있습니다.
지구상의 두 지점 사이의 거리를 계산하는 PHP의 구현 코드는 다음과 같습니다.
<?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');
출력:
2.0043678382716137 K.M
이 글은 지구상의 두 지점 사이의 거리를 계산하는 방법을 소개합니다. PHP가 필요한 사람들에게 도움이 되기를 바랍니다.
위 내용은 PHP는 지구상의 두 지점 사이의 거리를 계산합니다(자세한 예).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!