1

WGS84에서 지리적 포인트를 매핑 할 수 있기를 원하며, ms SQL 서버로 포맷 된 것으로 가정합니다. 동일한 좌표 쌍이 각각 256 개의 셀로 구성된 4 개의 고차원 격자가있는 SQL 서버 공간 인덱스로 테제 화되어야한다면 셀을 만질 것입니다.wgs84 좌표를 SQL Server B- 트리 인덱스 (내장 된 공간 인덱스 사용 안함)로 매핑하는 방법

이 같은 인덱스 내에서 모두 지리적 및 비 지리적 데이터의 사용을 지원하지 않기 때문에 2008 공간 인덱스가 이상적으로 우리의 요구에 맞게하지 않는 SQL 서버.

번역을 수행하는 방법을 알고 있다면 위의 제한을 우회 할 수있는 것처럼 보일 것입니다.

this page은 1에서 최대 4 개의 양의 정수로 개별적으로 인코딩 될 수있는 평면 셀에 지리 포인트를 매핑하는 방법을 시각적으로 보여줍니다. 번호가 매겨진 셀의 예는 링크 된 페이지에서 "최단 셀 규칙"섹션을 참조하십시오.

저는 기본적으로 그 일을하는 방법에 대한 pseduo 코드를 찾고 있습니다.

알고리즘에 대한 세부 정보를 알고 있으면 도움을 얻을 수 있습니다.

미리 감사드립니다.

답변

1

단순한 해법은 모르몬 커브와 같이 x와 y 좌표를 인터리브하는 것입니다. 최상위 비트를 사용하여 상한을 계산하여이를 확인할 수 있습니다. 빙지도는 모르몬 곡선을 사용합니다 : http://msdn.microsoft.com/en-us/library/bb259689.aspx하지만 힐버트 곡선은 훨씬 복잡하지만 대부분의 경우 더 좋습니다. 힐버트 곡선에서는 좌표에 회색 코드가 사용됩니다. 다음은 몇 가지 코드 예제입니다 : Mapping N-dimensional value to a point on Hilbert curve.

+0

OP를 다시 확인하십시오. OP는 SQL Server 2008의 공간 인덱스가 생성하는 것과 똑같은 것이 아닌 똑같은 tesselations를 생성하는 무언가를 요구합니다. OP 옆으로, 아마도이 게시물은 다른 사람을 도울 수 있습니다. 그것이 가치가있는 것이 무엇이든지, 결국 나 자신이 비슷한 해결책을 찾았고, 하나의 btree가 위도와 경도의 조합을 찾고 행의 부분 스캔, 관심 영역 내에서 사전 정렬 trig, div 또는 fp 조작이없는 페이징 요구 사항. 그것은 실제로 OP에 대답하지 않기 때문에 여기에 게시되지 않습니다. –

+0

@JMHicks : 힐버트 곡선은 회색 코드를 사용하고 있습니다. 그게 네가 필요로하는 것이 아닌가? 또한, 링크에서 그것은 모르몬 곡선에 관한 코드입니다 : http : //msdn.microsoft.com/en-us/library/bb259689.aspx. 내 대답이 도움이된다면 투표를 고려하십시오! – Bytemain