必威根据R树索引的点面关系判断及效率优化统计。基于R树索引的点面关系判断及效率优化统计。

文章版权由作者李晓晖同博客园共有,若转载请叫大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

章版权由作者李晓晖及博客园共有,若转载请为大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

1.背景

每当头里的博客中,我分别介绍了因网格的空中引得(http://www.cnblogs.com/naaoveGIS/p/5148185.html)以及四叉树和网格结合的联合索引(http://www.cnblogs.com/naaoveGIS/p/6641449.html),要解决的问题均是判断一个点落在了面图层中的哪个面要素中。单从算法层面上分析,以上两种索引均有一些弊端:

a.网格索引由于对整个空间拓展网格划分,如果分粒度太密切容易并发索引冗余,如果分粒度太死则寻引效率又宏大下降。

    必威 1

b.四叉树索引同样是一个图元标识被多只区域所提到,相应地蕴藏于多单叶子节点上,这样虽存索引的冗余,与网格索引存同样的弊端。

        必威 2

也更优化索引,我们决定利用R树来开展优化。

1.背景

在前的博客中,我分别介绍了冲网格的空中引得(http://www.cnblogs.com/naaoveGIS/p/5148185.html)以及四叉树和网格结合的联合索引(http://www.cnblogs.com/naaoveGIS/p/6641449.html),要解决的问题均是判断一个点落在了面图层中的哪个面要素中。单从算法层面上分析,以上两种索引均有一些弊端:

a.网格索引由于针对全体空间拓展网格划分,如果分粒度太密切容易并发索引冗余,如果分粒度太好则寻引效率又宏大下降。

    必威 3

b.四叉树索引同样存在一个图元标识为多独区域所波及,相应地囤积在差不多只叶子节点上,这样就是存在索引的冗余,与网格索引存一样的弊端。

        必威 4

也更加优化索引,我们决定以R树来开展优化。

2.R树介绍

R树要行使空间划分的眼光,即利用MBR(Minimal Bounding
Rectangle,最小边界矩形)的道,从叶子结点开始为此矩形(rectangle)将空间约起来,结点越向上,框住的上空就一发充分,以此对空中进行划分:

        必威 5

有的原来空间要素都是叶节点,这样尽管不会见产出如四叉树索引和网格索引中起的长空要素为多个寻引段指引,进而出现大量冗余索引的问题。

2.R树介绍

R树要行使空间划分的理念,即采取MBR(Minimal Bounding
Rectangle,最小边界矩形)的主意,从叶子结点开始为此矩形(rectangle)将空间约起来,结点越往上,框住的上空就越来越老,以此对空中进行分割:

        必威 6

备的故空间要素全都是叶节点,这样尽管不会见面世如四叉树索引和网格索引中出现的长空要素为多独寻引段指引,进而出现大量冗余索引的题材。

3.冲JTS的有血有肉落实

JTS中提供了构建索引的措施,其可构建四叉树索引、R树索引、KD索引等。这里,我们一直以JTS来构建R树索引。

JTS的介绍:https://en.wikipedia.org/wiki/JTS_Topology_Suite

JTS的源码下载:https://sourceforge.net/projects/jts-topo-suite/?source=navbar

3.根据JTS的具体落实

JTS中提供了构建索引的不二法门,其可以构建四叉树索引、R树索引、KD索引等。这里,我们直接用JTS来构建R树索引。

JTS的介绍:https://en.wikipedia.org/wiki/JTS_Topology_Suite

JTS的源码下载:https://sourceforge.net/projects/jts-topo-suite/?source=navbar

3.1R树的构建

应用GT读博到地方的SHP,获取到持有的要素集,然后遍历要素将envelope和因素信息一一插入到StrTree中,构建R树:

   必威 7

3.1R树的构建

利用GT读博到地方的SHP,获取到独具的要素集,然后遍历要素将envelope和因素信息一一插入到StrTree中,构建R树:

   必威 8

3.2因R树的询问

用查询的上空法构造成一个Envelope在R树中查询,对查询出来的结果更展开点面关系判断:

   必威 9

3.2冲R树的查询

拿查询的空中法构造成一个Envelope在R树中询问,对查询出来的结果再次开展点面关系判断:

   必威 10

4.优化

当咱们事先的点滴种植索引方法被,我们全将引得文件保留至了地方,每次调用时失去加载索引,如此IO是一个非常充分之瓶颈。现在咱们创建一个器皿,将StrTree保存至该容器中。查询时,直接打外存中获取到该树。

4.优化

以我们前面的点滴栽索引方法吃,我们皆以引得文件保留及了地方,每次调用时错过加载索引,如此IO是一个万分要命的瓶颈。现在咱们创建一个器皿,将StrTree保存到该容器中。查询时,直接打外存中获取到该树。

5.效率对比

5.效率对比

5.1询问效率比

于测试数据遭到选中一个特殊点(多个多边形的交接处):

   必威 11

 

独家对下的老三种植索引进行了性能比:

a.本地网格索引:

   必威 12

b.本地混合索引(四叉树与网格索引整合):

 必威 13

c.内存R树索引:

 必威 14

足见查询效率快了扳平倍增左右。

5.1询问效率比

于测试数据遭到选中一个特殊点(多个多边形的交接处):

   必威 15

 

个别对利用的老三栽索引进行了性比:

a.本地网格索引:

   必威 16

b.本地混合索引(四叉树与网格索引整合):

 必威 17

c.内存R树索引:

 必威 18

看得出查询效率快了千篇一律加倍左右。

5.2寻引构建效率比

样本数量有2000多单面要素,之前的简单种检索引均采取当地工具构建,时间大体是1S前后(没有实际统计)。现在采用JTS构建R树索引,效率为:

   必威 19

5.2找寻引构建效率比

样本数量来2000基本上单面要素,之前的鲜种植检索引均采用当地工具构建,时间大约是1S光景(没有切实可行统计)。现在使用JTS构建R树索引,效率也:

   必威 20

5.3占有的内存效率

此索引的优化中,我们用数据全存入了内存。这里要察看内存的占用量有多非常。

一般监控内具备两栽办法,通过工具查看或代码段编写。代码段编写好透过运用SizeOf.jar实现,工具查看可以通过jvisualvm实现:

   必威 21

老之本土SHP数据大小也:3.8M。

网格索引大小也:4.4M。

混合索引文件之轻重缓急为:8.4M。

比方念入内存中的R树索引的轻重为:4.3M。

鉴于我们囤了要素所蕴含的装有信息,理论及,如果我们以积存信息更是回落,内存占用会还有些。目前来拘禁,SHP数据本身的大大小小,会及存入内存的音信大小来一直关乎。

5.3占据的内存效率

此索引的优化中,我们拿数据总体存入了内存。这里不可不着眼内存的占用量有差不多万分。

诚如监控内有所两种办法,通过工具查看或代码段编写。代码段编写得经采用SizeOf.jar实现,工具查看可以通过jvisualvm实现:

   必威 22

土生土长的本地SHP数据大小为:3.8M。

网格索引大小为:4.4M。

混合索引文件之分寸为:8.4M。

如果念入内存中的R树索引的轻重缓急为:4.3M。

由我们囤了要素所含有的备信息,理论及,如果我们用积存信息更回落,内存占用会更粗。目前来拘禁,SHP数据我的分寸,会暨存入内存的音大小来直接涉及。

6.总结

当前目录方式任然有几乎接触不足:

a.索引构建中的因素获取方式啊地面SHP读取,需要扩大成对第三正服务数据的支撑。

b.当R数查询命中单发生一个元素时,因为极度小矩形的克是超越等于实际要素范围的,所以还要进行相同软点面判断。如此,当图层要素个数本身不多时,建立索引不必然得加速。

 

                             —–欢迎转载,但保留版权,请吃大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                             
如果你看本文确实帮了您,可以微信扫一扫,进行小额的打赏和鞭策,谢谢
^_^

                                                                   
                     
必威 23

 

6.总结

即目录方式任然有几触及不足:

a.索引构建中的元素获取方式啊地面SHP读取,需要扩大成对第三正在服务多少的支持。

b.当R数查询命中就来一个元素时,因为极度小矩形的限制是超出等于实际要素范围之,所以还要进行同样次等点面判断。如此,当图层要素个数本身不多时,建立索引不肯定可以加快。

 

                             —–欢迎转载,但保留版权,请叫大庭广众处于标明出处:http://www.cnblogs.com/naaoveGIS/

                                                                             
如果您当本文确实帮了若,可以微信扫一扫,进行小额的打赏和鼓励,谢谢
^_^

                                                                   
                     
必威 24

 

相关文章

Leave a Comment.