지구를 어떻게 작은 그리드로 나누어서 각각의 위/긴 위치를 그리드에 할당 할 수 있습니까? [닫은

StackOverflow https://stackoverflow.com/questions/1824790

문제

위도/경도로 표시되는 가장 가까운 위치를 계산하기 위해 맵을 약 100x100 미터 그리드의 작은 그리드로 나누는 것을 고려하고있었습니다. 본질적으로 각 지점은 그리드에 할당됩니다.

대신 MySQL 등과 함께 공간 인덱스를 사용할 수 있지만 Cassandra와 같은 비 관계형 데이터베이스를 사용하여 공간 객체에 대한 색인화가 어려울 수 있으므로 일부 그리드 근사 기술이 깔끔 할 수 있습니다.

이러한 그리드 시스템을 생성하고 2D 공간 위치를 매핑하는 가장 좋은 방법은 무엇입니까?

EDIT1 : 그리드가 완벽하게 균일하지 않으면 극 주위에 더 많이 균일 할 수 있습니다.

도움이 되었습니까?

해결책

직사각형 그리드는 합리적인 추정이 될 수 있지만 극에 너무 가깝지 않은 비교적 작은 영역에서만 가능합니다. 전체 글로브 솔루션에는 다른 접근 방식이 필요합니다.

다른 팁

2 차원 공간 좌표에서 공간 지수 / Geohash에 매핑하는 것은 흥미로운 문제입니다. 당신은 볼 수 있습니다 이 기사는 Quadtrees, Geohashes 및 Hilbert Curves에 관한 기사입니다. 그만큼 힐버트 곡선 지역성을 제공하는 공간 충족 곡선입니다. 귀하의 목적을 위해, 이는 1 차원 공간 지수의 인근 품목이 2 차원 공간에 근처에 있음을 의미합니다.

다른 응답자가 설명한대로 목표는 서버에서 불필요한 데이터를 요청하지 않고 해당 공간을 커버하는 데 필요한 쿼리 수를 최소화하는 것입니다. 2D 공간에서 1D 지수로 매핑하는 방법은 해당 목표에 영향을 미칩니다.

정확한 응용 프로그램 요구 사항을 알지 못하면 Geohashing은 적절한 기술 일 수 있습니다. http://en.wikipedia.org/wiki/geohash

"이것은 공간을 그리드 모양의 버킷으로 세분화하는 계층 적 공간 데이터 구조입니다. Geohashes는 임의의 정밀도와 같은 속성을 제공하여 코드 끝에서 문자를 점차 제거하여 크기를 줄이고 정밀도를 잃을 가능성이 있습니다."

지구를 균일하게 매핑하는 직사각형 그리드를 만들 수 없습니다. 그리드가 균일 해야하는 경우 대신 삼각형을 사용해야합니다. 그러나 일반적으로 이것이 당신의 문제를 해결할 것이라고 의심합니다. 필요한 것은 2D입니다 Octree (이것은 Google 검색 링크입니다. 어떤 종류의 방법이 어떻게 작동하는지 쉽게 단서를 확인하십시오. 90도 등).

그런 다음 기존 좌표가 포함 된 가장 작은 사각형을 빠르게 생성하는 몇 가지 선택을 할 수 있습니다. 이제 사각형의 크기를 확인할 수 있습니다. <100m 인 경우 솔루션을 찾았습니다. 그렇지 않으면 확인할 몇 가지 위치가 있습니다 (보통 하나).

구현 용 "Octree SQL 데이터베이스"용 Google.

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