안녕하세요.


제가 올린 두 개의 프로그램 모두 공간인덱싱을 사용하지 않고 있습니다. 말 그대로 무식하게 처음부터 끝까지 검색을 하는 방법을 취하고 있죠.


공간인덱싱은 다음과 같은 두가지 경우에 매우 유용하게 사용되어집니다.


1. 디스플레이


공간인덱싱을 하지 않을 경우 화면 밖의 사상(feature)들도 화면에 뿌려지지 않음에도 모두 무수한 계산을 수행합니다. 따라서 이러한 경우 디스플레이의 속도를 현저하게 떨어뜨립니다. 12월 7일자 프로그램에서 Labeling을 실행한 뒤, 화면을 확대해도 속도가 빨라지지 않는 이유가 여기에 있습니다. 사실 12월 7일자 프로그램에서는 약간의 트릭을 사용하여 이러한 부분을 비켜나가고 있는데요. 사실 땜빵 처리일뿐입니다.


2. 검색


사실 공간인덱싱을 하는 가장 중요한 이유가 바로 이 검색의 효율성 때문입니다. 12월 7일에 올린 프로그램같은 경우 사용자의 마우스 입력을 받아서 그 사상을 찾기 위해 처음부터 다 뒤집니다. 정말 무식한 방법입니다. 이런 경우 공간인덱싱이 적절히 되어 있으면 해당 인덱싱에 속하는 사상(feature) 들만을 검색함으로
서 매우 효율적으로 검색을 수행할 수 있습니다.


3. 공간인덱싱의 방법들


공간인덱싱의 방법에는 참 많은 방법들이 있습니다. Simple Grid, Quad Tree, R-Tree, KD-Quad Tree 등등. 각각의 방법에는 나름의 장점과 단점이 있는 것 같습니다. 첨부한 문서를 읽으시면서 공간인덱싱의 필요성과 여러 방법들의 장단점을 이해하시기 바랍니다.


4. 그러면 우리는?


저는 여러 공간인덱싱 방법 중에서 Simple Grid를 구현할 것입니다. 그 이유는 사실 Simple Grid가  포인트, 라인, 폴리곤 등의 사상들을 수용하기에 매우 용이한 것이 그 첫째 이유이며, 둘째로는 구현이 매우 쉽다는 측면이 있으며, 셋째로는 극단적인 상황을 제외하고서는 다른 기법에 비해 그리 큰 속도차가 나지 않는다는 이유때문입니다. 공간인덱싱을 적용하느냐, 적용하지 않느냐는 엄청난 속도차를 야기하지만 공간인덱싱을 적용한 경우 그 방법적인 각각의 차이는 예상 밖으로 그렇게 큰 편은 아니랍니다. 매우 극단적인 상황을 제외하고서는 말이죠. 아 또하나.. ESRI 역시 지난 20여년간 Simple Grid를 공간인덱싱의 방법으로 사용해왔다는 이유도 하나의 이유가 되겠죠. ^^;


위에서 언급한 이유에 기인하여 저는 Simple Grid를 이용한 간단한 공간인덱싱 클래스를 짜보고 이를 지난 프로그램에 붙여보도록 하겠습니다.


그럼 다음 번에 또 뵙도록 하겠습니다.


즐거운 년말년초되세요..


2001년 12월 28일

Posted by 뚜와띠엔
,