[mysql] 위도, 경도 활용한 좌표간의 거리 구하는법, lng, lat 가지고 좌표 근방 위치 구하기.
지구 반지름 6371
코사인 라디안스 에이코사인 사인 등 활용해서 값 계산. ㅇㅇ
설명에 적어놓은데로 빨간색 위치만 바꾸면 된다.
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
관대한 쿼리…
안의 값만 바꾸면 됨.
가져올 컬럼은 뒤에 , 를 붙일것;
id, column, test, 등 뒤에 가져오는게 계산식으로 해서 AS distance 로 되어있으니까..ㅇㅇ
거리 작성시 1 = 1km 다. 1500m 는 어떻게 쓰냐? 1.5 쓰면 됨. ㅇㅇ
하
그럼
저 뽑아진 결과값에 distance 값이 나오는데
저게 바로 해당 좌표와 대상 필드의 거리임. ㅇㅇ
놀랍지않은가
난 php 에 mysql (heroku cleanDB 활용) 해서 작업했고
속도는 별반 느리지않다.
다음엔 nosql 인 mongodb 활용해서 좌표 index 가지고 해봐야지
ㅇㅇ
SELECT *,
(6371*acos(cos(radians(37.5766831))*cos(radians(LATITUDE))*cos(radians(LONGITUDE)
-radians(126.8978620))+sin(radians(37.5766831))*sin(radians(LATITUDE))))
AS distance
FROM SHOP
HAVING distance <= 2
ORDER BY distance
LIMIT 0,100
난 이렇게 사용
검색어 : 위경도 좌표 , mysql
http://구글 위경도 좌표 테이블에서 거리를 계산하는 MySql쿼리=> MSSql 변환 문의
[Java] 경위도 좌표 거리계산 (두 지점간의 거리)
http://fruitdev.tistory.com/189
'차근차근 > SQL' 카테고리의 다른 글
mysql 로그인시 비밀번호 비교 , top 말고 limit사용 (0) | 2016.11.17 |
---|---|
mysql , 위경도 저장시 칼럼형식 (0) | 2016.10.24 |
mssql like , 시간 (0) | 2016.08.11 |
column does not allow nulls. (0) | 2016.05.13 |
mssql , CONVERT함수 ,SET IDENTITY_INSERT (0) | 2015.05.29 |