본문 바로가기
MySql

MySQL의 경도 및 위도 내 쿼리

by 베이스 공부 2020. 10. 23.
반응형

특정 코드 예제를 요청하기 전에 다음과 같은 의사 코드를 쿼리 할 수 ​​있는지 묻고 싶었습니다.

위도 / 경도 =-특정 위도 / 경도 지점의 x 마일 이내-

그게 가능합니까? 아니면 몇 가지 농구를 뛰어 넘어야합니까? 권장 할 수있는 모든 좋은 접근 방식이 좋습니다!

 

해결 방법

 

Haversine 공식을 검색해야하지만 좋은 시작은 다음과 같습니다.



첫 번째 URL에서 인용 :

다음은 37, -122 좌표에서 25 마일 반경 내에서 가장 가까운 20 개 위치를 찾는 SQL 문입니다. 해당 행의 위도 / 경도와 대상 위도 / 경도를 기반으로 거리를 계산 한 다음 거리 값이 25 미만인 행만 요청하고 전체 쿼리를 거리별로 정렬하고 결과를 20 개로 제한합니다. 마일 대신 킬로미터로 검색하려면 3959를 6371로 바꿉니다.

SELECT
    id,
    ( 3959
      * acos( cos( radians(37) )
              * cos(  radians( lat )   )
              * cos(  radians( lng ) - radians(-122) )
            + sin( radians(37) )
              * sin( radians( lat ) )
            )
    )
    AS distance
FROM markers
HAVING distance < 25
ORDER BY distance
LIMIT 0 , 20;

 

참조 페이지 https://stackoverflow.com/questions/4687312

 

 

반응형

댓글