2014-09-11 3 views
0

저는 지리적 (위도/경도) 점의 데이터베이스 (MySQL)를 가지고 있으며 하나의 사각형 (각 꼭지점마다 2 개의 좌표가 있음)에서 점 목록을 쿼리해야합니다. 이 문제를 빨리 해결할 수있는 쿼리 나 알고리즘이 있습니까?사각형 내부의 점 목록을 반환하십시오.

감사합니다.

+0

각 정점에 대해 4 개의 좌표가 있습니까? 물론 각 정점에는 2 개만 있습니다. Lattitude/Longtitude –

+0

Ops, 죄송합니다. 각 정점 (위도와 경도)에 대해 2 좌표를 사용합니다. –

답변

1

당신의 위도/경도 점 색인된다고 가정하고 모든 SQL 쿼리는 꽤 빨리 될 것

SELECT point.lat, point.long FROM point where rect1.lat <= point.lat and point.lat <= rect2.lat and rect1.long <= point.long and point.long <= rect2.long 

rect1.lat/rect1.long 및 rect2.lat/rect2.long는 위도/경도의입니다 북쪽 서쪽 가장과 남쪽 동부 쪽 가장 위치.

귀하의 포인트와 직사각형 모두에 대해 위도/경도를 E/WN/S가 아닌 양수 및 음수로 저장하고 싶습니다. E/W 및 N/S가있는 경우 쿼리가 훨씬 더 복잡합니다.

또한이 사각형은 전체 가장자리가 위도/경도 선을 따라 추적하는 것으로 가정합니다.

솔직히 말해서 이것은 매우 간단합니다. 나는 뭔가를 놓치고 있다고 생각합니다 ....

+0

이것은 좋은 대답입니다. 쿼리 속도를 높이기 위해 일부 Geolocation 프레임 워크 또는 특수 알고리즘이 있다고 생각하여이 질문을 게시했습니다. –

+0

하지만 지리적 위치 (실제로는 아님)를 요구하지 않고 숫자가 b와 c 사이에 맞는지 묻는 것이 좋습니다. 올바른 색인이있는 경우 SQL을 사용하는 것이 좋습니다. 지리적 지점 (마을, 산악 호수 등)에 대해 질문을하고 알지 못하는 사이에 특정 관계가 (위도/경도를 미리 알지 못하고 있는지) 확인하고 싶다면 지리적 프레임 워크 유형 문제에 더 가까워 야합니다. –

+0

예, 아마도 문제를 과대 평가했습니다. 감사합니다! –

관련 문제