>백엔드 개발 >PHP 튜토리얼 >PHP는 지구상의 두 지점 사이의 거리를 계산합니다(자세한 예).

PHP는 지구상의 두 지점 사이의 거리를 계산합니다(자세한 예).

藏色散人
藏色散人원래의
2019-04-03 13:12:575149검색

경도와 위도를 고려하여 지구상의 두 지점 사이의 거리를 구하세요. 먼저 문제에 대한 해결책을 이해한 다음 PHP 코드를 사용하여 계산을 구현해야 합니다.

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).&#39; &#39;.&#39;miles&#39;);

출력:

2.0043678382716137 K.M

이 글은 지구상의 두 지점 사이의 거리를 계산하는 방법을 소개합니다. PHP가 필요한 사람들에게 도움이 되기를 바랍니다.

위 내용은 PHP는 지구상의 두 지점 사이의 거리를 계산합니다(자세한 예).의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.