GIS是怎样建成的之三:图形,图形,我们去哪里呀(区域树部分)

本文探讨了GIS系统中空间索引的构建,重点介绍了区域树这一数据结构。区域树通过排序Envelope并逐层建树保持平衡,提供高效的查询性能。NetTopologySuite(NTS)实现了一种只读的类似区域树的结构,其查询时间复杂度为O(logn+k),但通过分散层叠技术,理论上可以进一步降低到O(logn+k)。作者计划在NTS基础上实现分散层叠,以提升GIS系统的性能。
摘要由CSDN通过智能技术生成

       前面的一篇我们讨论了第一种空间索引——四叉树。作为二叉排序树在二维空间的推广,四叉树是一种非常直观有效的结构。但同样,它也带来了二叉排序树的毛病,那就是当索引对象极端时,它的查找的时间复杂度会退化成线性也就是O(n)。那在一维空间我们怎么办呢?科学家发明了一种始终维护二叉树平衡的树,即左右子树之差不超过一,顾名思义,平衡二叉树。那么平衡二叉树能不能再二维空间中推广呢。类比二叉排序树这样简单推广是不可能了,所以产生了一种新的数据结构叫区域树。

       其实所谓的区域树思路非常简单,它的原理就是对各个Envelope进行排序,然后以它们为叶节点逐层向上建树,这样建立的树是严格平衡的,它的分支节点的Envelope为子节点Envelope的并。好了,那怎么排呢,每个索引对象的Envelope有一个四维参数,即x,y,width,height。如果排序,只能使用其中一个指标,或者几个指标的组合进行评价。NTS实现了这种数据结构。NTS对它的描述是一种只可以查询的R树,但对照了R树和区域树的定义的差别,NTS里面实现的这种结构与区域树更为接近,至于是否属实还有待进一步学习。对其的操作分别可以对X,Y进行排序,对X和Y的分别查询的时间复杂度为O(logn+k),然后对其查找出的节点进行匹配,最终得到的时间复杂度为log^2+k。,同时它的空间复杂度上升到了O(nlogn)。

        NTS对这种区域树的实现基本也就到此为止了。但翻阅计算几何书时,发现时间复杂度还是可以再降的,将到我们觉着不可思议,可以达到O(logn+k)。这种技术叫分散层叠。这种技术的核心思想就是在对X排序生成的区域树之后,不建立第二棵Y区域树。而是建立另一种树结构,它是针对X结构的树的存储,构

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值