2011-02-23 7 views
1

사용자가 활동을 만들고 다른 사용자가 검색 기능을 통해 찾을 수있는 웹 페이지를 개발 중입니다. 액티비티를 만들 때 위도와 경도를 검색하는 Google지도가 지원하는 정확한 위치를 지정해야합니다. 이제 검색을 수행 할 때 모든 활동을 특정 위치 (Google지도가 도움이 됨)에 가깝게 찾을 수있는 기능을 원합니다.좌표 기반 검색

좌표가있는 일련의 활동이 있으며, 내가 근처에서 활동을 찾고 싶은 지점의 좌표가 있습니다. 5km (또는 마일 또는 원하는 것이 무엇이든간에) 이상의 활동을 반환하고 싶습니다.)이 시점에서 멀리.

나는이 아이디어를 최대/최소 위도와 경도를 계산하여 해결할 수 있으며이를 필터링에 where 절을 사용하는 sql-query에서 매개 변수로 사용한다고 생각합니다. 문제는 여기서 직면하는 것은 첫번째로이 최대/최소값을 계산하고 두 번째로 원형 영역 (반지름 5km)과 직사각형을 계산하는 것입니다.

여기에 입력을 부탁드립니다. 고마워요! :)

답변

2

좌표는 아마도 x와 y가 아닌 위도와 경도입니다. 모든 포인트가 다소 작은 반경 내에 있지 않는 한 spherical distance이 필요합니다. 수백 마일.

많은 점이있는 경우 직접 철저한 검색은 너무 느리고 구형이되거나 그렇지 않습니다. 다행히 GIS 확장자는 for MySQLfor Postgres입니다. 상업용 DB도 공간 확장이 가능합니다. 이렇게하면 근처의 물체를 효율적으로 검색 할 수 있습니다.

1
  • 경계 위도와 경도를 계산하십시오.
  • 선택 위도가 대한 두 값 사이에 모든 것을, 유사. 공간 인덱스를 사용하지 않는 경우, 구면의 가장자리 케이스 (가장 우수한 말장난)를주의하십시오 : 0, 90 또는 180도를 넘어서면 기준이 불가능할 수 있습니다.
  • SQL 서버 또는 앱에서 결과에 대해 Haversine 수식을 실행합니다. 표 스캔을 방지하기 위해 직사각형 경계 값을 가져야하지만 사각형 결과는 원 밖의 결과를 포함하게됩니다.

실제로 생각해 보지 않으면 직사각형과 원이 모두 엉성한 것입니다.하지만 어쨌든 실제로는 관련이 없습니다. 또한

, 거리 측정에 확장하여 다른 아이디어를 언급 할이 체크 아웃이 당신을 도울 수 http://www.movable-type.co.uk/scripts/gis-faq-5.1.html