본문 바로가기
MySql

MySQL Calculate distance given 2 points, latitude and longitude

by 베이스 공부 2020. 9. 25.
반응형

가능한 중복 :


나는이 질문이 아마도 여러 번 질문을 받았을 것이라는 것을 알고 있으며, 나는 많은 연구를했고 특정한 일에 대한 도움이 필요합니다.

양식이 있고 사용자가 경도와 위도를 입력하고 경도와 위도가 포함 된 테이블이있는 데이터베이스가 있다고 가정 해 보겠습니다. 해당 테이블에서 반경 15 마일 이내에있는 지점을 어떻게 검색합니까?

 

해결 방법

 

두 점 사이의 거리를 계산하는 공식을 사용할 수 있습니다. 예를 들면 :

function get_distance($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'Mi') { 
    $theta = $longitude1 - $longitude2; 
    $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + 
                (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * 
                cos(deg2rad($theta))); 
    $distance = acos($distance); 
    $distance = rad2deg($distance); 
    $distance = $distance * 60 * 1.1515; 
    switch($unit) { 
        case 'Mi': 
            break; 
        case 'Km' : 
            $distance = $distance * 1.609344; 
    } 
    return (round($distance,2)); 
}

다음과 같이 할 수도 있습니다.

$query = "SELECT *,(((acos(sin((".$latitude."*pi()/180)) * 
            sin((`Latitude`*pi()/180))+cos((".$latitude."*pi()/180)) * 
            cos((`Latitude`*pi()/180)) * cos(((".$longitude."- `Longitude`)* 
            pi()/180))))*180/pi())*60*1.1515
        ) as distance 
        FROM `MyTable` 
        HAVING distance >= ".$distance.";

 

참조 페이지 https://stackoverflow.com/questions/8599200

 

 

반응형

댓글