2014-12-09 5 views
0

2D로 렌더링 할 객체가 많습니다.이 객체는 아래에서 위로 정렬되었습니다. 현재 R 트리를 사용하여 현재 뷰포트 내에있는 하위 집합을 가져옵니다. 그러나 공간 인덱스를 제거한 후에 Z 순서로 다시 정렬해야합니다. 이러한 정렬은 공간 인덱스에서 목록을 찾는 것보다 수백 배 더 오래 걸립니다 (수 백 개의 항목이 내 쿼리와 일치합니다).정렬 된 집합에 대한 공간 인덱스

정렬 된 순서로 요소를 반환하는 직사각형 경계 상자로 빠른 룩업을하는 일종의 2D 공간 인덱스가 있습니까?

+0

뭔가 [옥트리 (http://en.wikipedia.org/wiki/Octree)는이 될 수 있습니다 시작하기에 좋은 곳 ... – twalberg

+0

3D R- 트리를 사용하여 간단하게 생각 해 봤니? (x, y, z) 대신 좌표 (예 : (z, x, y))를 다시 정렬해야하지만 z 정렬 순서로 결과를 얻을 수 있어야합니다. 그렇지 않다면 3D k-d 트리가 있어야합니다. 또한, 얼마나 많은 Z가 있습니까? 기수 정렬이나 다른 것을 사용하는 것이 더 나을 수도 있습니다. – Nuclearman

+0

Z 값은 구별됩니다 - 객체 당 하나의 고유 한 값이 저장됩니다. –

답변

0

Z- 순서로 R- 트리를 직접 구축 할 수 있습니다.

일반적으로 Hilbert 순서가 선호되며 Hilbert-R-tree로 알려져 있습니다.

하지만 Z- 주문에서도 동일한 작업을 수행 할 수 있습니다.

그러나 Z- 순서로 데이터를 바로 저장할 수도 있습니다. 예를 들어 B + - 트리.

직사각형으로 쿼리하는 대신 쿼리를 Z 순서 간격으로 변환하고 Z 인덱스를 쿼리하십시오. 이것은 R-나무를 낳은 매우 고전적인 접근 방식입니다 :

모튼, G. M. (1966)
측지 데이터베이스 지향하는 컴퓨터; 및 파일 시퀀싱의 새로운 기술은
기술 보고서, 오타와, 캐나다 : 기반으로 IBM (주)

관련 문제