论文部分内容阅读
空间索引作为空间数据库中的重要组成部分,可以加快对空间对象的检索.由于空间数据本身的复杂性,以及目前对海量空间数据快速查询的要求日益提高,当前地理信息系统正面临着大数据量空间数据存储及管理的挑战.但传统一维索引方法不能很好地适应空间数据的存取,例如多介质应用中的多维空间数据,即使是公认的最佳索引方法B<+>树也无能为力.为了解决多维空间检索,人们又提出了许多相应的索引方法,其中有效的方法有R(range)树及其变体,Quad树、Frame结构等.本课题以目前较流行的空间数据结构的算法为研究对象,进一步提高空间数据的索引速度.在回顾了地理信息系统发展历程及空间索引技术的现状后,重点研究了K-D树、R树、R<+>树,R<*>树等有代表性且效率较高的空间存取技术.本文首先对K-D树及R树的基本算法进行了介绍.用Java Applet实现了对KD树主要算法的动态演示.对R树的最优分裂标准进行了补充与改进,同时对R树的分裂算法进行了改进与实现.提出了基于K-D树的空间切分方法更适合于点数据,而R树的空间切分方法则更适合于类似矩形的数据.对R树的约束条件及其设定对进行了分析,并比较了R树与其它空间索引算法之间的差异.从比较中可看出虽然R树经常被用于对多维数据集进行检索,但当维数增高时它的性能并不像我们期望的那么高,其中主要的原因就是当维数增高时,出现了大量的重叠区域,因而如何进一步改善R树,减少区域重叠度使其不受空间维数的限制是将来R树研究的一个重要课题.最后,用VC++实现了KD树及R树的算法,并采用城市规划中的真实数据对KD树及R树中的矩形区域查询进行测试,证明了KD树对于GIS中点数据的查询是非常高效的,而R树对GIS中区域对象的查询也是非常高效的.同时从R树的测试结果表明改进后的算法缩短了查询时间,因而比原算法更加有效.