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

       前面的一篇我们讨论了第一种空间索引——四叉树。作为二叉排序树在二维空间的推广,四叉树是一种非常直观有效的结构。但同样,它也带来了二叉排序树的毛病,那就是当索引对象极端时,它的查找的时间复杂度会退化成线性也就是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结构的树的存储,构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值