MariaDB 위경도 데이터 거리 계산하기

728x90

안녕하세요!
오늘은 MariaDB에서 위경도 데이터를 이용하여 거리를 계산하는 구문을 작성해보려고 합니다.

먼저 위경도 계산을 위한 데이터를 준비합니다.
저는 용인시의 프랜차이즈 정보를 기준으로 계산을 해보겠습니다.

 

1. 데이터 준비

데이터가 필요하신 분들을 위해 데이터 sql을 업로드해두도록 하겠습니다.

franchise_store_mysql.sql
5.76MB

franchise_store 파일의 sql을 실행하면 아래와 같이 데이터가 생성된 것을 확인할 수 있습니다.

총데이터는 35,196행이고 위도( Latitude )의 lat , 경도( Longitude )는 lng 컬럼인 것을 확인할 수 있습니다.

 

위경도 데이터 준비는 끝이 났습니다.

 

2. 기준 위경도 찾기


다음으로는 거리 계산의 기준이 될 위치(현재 위치 등)의 위경도를 알아야합니다.

용인시 프랜차이즈 정보를 가지고 있으니 용인시청을 기준으로 거리를 계산해 보겠습니다!

용인시청의 위경도를 확인하는 방법은 구글에 위경도 계산을 검색하고 나오는 사이트들 중에서 확인하면 됩니다.

저는 http://map.esran.com/ 사이트에서 아래와 같이 위경도를 확인했습니다.

 

 

 

3. sql 작성

 

아래 sql문을 복사하여 사용하면 됩니다.

기준 위도 = 37.24121699
기준 경도 = 127.17775325


기준이 되는 위경도인 용인시청의 위경도를 넣어줍니다.

SELECT
   NAME, ROUND( (
       6371 * acos ( cos ( RADIANS(기준 위도) )
          * cos( radians( lat ) )
          * cos( radians( lng) - RADIANS(기준 경도) )
          + sin ( RADIANS(기준 위도) ) * sin( radians( lat ) )
       )
   ), 2 )AS `DISTANCE(km)`
	FROM franchise_store
	ORDER BY `DISTANCE(km)` asc;

 

4. 거리 확인

| 위경도 데이터가 없는 경우 13,205km가 나옵니다.
  위경도를 0, 0으로 인식해서 서아프리카 바다를 기준으로 계산된 것입니다.

 

 

무작위로 하나의 거리를 선택하여 확인해 보겠습니다.
용인 시청에서 한택식물원 내 간이매점까지 거리는 26.06km입니다.

구글 맵에서 직선거리를 확인해 보니 정확하게 일치하는 것을 볼 수 있습니다.

이상으로 오늘은 위경도 데이터를 활용하여 거리를 계산해 보았습니다.

감사합니다!!

728x90
반응형