문제

좌표가 포함 된 행 테이블이 있다고 가정 해 봅시다.

다른 좌표의 반경에있는 좌표 행만 끌어 당기는 가장 좋은 방법은 무엇입니까?

내 질문을 단순화하기 위해 다음 예를 제시하고 있습니다.

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345

SQL 문에서 예를 들어 Row3의 반경에있는 좌표 행을 어떻게 얻습니까?

도움이 되었습니까?

해결책

이것 게시하다 SQL Server 에서이 작업을 수행하는 방법을 보여줍니다.

그리고 여기 MySQL에서 수행하는 방법은 다음과 같습니다.

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + 
         COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC

다른 팁

거리 공식은 다음과 같습니다.

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                       cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                 )  * 180 / pi)

여기서 y와 z-는 테스트하기 위해 whant want 각 행의 점이며 y와 z는 예제 행의 점입니다.

그래서 당신은 그런 일을 할 수 있습니다.

  1. 테이블에서 각 행을 선택하고 얻습니다 lon 그리고 lat.
  2. 쿼리를 적용하십시오 이것, 바꾸다 $lon 그리고 $lat 데이터 양식 지점 1.

나는 이것을 액세스하는 방법을 모른다. 그러나 이런 식으로는 속도가 느립니다.

반경에서 무엇을 의미합니까? 5 마일 떨어진 거리에서 지나가고 행 X에서 5 마일 이내에 모든 행을 찾으시겠습니까?

그렇다면 이것을 확인하십시오 http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top