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

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

藏色散人
풀어 주다: 2023-04-05 18:58:02
원래의
5231명이 탐색했습니다.

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

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

이 문제는 半正矢(haversine)公式로 해결할 수 있습니다.

대권 거리 또는 직교 거리는 구(또는 지구 표면)의 두 점 사이의 최단 거리입니다. 이 방법을 사용하려면 A점과 B점의 좌표가 필요합니다. 대권 방법은 다른 방법보다 우수합니다.

먼저 위도와 경도 값을 십진수에서 라디안으로 변환합니다. 따라서 경도와 위도 값을 모두 180/pi로 나눕니다. pi 값은 22/7입니다. 180/pi 값은 약 57.29577951입니다. 두 장소 사이의 거리를 마일 단위로 계산하려면 지구의 반경인 3,963을 사용합니다. 두 장소 사이의 거리를 킬로미터 단위로 계산하려면 지구의 반경인 6,378.8을 사용합니다.

1

2

3

4

5

6

7

8

9

求纬度值(以弧度为单位):

纬度值,单位为弧度,lat =纬度/ (180/pi)

纬度值,以弧度为单位,lat =纬度/ 57.29577951

 

求经度的弧度值:

经度值,单位为弧度,long =经度/ (180/pi)

经度值,单位为弧度,long =经度/ 57.29577951

로그인 후 복사

A 지점의 위도와 경도 좌표를 구하세요. 위의 변환 방법을 사용하여 위도와 경도 값을 라디안으로 변환합니다. 나는 그것을 lat1과 long1이라고 부릅니다. lat2와 long2를 얻으려면 점 B의 좌표에 대해 동일한 프로세스를 수행하십시오.

이제 A 지점과 B 지점 사이의 거리를 구하려면 다음 공식을 사용하세요.

1

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

로그인 후 복사

결과 거리 d는 마일 단위입니다. 값을 킬로미터 단위로 지정하려면 d에 1.609344를 곱하세요.

1

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

로그인 후 복사

그래서 대권 거리 방법을 사용하면 지구상의 두 장소 사이의 최단 거리를 구할 수 있습니다.

지구상의 두 지점 사이의 거리를 계산하는 PHP의 구현 코드는 다음과 같습니다.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

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

로그인 후 복사

출력:

1

2.0043678382716137 K.M

로그인 후 복사

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

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

관련 라벨:
php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿