본문 바로가기
Develops/SQL

[MySQL] 위도, 경도로 거리를 계산하기(하버사인 공식, SIN, COS, ACOS, RADIANS)

by SLOTH91 2024. 7. 21.
반응형

쿼리 설명

  • 하버사인 공식(Haversine formula)을 이용한 방법
    지구를 구와 비슷한 모양으로 가정하고, 지구의 반지름을 이용하여 두 지점 사이의 거리를 계산하는 공식
  • Latitude(lat) : 위도  36~38
  • Longitude(lng) : 경도 126~128
  • 거리 작성 시 1 = 1km / 0.1 = 100m

`

쿼리 예시

  • slLat, slLng : 첫번째 지점의 위도/경도 좌표가 되는 값
  • lat좌표값, lng좌표값 : 첫번째 지점으로부터 거리를 비교할 지점의 위도/경도 좌표가 되는 값
SELECT
       가져올컬럼
     , (6371 * 
        ACOS(COS(RADIANS(lat좌표값)) * COS(RADIANS(slLat)) * COS(RADIANS(slLng) - RADIANS(lng좌표값))
           + SIN(RADIANS(lat좌표값)) * SIN(RADIANS(slLat)))
       ) AS DISTANCE
  FROM 대상테이블
HAVING DISTANCE <= 거리
 ORDER BY DISTANCE
 LIMIT 0,1000
반응형