자바강사 낙자쌤

MySQL에서 위도,경도 활용하여 거리 계산하기 본문

Database

MySQL에서 위도,경도 활용하여 거리 계산하기

낙자쌤™ 2022. 4. 24. 20:29
728x90
반응형

지도상에 한 지점을 표시하기 위해 위도와 경도가 사용됩니다.

우리는 이 정보를 통해 지점 사이의 거리를 구할 수 있습니다.

일반적으로 내 위치를 기반으로 반경 몇키로 이내의 시설물의 정보를 지도상에 표시하게 됩니다. 

 

MySQL에 다음과 같이 지하철의 정보를 저장하고 있는 테이블이 있습니다. 

 

테이블명 : tb_subway

station latitude  longitude
영등포역 37.5157702 126.9052383
신도림역 37.5088141 126.8890174
대림역 37.4925085 126.8927728
신촌역 37.5551399 126.9347011
여의도역 37.5215737 126.9221228

 

거리를 구하기 위한 쿼리문은 다음과 같습니다.

: 나의 위도, 경도를 기반으로 2Km 이내의 지하철역 select 하기

  SELECT
    station , (
       6371 * acos ( cos ( radians(나의경도) )
          * cos( radians( latitude ) )
          * cos( radians( longitude) - radians(나의위도) )
          + sin ( radians(나의경도) ) * sin( radians( latitude ) )
       )
   ) AS distance
FROM tb_subway
HAVING distance < 2
ORDER BY distance
LIMIT 0 , 20;

 

반경을 변경하고 싶다면 HAVING 절의 distance < 2 이 부분을 수정하면 됩니다.

 

지도상에서 두 지점사이의 거리를 구하는 하버사인 공식이라는것이 있는데, 이를 MySQL 쿼리문으로 변경하여 구현한 것입니다. 

만약 궁금하다면 다음 링크로 들어가 보시기 바랍니다. 

http://www.movable-type.co.uk/scripts/latlong.html?from=48.619,-120.412&to=48.59617,-120.4020

 

728x90
반응형