개발 꿀팁/PHP

php 두 지점 좌표 거리 계산

Jammie 2022. 8. 23. 16:30
반응형

기능: 둘레율과 지구반경계수와 두 점 좌표의 경위도에 따라 두 점 사이의 구면거리를 계산한다.


두 점 좌표 거리 가져오기:

<?php
/**
 * 두 점의 지리 좌표 사이의 거리를 계산하다
 * @param  Decimal $longitude1 시작점 경도
 * @param  Decimal $latitude1  시작 위도
 * @param  Decimal $longitude2 종점 경도
 * @param  Decimal $latitude2  종점 위도
 * @param  Int     $unit       단위 1:m 2:km
 * @param  Int     $decimal    정확도 소수 자리 유지
 * @return Decimal
 */
function getDistance($longitude1, $latitude1, $longitude2, $latitude2, $unit=2, $decimal=2){

    $EARTH_RADIUS = 6370.996; // 지구반경계수
    $PI = 3.1415926;

    $radLat1 = $latitude1 * $PI / 180.0;
    $radLat2 = $latitude2 * $PI / 180.0;

    $radLng1 = $longitude1 * $PI / 180.0;
    $radLng2 = $longitude2 * $PI /180.0;

    $a = $radLat1 - $radLat2;
    $b = $radLng1 - $radLng2;

    $distance = 2 * asin(sqrt(pow(sin($a/2),2) + cos($radLat1) * cos($radLat2) * pow(sin($b/2),2)));
    $distance = $distance * $EARTH_RADIUS * 1000;

    if($unit==2){
        $distance = $distance / 1000;
    }

    return round($distance, $decimal);

}

// 시작점 좌표
$longitude1 = 113.330405;
$latitude1 = 23.147255;

// 종점 좌표
$longitude2 = 113.314271;
$latitude2 = 23.1323;

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 1);
echo $distance.'m'; // 2342.38m

$distance = getDistance($longitude1, $latitude1, $longitude2, $latitude2, 2);
echo $distance.'km'; // 2.34km

?>

 

반응형