한 좌표가 다른 좌표의 반경인지 확인하십시오
-
19-09-2019 - |
문제
좌표가 포함 된 행 테이블이 있다고 가정 해 봅시다.
다른 좌표의 반경에있는 좌표 행만 끌어 당기는 가장 좋은 방법은 무엇입니까?
내 질문을 단순화하기 위해 다음 예를 제시하고 있습니다.
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는 예제 행의 점입니다.
그래서 당신은 그런 일을 할 수 있습니다.
- 테이블에서 각 행을 선택하고 얻습니다
lon
그리고lat
. - 쿼리를 적용하십시오 이것, 바꾸다
$lon
그리고$lat
데이터 양식 지점 1.
나는 이것을 액세스하는 방법을 모른다. 그러나 이런 식으로는 속도가 느립니다.
반경에서 무엇을 의미합니까? 5 마일 떨어진 거리에서 지나가고 행 X에서 5 마일 이내에 모든 행을 찾으시겠습니까?
그렇다면 이것을 확인하십시오 http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx
제휴하지 않습니다 StackOverflow