MYSQL 거리순 또는 지정된 거리 내의 장소 불러오기 > IT 기술백서

지구 평균 둘레 = 6371000

6371000 * PI / 180 =111194.9266

※ 적도와 극지방의 둘레가 다르기 때문에 정밀한 거리용으로는 적합하지 않다.

 

ST_Distance() 의 결과값을 111194.9266 으로 곱하면 meter 가 나온다.

 

 

예제 1) 현재위치로부터 100미터 이내의 장소(places 테이블) 데이터만 불러오기

※ 4326 은 좌표계 종류중의 하나이다.

[code]

SELECT * FROM places WHERE

ST_Distance(GeomFromText( ‘POINT(경도값 위도값)’, 4326 ), GeomFromText( CONCAT(‘POINT(‘, lng, ‘ ‘, lat, ‘)’), 4326 )) * 111195 < 100

[/code]

 

예제 2) 가까운 순서대로 10개 불러오기

[code]

SELECT * FROM places WHERE

ST_Distance(GeomFromText( ‘POINT(경도값 위도값)’, 4326 ), GeomFromText( CONCAT(‘POINT(‘, lng, ‘ ‘, lat, ‘)’), 4326 )) * 111195 < 100 

order by ST_Distance(GeomFromText( ‘POINT(경도값 위도값)’, 4326 ), GeomFromText( CONCAT(‘POINT(‘, lng, ‘ ‘, lat, ‘)’), 4326 )) asc limit 10

[/code]

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤