답변:
아마도 공간 인덱싱에 대한 답을 얻은 후 아마도 공간 인덱싱을 즉시 제공 하는 데이터베이스를 선택하여 가능성이 높지만 필요할 경우 응용 프로그램 자체에서 구현 할 수 있다고 언급하면 몇 가지 포인트를 얻을 수 있습니다 (예 : R 구현). -Tree (다른 이유로 DB 선택이 수정 된 경우 편리합니까? 공간 데이터베이스의 작동 방식을 보여줍니다). 공간 색인을 사용하면 검색 창에 맞는 위치의 하위 집합을 신속하게 얻을 수 있습니다. 실제 검색을 수행하기 위해 실제 거리 (필요한 경우 사각형만으로도 충분할 수 있음)를 계산하여이를 세부적으로 조정할 수 있습니다. 원 / 타원
거리가 20M 이하일 가능성이 높다면 20M 끝쪽에 눈에 띄는 오류가 표시되기 시작하지만 거리를 계산하기 위해 평평한 지구를 가정하면 괜찮을 것입니다. 더 큰 범위가 정확하게 필요하면 더 나은 거리 모델을 살펴볼 필요가 있습니다. 지구를 위해 예. Haversine distance
물론 UI 디자인, DB 스키마, 그 자체로 전체 주제가 될 수있는 DB 스키마와 같이 논의 할 수있는 무수한 다른 세부 사항도 있습니다.
이와 같은 질문에 직면 할 때마다 문제 영역에 대한 전문 지식이없는 경우 몇 가지를 수행하는 것이 좋습니다.
먼저이 문제 영역에 대한 전문 지식이 없음을 인정하십시오.
둘째 , 문제 해결 방법에 대해 설명하십시오.
지리적 검색 작업을 수행 할 때 특정 경험이 없지만 문제를 해결하기위한 문서화 된 알고리즘과 기존 기술이 있다고 확신합니다. 나는 이것들을 탐색하여 나에게 제공되는 일반적인 솔루션에 대한 지식을 얻고 프로젝트의 요구 사항을 기반으로 구현에 대한 선택을 할 것입니다.
셋째 , 항상 이와 같은 문제를 기본 구성 요소로 줄입니다. 지도의 위치는 2 차원으로 분포되어 있습니다. 임의의 x, y 좌표가 주어지면 다른 좌표에서 각 좌표까지의 거리는 삼각형을 형성하고 알 수없는 길이를 푸는 것으로 계산됩니다. 바운딩 박스 내에서 모든 좌표를 찾도록 요청받은 경우, 원하는 박스의 범위를 계산하고 두 축을 따라 로직보다 작은 것보다 작은 것보다 간단한 것을 사용하여 간단히 할 수 있다는 것을 알고 있습니다.
마지막으로 , 나는 질문 을 포기 하는 것처럼 보이는 개발자를 고용 한 적이 없습니다 . 질문을하고 그 사람이 "모르겠다"고 말하고 그것을 구두로 생각조차하지 않으면 소프트웨어 브레인 스토밍 세션에 기여하지 않을 것이라는 인상을줍니다. .
이것은 아마도 분명하지만 많은 응용 분야에서 가난한 사람의 느린 해결책은 괜찮을 것입니다.
위도와 경도를 저장하는 관계형 데이터베이스에 테이블이 있습니다. 위도 20 마일, 경도 20 마일 이내에있는 모든 위치를 쿼리하십시오. 이렇게하면 검색하려는 반지름이 포함 된 가장 작은 경계 사각형의 크기로 경계 사각형이 제공되며 지구의 곡률도 무시됩니다.
그런 다음 (인덱스를 사용하는 쿼리에 의해) 반환 된 세트를 가져 와서 정확한 거리 계산을 사용하여 필터링합니다.
따라서 효율적인 성능은 아니지만 개발 시간이 매우 효율적입니다. 더 나은 선택이 될 수있는 많은 응용 프로그램의 경우.