CN111666361B - 一种存储多边形包含关系的四叉树构建方法及索引方法 - Google Patents

一种存储多边形包含关系的四叉树构建方法及索引方法 Download PDF

Info

Publication number
CN111666361B
CN111666361B CN201910177251.XA CN201910177251A CN111666361B CN 111666361 B CN111666361 B CN 111666361B CN 201910177251 A CN201910177251 A CN 201910177251A CN 111666361 B CN111666361 B CN 111666361B
Authority
CN
China
Prior art keywords
polygon
node
polygons
inner ring
index
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910177251.XA
Other languages
English (en)
Other versions
CN111666361A (zh
Inventor
周晓光
汪红松
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Central South University
Original Assignee
Central South University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Central South University filed Critical Central South University
Priority to CN201910177251.XA priority Critical patent/CN111666361B/zh
Publication of CN111666361A publication Critical patent/CN111666361A/zh
Application granted granted Critical
Publication of CN111666361B publication Critical patent/CN111666361B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种存储多边形包含关系的四叉树构建方法及索引方法,其中,采用所述构建方法构建了存储多边形包含关系的四叉树,建立判别多边形对象之间包含关系的规则,鉴别复杂多边形与其内环所包围的多边形之间的父子包含关系;同时对四叉树中结点对应的多边形进行分桶存放;再基于构建的四叉树进行索引,本发明提供了多边形对象查询、删除以及插入过程的实现过程,基于构建的包含关系以及分桶存放的特征,极大地提高了多边形对象的查询、删除以及插入效率,同时为增量更新的应用过程中快速确定增量多边形与基态多边形相交的内环提供了技术支持。

Description

一种存储多边形包含关系的四叉树构建方法及索引方法
技术领域
本发明属于空间数据管理及应用技术领域,具体涉及一种存储多边形包含关系的四叉树构建方法及索引方法。
背景技术
地表覆盖变化的发现与有效更新是近年来的研究热点问题之一。地表覆盖数据分为栅格数据和矢量数据,由于栅格数据格式没有直接存储目标个体的形状、大小、属性等信息,不能满足广大用户的应用需求,因此全球地表覆盖矢量数据呼之欲出。但由于地表覆盖矢量数据存在大量包含成千上万个空洞的复杂多边形,且这些多边形之间嵌套包含关系复杂。在地表覆盖矢量数据质量控制与更新过程中,变化图斑必然与一个或多个已存在基态重叠,更新处理操作往往触一而动全身。国内外多位学者对拓扑关系的查询与存储做了很多研究工作,如“GIS空间关系的基本问题与研究进展”,“复杂区域对象拓扑关系分解与计算”,但这些拓扑关系一般通过存储多边形相关的结点和边,然后通过计算获得,存在计算工作量大难以满足复杂多边形的增量更新效率需求等问题。
建立空间数据索引能提高增量更新过程的查询效率。空间索引建立的方法一般分为按空间划分建立索引和按对象划分建立索引两类。按对象划分建立索引的方法主要有R树、R+树、R*树等R树家族。但是基于对象划分建立的索引其特点是索引子空间会发生无法避免的重叠,随着索引对象的动态更新,索引操作的性能会明显下降。根据空间划分建立索引的方法主要有网格索引、四叉树索引及其家族等。其中,网格空间数据索引一般根据空间对象的复杂程度和分布特征来划分网格,但由于空间对象的复杂程度和分布特征各异,使得网格划分难以确定,同时网格索引中结点存在冗余,空间对象更新也会导致索引效率下降。二维面状数据的四叉树空间索引包括PMR四叉树、CIF四叉树等四叉树家族。但是目前的空间数据索引方法是针对多边形外环建立的索引,没有建立包含空洞的复杂多边形之间的嵌套关系索引。
然而在现有索引模式下,地表覆盖变化冲突检测与更新处理应用中需要计算出变化图斑与基态多边形及其每个空洞多边形的拓扑关系情况,对于包含数以万计空洞的复杂多边形来说,计算工作异常复杂。但地表覆盖变化往往具有局部特征,变化图斑一般范围较小,只与大范围复杂多边形中的少量空洞有交,而在冲突检测与更新处理中发挥作用的也只是这些与变化图斑有交的空洞多边形及其邻近多边形,而不需要计算与其他多边形(包括空洞)的拓扑关系;此外,空间数据更新时,只会引起较小的结点变更。因此,如何通过索引模式快速查询与变化图斑有交的空洞多边形及其邻近多边形是提高地表覆盖变化冲突检测与更新处理应用的关键性内容。因此,需要构建一种可以快速查询与该点或区域相交的多边形(集)的索引方法以及对应的四叉树。
发明内容
本发明是对传统CIF四叉树进行改进,提供了一种存储复杂多边形包含关系的四叉树,并基于生成的四叉树进行空间索引,本发明可以快速查询与目标点或者目标区域相交的多变形,并能够在四叉树索引中删除多边形以及插入多边形,为增量更新过程的高效执行提供基础。
一方面,本发明提供的一种存储多边形包含关系的四叉树构建方法,包括如下步骤:
S1:基于待研究区域数据构建无包含关系的四叉树;
采用CIF四叉树构建方法构建待研究区域数据中的所有多边形与四叉树结点的对应关系,并基于多边形与结点象限划分线的相交关系依次将除叶子节点之外的每个结点上的多边形分桶表存放,叶子节点上的多边形均存放在同一桶表内;
其中,非叶子结点与象限划分线的每一类相交关系对应一个桶表;
S2:基于包含关系判别规则为步骤S1构建的四叉树添加包含关系得到存储多边形包含关系的四叉树索引;
其中,所述包含关系判别规则用于鉴别两个多边形是否为父子关系,若是父子关系,则在对应四叉树的结点数据中添加父结点指针,以及在对应多边形的数据结构中添加父多边形或子多边形的信息;
存储多边形包含关系的四叉树中每个结点的数据至少包括:当前结点的身份标记号NID,指向父结点的指针PPtr,存放多边形的桶列表;
多边形的数据至少包括当前多边形标号、父多边形标号、当前多边形在父多边形中相应内环序号、子多边形列表。
本发明构建四叉树是包括其索引信息,其中,四叉树中每个结点的多边形分桶进行存放,能极大地提高传统四叉树对象重复存储以及多边形对象存储分布严重不均的问题,且分桶存放后可以提升查询效率,以桶为单元进行查询,极大提高索引查询效率。此外,本发明构建的四叉树考虑到了多边形对象之间存在的包含关系,进而利用四叉树索引可以快速获取到多边形对象的父多边形以及子多边形,一方面提高了索引查询时包含关系的查询效率,另一方面,为四叉树索引在地表覆盖冲突检测与更新处理应用中增量更新处理效率的提高提供了基础,这是基于存储了复杂多边形的父子包含关系后,可以通过索引快速确定基态多边形与增量多边形相交的内环,有效地避免不相关空洞参与计算的时间开销,提高增量更新处理效率。
进一步优选,所述包含关系判别规则为:设P1、P2为两个多边形,若多边形P1直接包含多边形P2,则多边形P2是多边形P1的子多边形,其中,需满足如下规则1-规则4:
规则1:多边形P1中有内环;
规则2:多边形P2的最小外接矩形MBR被多边形P1的最小外接矩形MBR包含,且同时与P1的某一内环r的最小外接矩形MBR相交;
规则3:至少存在一个内环r使得多边形P2上任取一点在规则2中内环r的环内或环上;
规则4:不存在既包含多边形P2,同时最小外接矩形MBR小于多边形P1的最小外接矩形MBR的多边形P3。
上述四条规则中的每条规则都是建立在前一条规则的基础上,其中规则2需要遍历P1的内环,对满足规则2的内环,再使用规则3判别,规则4用来排除间接包含关系。对于无嵌套的直接包含前3条规则即可确定,否则利用规则4进一步约束,将P1与已获得的候选父多边形MBR相比较,具有更小MBR的多边形才是P2的父多边形,以排除嵌套的间接包含关系。
进一步优选,步骤S1中非叶子结点上根据结点象限划分线设定了XpL桶表、XnL桶表、YpL桶表、YnL桶表、XYL桶表;
其中,非叶子结点的多边形对象分桶表存放的规则如下:
结点中多边形仅与所述结点所在象限划分线的X轴正轴相交,则将所述多边形存放在所述结点的XpL桶表中;
结点中多边形仅与所述结点所在象限划分线的X轴负轴相交,则将所述多边形存放在所述结点的XnL桶表中;
结点中多边形仅与所述结点所在象限划分线的Y轴正轴相交,则将所述多边形存放在所述结点的YpL桶表中;
结点中多边形仅与所述结点所在象限划分线的Y轴负轴相交,则将所述多边形存放在所述结点的YnL桶表中;
结点中多边形与所述结点所在象限划分线的X、Y轴均相交,则将所述多边形存放在所述结点的XYL桶表中。
步骤S1中叶子节点的多边形对象均存放于XYL桶表中。
进一步优选,步骤S1中构建无包含关系的四叉树为采用结点划分规则并按照从根节点往下的顺序递归划分结点直至满足结点划分终止条件得到所述待研究区域对应的四叉树;
其中,所述结点划分规则为:
若结点非叶子结点,按照如下A-B的步骤执行:
A:基于象限划分以及当前结点的范围最小外接矩形NMBR从当前节点向下划分出四个象限子树并得到四个子树结点,其中,将当前结点的范围最小外接矩形NMBR依照象限位置等分为四份得到每个象限子树的最小外接矩形MBR;
B:分别识别当前结点继承的每个多边形的最小外接矩形MBR是否被四个象限子树的最小外接矩形MBR包围,若是,则将所述多边形存入相应子树;否则,所述多边形与当前结点的象限划分线相交,并基于相交的象限划分线存入当前结点对应桶表内;
若结点为叶子结点,则将叶子结点继承的所有多边形存放在同一桶表中。
按照结点划分规则,划分后的非叶子结点中存储与象限划分线相交的多边形对象,并分桶存放;叶子结点的多边形对象全部存储于同一个桶表中。需要说明的是,A、B中当前结点继承的多边形是指从父节点划分后对应象限子树的多边形。应当理解,结点划分规则为CIF四叉树的结点划分规则上增设了结点多边形分桶存储的技术,进而提高了后续基于四叉树的索引效率。
进一步优选,若结点为根节点,则结点的范围最小外接矩形NMBR为待研究区域所有矢量多边形的最小外接矩形MBR的并;
若结点为非根节点,则结点的范围最小外接矩形NMBR为父节点对应象限子树的最小外接矩形MBR。
进一步优选,所述四叉树索引中结点的数据结构为:
{NID,NMBR,OMBR,Subtrees,Depth,PPtr,XYL,XpL,XnL,YpL,YnL};
其中,NID为当前结点的ID号,NMBR为当前结点的范围最小外接矩形(MBR),OMBR为当前结点所存储的复杂多边形对象的范围,其计算方法为该结点及子树中存储的所有矢量多边形的最小外接矩形(MBR)的并;Subtrees为当前结点的子树,Depth为当前结点层次,PPtr为指向父结点的指针,XYL、XpL、XnL、YpL、YnL均为存放多边形对象的桶表。
进一步优选,所述四叉树索引中多边形的数据结构为:
{CP,PP,RIPID,CPL}或
Figure BDA0001989957870000041
其中,CP表示当前多边形,为非内环虚拟多边形或内环虚拟多边形;
当前多边形CP为非内环虚拟多边形时,PP表示当前多边形CP的父多边形;或者当前多边形CP为内环虚拟多边形时,PP表示内环所在多边形;
当前多边形CP为非内环虚拟多边形时,RIPID表示当前多边形CP在父多边形PP中相应的内环RIP序号,CPL表示当前多边形CP的子多边形列表数组;
当前多边形CP为内环虚拟多边形时,-RIPID表示对应内环在内环所在多边形PP中的序号;
其中,内环虚拟多边形依据多边形内环中空间未铺满的区域构建。
在本发明中内环虚拟多边形-RIPID的负值标识以区别于实际存在的多边形。
本发明还提供一种基于上述四叉树构建方法的索引方法,根据查询点或查询区域来查询与所述查询点或所述查询区域相交的多边形;
其中,点查询过程包括如下步骤:
S11:自根向下的顺序搜索四叉树判断结点的OMBR是否包含查询点;
若包含查询点,则对子树结点进行继续执行S11以及判断当前结点的各个桶表对应的最小外接矩形MBR是否包含所述查询点,若包含,则判断对应桶表内的多边形的最小外接矩形MBR是否包含所述查询点,若包含,则将所述多边形加入到候选多边形集;如不满足,则所述多边形不是候选多边形;其中,OMBR为当前结点所存储的复杂多边形对象的范围;
若当前结点的最小外接矩形MBR不包含查询点,不对所述子树节点执行S11;
S12:在候选多边形集中查找满足查询点在外环内的多边形P,所述多边形P为非虚拟多边形;
S13:遍历候选多边形集中是否存在多边形P的子多边形且满足查询点在所述子多边形外环内,若存在且所述子多边形不是虚拟多边形,将所述子多边形作为新多边形P;
S14:重复S13直至没有多边形P的子多边形满足对应条件,多边形P为查询结果。
所述区域查询过程如下:
S21:自根向下的顺序搜索四叉树判断结点的OMBR是否与查询窗口相交;
若相交,则对子树结点进行继续执行S21,以及判断当前结点中各个桶表对应的最小外接矩形MBR是否与查询窗口相交,若相交,则依次判断所述桶表中多边形的最小外接矩形MBR是否与查询窗口相交,若相交,则将所述多边形加入到候选多边形集中;
若当前结点的最小外接矩形MBR不与查询窗口相交,不对所述子树结点执行S21;
S22:遍历候选多边形集中的多边形,将外环与查询窗口相交的除内环虚拟多边形外的多边形加入查询结果集;
S23:遍历候选多边形集中的多边形,若所述多边形在候选集中的子多边形的内环RIP与查询窗口相交,则将所述多边形加入查询结果集;
S24:遍历剩余候选多边形集中除内环虚拟多边形外的多边形,若查询窗口任取一点在其外环内且不在所述多边形在候选集中的子多边形的内环RIP内,则所述多边形加入到查询结果集;
其中,内环RIP表示子多边形的父多边形包围所述子多边形的相应内环。
从点查询以及区域查询的实现过程可知,其均利用了父子多边形的包含关系,因此,本发明提供的存储了多边形包含关系的四叉树可以提高索引过程中点查询以及区域查询的查询效率。应当理解,查询是索引中最为基础的一个功能。
进一步优选,还包括若从待研究区域中删除一个多边形时,则相应从四叉树索引中删除多边形g,其过程如下:
S31:从四叉树索引中查询多边形g所在的结点,并返回该结点及多边形g的位置;
S32:根据多边形g的父多边形指针,从父多边形对象的子多边形列表中删除多边形g,并判断以多边形g的内环RIPID构建虚拟多边形对象是否已存在,若不存在,则构建并插入索引;
其中,内环RIPID表示多边形g在父多边形中相应的内环序号;
S33:遍历多边形g的子多边形信息,根据每个子多边形的指针,从子多边形对象中删除父多边形信息;
S34:从当前结点中删除g,并判断当前结点是否为叶子结点,若是,执行S35;若不是,四叉树索引中多边形g删除操作完成;
S35:判断父结点与兄弟结点中多边形的数量和是否不大于结点分裂阈值Tnum,若是,进行将父结点和兄弟结点的所有多边形对象移入父结点的对应桶表中,并将其父结点所有子树置空;若不是,四叉树索引中多边形g删除操作完成;
S36:递归S35直到不再需要结点合并。
从删除多边形对应索引的过程可知,本发明构建的四叉树结点的多边形分桶存放可以极大的提高删除处理效率。同时在删除过程中维持包含关系,以保证删除多边形后的四叉树索引中存储的包含关系的稳定性、可靠性。需要说明的是,此处多边形g是为了方便描述而设定的变量,其并不具体指代某一特定多边形,而是泛指任意多边形。
进一步优选,还包括在四叉树索引中插入多边形g,其过程如下:
S41:从四叉树索引中查询多边形g应插入的结点N,并插入到结点N相应的桶表中;
S42:根据包含关系判别规则从结点N开始向根结点搜索父多边形并添加父子索引信息,并判别是否需要删除父多边形相应的虚拟多边形对象;
S43:根据包含关系判别规则,从结点N开始向叶结点搜索多边形g的子多边形并添加父子索引信息;
S44:判断所述结点N是否为叶子节点,若是,判断插入子多边形是否会引起结点分裂,若会,根据步骤S1中方法划分结点N并按结点划分终止条件停止结点分裂;若不是叶子节点,则多边形g插入完成。
从插入多边形对应索引的过程可知,本发明构建的四叉树结点的多边形分桶存放可以极大的提高插入处理效率。同时在插入过程中维持包含关系,以保证插入多边形后的四叉树索引中存储的包含关系的稳定性、可靠性。
有益效果
1、本发明提出一种存储包含关系的复杂多边形四叉树空间索引方法,该方法由于存储了复杂多边形及其子多边形之间的父子包含关系,可大大提高包含关系的查询效率,同时本发明的点查询以及区域查询均利用了父、子多边形的包含关系,基于父、子多边形的包含关系提供了一种全新的索引查询方法,也提高了查询效率,查询点以及查询区域不再需要与每个多边形进行比对判断是否相交。
2、本发明将四叉树索引结点中存储的多边形对象按照它与划分四叉树象限中轴线(象限划分线)相交的方式进行分桶存放,如分为5种类型,即只与X轴正轴相交、只与X轴负轴相交、只与Y轴正轴相交、只与Y轴负相交以及与XY轴都相交五种形式,并将这些与中轴线有交的多边形对象分别存储在索引结点中的5个桶表中,能大大改善传统四叉树对象重复存储及多边形对象存储分布严重不均问题(上层结点(包括根结点和近根结点)范围较大,因此与结点中轴线相交且存储在结点中的多边形数也很多),同时,在索引过程中查询过程、删除过程以及插入过程均先以桶为单元进行查询,再对满足要求的桶表内的多边形进行判断,可以极大地降低多边形的比对数量,节省时间开销,提高效率。
3、本发明引入内环虚拟多边形对象,以填满复杂多边形与其空洞多边形分层存储导致的的当前图层存在的无目标空洞,解决了分层存储导致的索引中复杂多边形包含关系数据表达不完整问题。
4、本发明在通过在索引中设计指向父结点的指针,提高了更新索引的结点分裂和合并操作效率。
5、使用本发明构建的四叉树及其索引方法进行包含大量(成千上万)空洞的复杂多边形数据的增量更新时,可大大提高增量更新处理效率:由于增量更新中一个增量(即变化)目标一般仅涉及到局部少量多边形,由于传统索引方法没有存储复杂多边形包含关系,但一个增量目标与复杂多边形有交时,难以通过索引方法确定其与该复杂多边形的哪些空洞多边形有交,往往需要通过计算增量多边形与该复杂多边形的每个空洞(即内环)的拓扑关系来确定需要更新处理的内环空洞,每个没有建立复杂多边形的空洞多边形,因此需要花费大量时间。使用本发明方法,由于存储了复杂多边形的父子包含关系,可通过索引快速确定基态多边形与增量多边形相交的内环,有效地避免不相关空洞参与计算的时间开销,提高数据处理效率。因此,本发明提供的四叉树及其索引方法为增量更新的效率提高提供了支持。
附图说明
图1为地表覆盖复杂多边形基态数据示例;
图2为存储复杂多边形包含关系的四叉树索引示例,其中(a)为引入内环虚拟多边形对象vp1、vp2及多边形C、F、Q的内环,x为空白区域,(b)为(a)相应的索引及多边形C、F、T的层次性的包含关系;
图3为图1中删除多边形后索引的变化,其中(a)为删除多边形I的结果和(b)为删除多边形T、J后的结果,(b)为删除多边形I后的索引,(c)为删除多边形T、J后的索引;
图4为增量多边形P1更新图3后索引的变化,其中(a)为用增量多边形P2更新图3(a)后的结果,(b)增量更新后相应索引的变化;
图5为实验使用的矢量数据,其中(a)2009年地表覆盖基态矢量数据,(b)2000年地表覆盖增量矢量数据,矩形框为图4中增量所在的位置。
具体实施方式
下面将结合实施例对本发明做进一步的说明。
本发明提供的一种存储多边形包含关系的四叉树构建方法,主要分为三个基础步骤,分别为:
1)建立无包含关系的四叉树索引根结点;
2)分裂结点直到满足结点划分终止条件;
3)利用索引为结点中的多边形添加包含关系信息。
其中,第一步和第二部为基于待研究区域数据构建无包含关系的四叉树,其中,待研究区域可以是待研究地表覆盖区域。第三部是为构建的无包含关系四叉树添加包含关系。
在描述本发明构建的四叉树及其索引之前,先介绍本发明四叉树结点的数据结构以及多边形的数据结构。
本发明的四叉树结点的数据结构为:
{NID,Subtrees,NMBR,OMBR,Depth,PPtr,XYL,XpL,XnL,YpL,YnL}
NID为当前结点的ID号,NMBR为当前结点的范围最小外接矩形(MBR),OMBR为当前结点所存储的复杂多边形对象的范围,Subtrees为当前结点的子树,Depth为当前结点层次,PPtr为指向父结点的指针,XYL、XpL、XnL、YpL、YnL均为存放多边形对象的桶表。
譬如,对于根结点而言,NMBR、OMBR相同均为全体矢量多边形MBR的并;Depth从整数0开始,每增加一层增加1;PPtr为空;若结点为非根节点,则结点的范围最小外接矩形NMBR为父节点对应象限子树的最小外接矩形MBR。在本实施例中,将每个结点的象限划分线设定了XpL桶表、XnL桶表、YpL桶表、YnL桶表、XYL桶表。XpL桶表、XnL桶表、YpL桶表、YnL桶表、XYL桶表分别对应X轴正轴、X轴负轴、Y轴正轴、Y轴负轴、XY轴。
为表达地理信息的多边形矢量数据建立相应的多边形对象,本发明的多边形对象的数据结构为:{CP,PP,RIPID,CPL}。
其中,CP(CurrentPolygon)为当前多边形,PP(ParentPolygon)为当前多边形CP的父多边形,RIPID(RingInParent ID)为当前多边形CP在父多边形PP中相应的内环RIP(RingInParent)序号,CPL(ChildrenPolygonList)为当前多边形CP的子多边形列表数组。若当前多边形CP无内环,则CPL为空,否则根据当前多边形CP中的内环顺序分别存储该内环包围的子多边形,数组元素为一个内环包围的子多边形列表。
此外,本发明还考虑到复杂多边形空间数据包括空间未铺满的情形,如:1)存在没有被任何多边形包含的空白区域;2)存在复杂多边形的内环空间未铺满的情形,即有内环但内环中没有包含任何子多边形或内环中的子多边形没有铺满。“铺满”是指空间多边形数据没有重叠地铺满整个空间区域,如中国地图上的中国国界范围内被各个省或领海铺满。本文中“未铺满”的情形是指地表覆盖中不同要素分别存储在不同图层中时,比如植被与水系存储在不同图层中,森林中的湖泊在植被图层中就显示为空洞,即植被图层存在未铺满的情形。
本发明针对复杂多边形的内环空间未铺满的情形,引入内环虚拟多边形对象(即内环构造的多边形),其数据结构为:
Figure BDA0001989957870000091
其中,CP为内环虚拟多边形,PP为内环所在多边形,-RIPID(取负值标识以区别于实际存在的多边形)为该内环在PP中的序号。复杂多边形的内环中子多边形未铺满或无子多边形时,内环虚拟多边形对象标识了内环中空洞的存在,内环虚拟多边形对象不是索引查询的结果集元素,只是参与索引操作的过程。
基于上述数据结构,现描述本发明四叉树的构建过程:
1、执行步骤S1基于待研究区域数据构建无包含关系的四叉树的过程为:采用结点划分规则并按照从根节点往下的顺序递归划分结点直至满足结点划分终止条件得到所述待研究区域对应的四叉树。
其中,所述结点划分规则为:
若结点非叶子结点,按照如下A-B的步骤执行:
A:基于象限划分以及当前结点的范围最小外接矩形NMBR从当前节点向下划分出四个象限子树并得到四个子树结点,其中,将当前结点的范围最小外接矩形NMBR依照象限位置等分为四份得到每个象限子树的最小外接矩形MBR;
其中,划分出四个象限子树分别为西北象限子树NWchild、东北象限子树NEchild、西南象限子树SWchild和东南象限子树SEchild。
B:分别识别当前结点继承的每个多边形的最小外接矩形MBR是否被四个象限子树的最小外接矩形MBR包围,若是,则将所述多边形存入相应子树;否则,所述多边形与当前结点的象限划分线相交,并基于相交的象限划分线存入当前结点对应桶表内。
其中,非叶子结点的多边形对象分桶表存放的规则如下:
结点中多边形仅与所述结点所在象限划分线的X轴正轴相交,则将所述多边形存放在所述结点的XpL桶表中;结点中多边形仅与所述结点所在象限划分线的X轴负轴相交,则将所述多边形存放在所述结点的XnL桶表中;结点中多边形仅与所述结点所在象限划分线的Y轴正轴相交,则将所述多边形存放在所述结点的YpL桶表中;结点中多边形仅与所述结点所在象限划分线的Y轴负轴相交,则将所述多边形存放在所述结点的YnL桶表中;结点中多边形与所述结点所在象限划分线的X、Y轴均相交,则将所述多边形存放在所述结点的XYL桶表中。
若结点为叶子结点,则将叶子结点继承的所有多边形存放在同一桶表中,本实施例中选择放入XYL桶表中。
本发明采用上述结点划分规则依次处理四叉树的各个结点,即递归的划分子树结点直到满足结点划分终止条件时结束划分,结点划分终止条件即当前结点中存储的多边形数量不大于设定阈值TNum。划分后的四叉树中结点中存储的多边形数量为对应所有桶中对象数量的和。
传统CIF四叉树是将数据空间递归地四分直至产生的子象限包含的对象数不大于设定的阈值,在分解的过程中,所有与任一中轴线相交的矩形只与该中轴线对应的结点相关联,属于一个结点的矩形不能属于任何祖先结点,因此,本发明的四叉树也可以理解为:先利用CIF四叉树构建方法分配待研究区域的多边形至四叉树的各个结点,然后再对每个结点的多边形进行分桶存放。
2、基于前述构建无包含关系的四叉树,再执行S2:基于包含关系判别规则为步骤S1构建的四叉树添加包含关系得到存储多边形包含关系的四叉树索引。
其中,地表覆盖矢量数据中的复杂多边形与其中的空洞多边形之间的嵌套包含关系复杂,这种嵌套包含关系类似于父子关系,通过父与子,子与孙间的序关系来表达多边形之间嵌套包含关系。如图1中H的父多边形为F,F与H互为父多边形与子多边形,H与C不存在直接包含关系(H为C的孙子多边形)。子边形被包围在父多边形的相应内环(Ring inParent,RIP)中,如图2中多边形F包含在C中的内环rc1中,内环是父多边形和子多边形之间的内在联系,同时内环也是多边形复杂包含的体现。因此,一个多边形的直接包含关系可表达为:{父多边形,在父多边形中相应的环,包含的子多边形}。本发明设定了以下4条判别规则可确定多边形间的包含关系,即若多边形P1直接包含多边形P2,则多边形P2是多边形P1的子多边形:
规则1:多边形P1中有内环;
规则2:多边形P2的最小外接矩形MBR被多边形P1的最小外接矩形MBR包含,且同时与P1的某一内环r的最小外接矩形MBR相交;
规则3:至少存在一个内环r使得多边形P2上任意一点在规则2中内环r的环内或环上;其中,在P2上任取一点,若该点在规则2的内环r的环内或环上,则视为满足规则3。
规则4:不存在既包含多边形P2,同时最小外接矩形MBR小于多边形P1的最小外接矩形MBR的多边形P3。
为索引结点中的多边形添加包含关系信息,需要遍历索引中的所有多边形对象,并从当前对象所在结点开始根据包含关系判别规则向根搜索并判别父多边形,将父多边形信息写入当前对象的PP中,并在RIPID中记录当前多边形对象在PP中的内环,同时将该多边形加入到父多边形PP的CPL列表中。
索引中添加包含关系后,扫描索引结点中多边形对象的CPL数组,利用多边形面积属性判别复杂多边形内环的铺满情况,对未铺满的内环,建立内环虚拟多边形对象,并插入到索引中。至此,完成了存储包含关系索引初始状态的建立,如图2中(b)为图2中(a)所示地表覆盖示例数据对应的四叉树索引及多边形C、F、T对象的包含关系及其相应的CPL(设TNum为2)。图2中(a)中rc1、rc2、rc3、rf1、rf2及rq1分别为多边形C、F及Q的内环,其中内环rc2和rq1是未铺满的内环,因此建立相应的内环虚拟多边形对象vp1和vp2,x区域为空白区域,没有包含在任何多边形内,无需建立内环虚拟多边形对象。图2中(b)中索引的根结点各桶中的多边形对象为:XYL桶:B、C、F、vp1;XpL桶:
Figure BDA0001989957870000111
XnL桶:S;YpL桶:H、G;YnL桶:
Figure BDA0001989957870000112
本发明基于上述四叉树进行索引,本发明提供的索引操作方法主要包括:索引查询、索引中删除多边形对象及索引中插入多边形对象。
其中,索引查询是最为基础的操作方法。索引查询操作包含点查询操作和区域查询操作,点查询过程为:
S11:自根向下的顺序搜索四叉树判断结点的OMBR是否包含查询点;
若包含查询点,则对子树结点进行继续执行S11以及判断当前结点的各个桶表对应的最小外接矩形MBR是否包含所述查询点,若包含,则判断对应桶表内的多边形的最小外接矩形MBR是否包含所述查询点,若包含,则将所述多边形加入到候选多边形集;如不满足,则所述多边形不是候选多边形;
若当前结点的最小外接矩形MBR不包含查询点,不对所述子树节点执行S11;
S12:在候选多边形集中查找满足查询点在外环内的多边形P,所述多边形P为非虚拟多边形;
S13:遍历候选多边形集中是否存在多边形P的子多边形且满足查询点在所述子多边形外环内,若存在且所述子多边形不是虚拟多边形,将所述子多边形作为新多边形P;
S14:重复S13直至没有多边形P的子多边形满足对应条件,多边形P为查询结果。
所述区域查询过程如下:
S21:自根向下的顺序搜索四叉树判断结点的OMBR是否与查询窗口相交;
若相交,则对子树结点进行继续执行S21,以及判断当前结点中各个桶表对应的最小外接矩形MBR是否与查询窗口相交,若相交,则依次判断所述桶表中多边形的最小外接矩形MBR是否与查询窗口相交,若相交,则将所述多边形加入到候选多边形集中;
若当前结点的最小外接矩形MBR不与查询窗口相交,不对所述子树结点执行S21;
S22:遍历候选多边形集中的多边形,将外环与查询窗口相交的除内环虚拟多边形外的多边形加入查询结果集;
S23:遍历候选多边形集中的多边形,若所述多边形在候选集中的子多边形的内环RIP与查询窗口相交,则将所述多边形及所述子多边形加入查询结果集;
S24:遍历剩余候选多边形集中除内环虚拟多边形外的多边形,若查询窗口任取一点在其外环内且不在所述多边形在候选集中的子多边形的内环RIP内,则所述多边形加入到查询结果集;
其中,内环RIP表示子多边形的父多边形包围所述子多边形的相应内环。
索引中删除多边形对象操作是从研究区域中删除一个多边形时索引的关联操作,索引中删除一个多边形对象(设该多边形为g)的过程为:
S31:从四叉树索引中查询多边形g所在的结点,并返回该结点及多边形g的位置;
S32:根据多边形g的父多边形指针,从父多边形对象的子多边形列表中删除多边形g,并判断以多边形g的内环RIPID构建虚拟多边形对象是否已存在,若不存在,则构建并插入索引;
其中,内环RIPID表示多边形g在父多边形中相应的内环序号;
S33:遍历多边形g的子多边形信息,根据每个子多边形的指针,从子多边形对象中删除父多边形信息;
S34:从当前结点中删除g,并判断当前结点是否为叶子结点,若是,执行S35;若不是,四叉树索引中多边形g删除操作完成;
S35:判断父结点与兄弟结点中多边形的数量和是否不大于结点分裂阈值Tnum,若是,进行将父结点和兄弟结点的所有多边形对象移入父结点的对应桶表中,并将其父结点所有子树置空;若不是,四叉树索引中多边形g删除操作完成;
S36:递归S35直到不再需要结点合并。其中,完成一次结点合并后,新生成的叶子结点仍满足S35的情形,因此需要继续合并结点。
从图2(a)中删除多边形I后(如图3中(a)所示),使得I的RIP中多边形未铺满,建立该RIP的内环虚拟多边形vp3并插入到索引中,设Tnum=2,索引中删除I后索引无需进行结点合并操作,索引如图3中(c)所示。继续删除多边形T、J后(如图3中(b)右所示),由于T、J的RIP相应的内环虚拟多边形对象已存在,无需重复,索引中删除T、J后需要进行结点合并操作,合并后的索引如图3中(d)所示。需要说明的是,本发明是建立该RIP的内环虚拟多边形vp3并插入到索引,而不根据多边形I的外环建立虚拟多这形能减少建立虚拟多边形的代价,如继续删除T、J后无需进行虚拟多边形的合并,避免了不必要的计算开销。
索引中插入多边形对象操作是在索引中查询插入位置,并将该对象插入到索引中,维护相关多边形的包含关系。索引中插入一个多边形对象(设该多边形为g)的过程为:
S41:从四叉树索引中查询多边形g应插入的结点N,并插入到结点N相应的桶表中;
S42:根据包含关系判别规则从结点N开始向根结点搜索父多边形并添加父子索引信息,并判别是否需要删除父多边形相应的虚拟多边形对象;
S43:根据包含关系判别规则,从结点N开始向叶结点搜索多边形g的子多边形并添加父子索引信息;
S44:判断所述结点N是否为叶子节点,若是,判断插入子多边形是否会引起结点分裂,若会,根据步骤S1中方法划分结点N并按结点划分终止条件停止结点分裂;若不是叶子节点,则多边形g插入完成。
其中,需要说明的是,插入多边形对象是上述步骤S1中应插入的索引结点中插入多边形,并非指空间数据的插入多边形。即索引操作中插入多边形对象与增量更新是不同的,当一个增量多边形更新基态数据时,首先需要利用本索引查找需要更新的基态多边形(即查询与增量多边形相交的基态多边形集),并将这些需要更新的多边形从索引中删除,然后计算基态多边形更新后的新多边形(基态多边形被增量多边形裁剪后生成新多边形),并将新多边形插入到索引中。在删除和插入多边形的同时维护包含关系。本发明索引方法中插入多变形也仅仅是考虑到索引中多边形的变化,空间多边形引发的基态多边形在增量更新过程的已经被考虑了。
图4中(a)中显示图3中(b)中删除多边形后,用增量多边形P1进行更新的结果。增量多边形P1与基态多边形B、C及内环虚拟多边形vp1相交,与B交于外环,与C交与rc2和B的RIP两个内环。裁剪C(只裁剪相交的环)得C1及新内环rc4,C1继承C所有未参与裁剪的内环及子多边形,裁剪B得B1、B2,B1继承B未参与裁剪的内环及子多边形(因为与B2无交)。通过面积属性知内环rc4未铺满子多边形,建立内环虚拟多边形vp4。最后从索引中删除多边形C、B、vp1,将多边形对象C1、B1、B2、P1及vp4插入到索引中,如图4中(b)所示。图4(b)中索引的根结点各桶中的多边形对象为:XYL桶:C1、F、vp4;XpL桶:B1、P1;XnL桶:S;YpL桶:H、G;YnL桶:B2
应用操作与仿真
主要包括三项内容:1)建立存储包含关系四叉树索引的应用系统的实现;2)存储包含关系的四叉树索引查询操作的实现与验证;3)利用存储包含关系的四叉树索引对地表覆盖复杂多边形数据进行增量更新实验。下面分别阐述这三个环节的具体实施方式。
1)建立存储包含关系四叉树索引的应用系统的实现
发明人采用微软Win10操作系统,以VS2013为开发平台,利用C#语言编程,硬件环境为联想杨天A8000微型计算机,CPU为i7-7700,内存为16GB。实现了存储包含关系四叉树索引建立、利用该进行增量更新等功能的增量更新原型系统。
实验采用的数据为用陕西省2000年和2009年两景轨道号为127034的LandsatETM+/TM30m分辨率遥感影像数据。影像覆盖范围为北纬36.5412°~38.3987°、东经108.3241°~110.8301°。用比值法、NDVI差值法、PCA差异法求并的结果影像作为初始变化信息并对其分类,采用项目组开发的分类后遥感影像自动矢量化与伪变化剔除组件进行自动矢量化并剔除伪变化,生成原始基态矢量数据和增量矢量数据(如图5的(a),(b)所示)。该矢量数据采用地表覆盖数据常用的Shapefile格式进行存储,多边形总数为104230个,数据中普遍存在包含大量空洞的复杂多边形,其中最复杂的多边形包含5573个空洞。增量矢量数据为简单即不包含空洞的多边形。为实验需要,对获取的矢量基态数据分别以不同最小面积进行剔除合并,生成不同多边形数量的矢量基态数据。对不同多边形数量的基态数据建立索引,索引建立所用时间与Wei等提出的CIF四叉树索引进行对比结果如表1所示。表1中建立索引时四叉树结点分裂阈值为10。阈值的设定是由四叉树索引插入和删除操作的频率根据经验来设定,阈值过大会使四叉树查询趋近线性查询,过小会造成插入和删除时结点频繁分裂或合并,增加维护结点的时间开销。本发明提出的索引建立的主要时间开销和空间开销为包含关系的建立与存储,因此索引建立时间相对于CIF四叉树索引建立时间较长,同时,由于包含关系的存储索引空间开销也较大,平均约占原始数据的8%左右。同时本发明提出的索引存储了包含关系及内环虚拟多边形对象,因此,存储空间也大于后者。
Figure BDA0001989957870000151
表1存储包含关系的四叉树索引建立的时间
2)存储包含关系的四叉树索引的查询操作实现与验证;
发明人采用微软Win10操作系统,以VS2013为开发平台,利用C#语言编程,硬件环境为联想杨天A8000微型计算机,CPU为i7-7700,内存为16GB,实现了索引查询操作,并建立Wei提出的CIF四叉树索引(CIF索引)与存储包含关系的四叉树索引(本发明索引)进行对比。查询实验分为点查询和区域查询,先在实验数据区域内随机生成100个查询点和100个大小不等位置随机的查询窗口,然后在原始基态矢量数据(多边形数量为104230个)中运用上述两种索引分别进行点查询和区域查询,并记录查询的时间和。实验共进行了5次,查询实验结果如表2所示,表中时间为平均每个点(区域)查询所需时间。实验结果表明,本发明提出的索引比Wei提出的索引的查询效率有显著提高。
Figure BDA0001989957870000152
表2本发明索引与CIF索引进行查询时间对比
实验结果表明,存储包含关系的四叉树索引比索引的查询效率有显著提高,验证了本发明的有效性。
3)利用存储包含关系的四叉树索引对地表覆盖复杂多边形数据进行增量更新实验
发明人采用微软Win10操作系统,以VS2013为开发平台,利用C#语言编程,在联想杨天A8000微型计算机,CPU为i7-7700,内存16GB实验平台上进行了实验验证。实验先从增量数据中随机选择了181个增量多边形,然后对在图5(a)所示原始基态矢量数据及以不同最小面积进行剔除合并生成的不同多边形数量的矢量基态数据进行增量更新实验,记录更新过程中相关索引操作的次数,并与Wei提出的CIF四叉树索引进行对比。实验结果如表3所示。表3中的最大环数是指基态多边形中最复杂的多边形所具有的空洞数。
Figure BDA0001989957870000161
表3利用本发明索引与CIF四叉树索引进行增量更新的时间对比
从表3实验结果可以看出,利用存储包含关系的四叉树索引进行增量更新实验能明显提高更新的效率,增量更新效率数倍于传统四叉树索引方法,且随着数据量的增加效率提高更明显。利用传统的CIF四叉树索引进行更新时,更新过程中需要对复杂目标所有包含的内环进行遍历,依次裁剪更新。但事实上,对于包含大量空洞的复杂基态多边形来说,与增量多边形相交的内环数远远小于空洞数。因此,对于与增量多边形不相交的内环来说,这种裁剪是不必要的。本发明利用索引中存储的包含关系,能快速确定基态多边形与增量多边形相交的内环,更新过程中能有效地避免不必要的时间开销,提高了更新效率,为增量过程提供基础。实验结果验证了本发明的有效性。
应该说明的是以上实施方法仅用来说明本发明的技术方案而非限制。需要强调的是,本发明所述的实例是说明性的,而不是限定性的,因此本发明不限于具体实施方式中所述的实例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,不脱离本发明宗旨和范围的,不论是修改还是替换,同样属于本发明的保护范围。

Claims (9)

1.一种存储多边形包含关系的四叉树构建方法,其特征在于:包括如下步骤:
S1:基于待研究区域数据构建无包含关系的四叉树;其中待研究区域数据为地表覆盖数据;
采用CIF四叉树构建方法构建待研究区域数据中的所有多边形与四叉树结点的对应关系,并基于多边形与结点象限划分线的相交关系依次将除叶子节点之外的每个结点上的多边形分桶表存放,叶子节点上的多边形均存放在同一桶表内;
其中,非叶子结点与象限划分线的每一类相交关系对应一个桶表;
S2:基于包含关系判别规则为步骤S1构建的四叉树添加包含关系得到存储多边形包含关系的四叉树索引;
其中,所述包含关系判别规则用于鉴别两个多边形是否为父子关系,若是父子关系,则在对应四叉树的结点数据中添加父结点指针,以及在对应多边形的数据结构中添加父多边形或子多边形的信息;
存储多边形包含关系的四叉树中每个结点的数据至少包括:当前结点的身份标记号NID,指向父结点的指针PPtr,存放多边形的桶列表;
多边形的数据至少包括当前多边形标号、父多边形标号、当前多边形在父多边形中相应内环序号、子多边形列表;
所述四叉树索引中多边形的数据结构为:
{CP,PP,RIPID,CPL}或{CP,PP,-RIPID,Ø}
其中,CP表示当前多边形,为非内环虚拟多边形或内环虚拟多边形;
当前多边形CP为非内环虚拟多边形时,PP表示当前多边形CP的父多边形;或者当前多边形CP为内环虚拟多边形时,PP表示内环所在多边形;
当前多边形CP为非内环虚拟多边形时,RIPID表示当前多边形CP在父多边形PP中相应的内环RIP序号,CPL表示当前多边形CP的子多边形列表数组;
当前多边形CP为内环虚拟多边形时,-RIPID表示对应内环在内环所在多边形PP中的序号;
其中,内环虚拟多边形依据多边形内环中空间未铺满的区域构建。
2.根据权利要求1所述的方法,其特征在于:所述包含关系判别规则为:设P1、P2为两个多边形,若多边形P1直接包含多边形P2,则多边形P2是多边形P1的子多边形,其中,需满足如下规则1-规则4:
规则1:多边形P1中有内环;
规则2:多边形P2的最小外接矩形MBR被多边形P1的最小外接矩形MBR包含,且同时与P1的某一内环r的最小外接矩形MBR相交;
规则3:至少存在一个内环r使得多边形P2上任取一点在规则2中内环r的环内或环上;
规则4:不存在既包含多边形P2,同时最小外接矩形MBR小于多边形P1的最小外接矩形MBR的多边形P3。
3.根据权利要求1所述的方法,其特征在于:步骤S1中非叶子结点上根据结点象限划分线设定了XpL桶表、XnL桶表、YpL桶表、YnL桶表、XYL桶表;
其中,非叶子结点的多边形对象分桶表存放的规则如下:
结点中多边形仅与所述结点所在象限划分线的X轴正轴相交,则将所述多边形存放在所述结点的XpL桶表中;
结点中多边形仅与所述结点所在象限划分线的X轴负轴相交,则将所述多边形存放在所述结点的XnL桶表中;
结点中多边形仅与所述结点所在象限划分线的Y轴正轴相交,则将所述多边形存放在所述结点的YpL桶表中;
结点中多边形仅与所述结点所在象限划分线的Y轴负轴相交,则将所述多边形存放在所述结点的YnL桶表中;
结点中多边形与所述结点所在象限划分线的X、Y轴均相交,则将所述多边形存放在所述结点的XYL桶表中。
4.根据权利要求1所述的方法,其特征在于:步骤S1中构建无包含关系的四叉树为采用结点划分规则并按照从根节点往下的顺序递归划分结点直至满足结点划分终止条件得到所述待研究区域对应的四叉树;
其中,所述结点划分规则为:
若结点非叶子结点,按照如下A-B的步骤执行:
A:基于象限划分以及当前结点的范围最小外接矩形NMBR从当前节点向下划分出四个象限子树并得到四个子树结点,其中,将当前结点的范围最小外接矩形NMBR依照象限位置等分为四份得到每个象限子树的最小外接矩形MBR;
B:分别识别当前结点继承的每个多边形的最小外接矩形MBR是否被四个象限子树的最小外接矩形MBR包围,若是,则将所述多边形存入相应子树;否则,所述多边形与当前结点的象限划分线相交,并基于相交的象限划分线存入当前结点对应桶表内;
若结点为叶子结点,则将叶子结点继承的所有多边形存放在同一桶表中。
5.根据权利要求4所述的方法,其特征在于:若结点为根节点,则结点的范围最小外接矩形NMBR为待研究区域所有矢量多边形的最小外接矩形MBR的并;
若结点为非根节点,则结点的范围最小外接矩形NMBR为当前结点及其子树中多边形MBR的并。
6.根据权利要求1所述的方法,其特征在于:所述四叉树索引中结点的数据结构为:
{NID,NMBR,OMBR,Subtrees,Depth,PPtr,XYL,XpL,XnL,YpL,YnL};
其中,NID为当前结点的ID号,NMBR为当前结点的范围最小外接矩形,OMBR为当前结点所存储的复杂多边形对象的范围,Subtrees为当前结点的子树,Depth为当前结点层次,PPtr为指向父结点的指针,XYL、XpL、XnL、YpL、YnL均为存放多边形对象的桶表。
7.一种基于权利要求1-6任一项所述方法的索引方法,其特征在于:根据查询点或查询区域来查询与所述查询点或所述查询区域相交的多边形;
其中,点查询过程包括如下步骤:
S11:自根向下的顺序搜索四叉树判断结点的OMBR是否包含查询点;
若包含查询点,则对子树结点进行继续执行S11以及判断当前结点的各个桶表对应的最小外接矩形MBR是否包含所述查询点,若包含,则判断对应桶表内的多边形的最小外接矩形MBR是否包含所述查询点,若包含,则将所述多边形加入到候选多边形集;如不满足,则所述多边形不是候选多边形;其中,OMBR为当前结点所存储的复杂多边形对象的范围;
若当前结点的最小外接矩形MBR不包含查询点,不对所述子树节点执行S11;
S12:在候选多边形集中查找满足查询点在外环内的多边形P,所述多边形P为非虚拟多边形;
S13:遍历候选多边形集中是否存在多边形P的子多边形且满足查询点在所述子多边形外环内,若存在且所述子多边形不是虚拟多边形,将所述子多边形作为新多边形P;
S14:重复S13直至没有多边形P的子多边形满足对应条件,多边形P为查询结果;
所述区域查询过程如下:
S21:自根向下的顺序搜索四叉树判断结点的OMBR是否与查询窗口相交;
若相交,则对子树结点进行继续执行S21,以及判断当前结点中各个桶表对应的最小外接矩形MBR是否与查询窗口相交,若相交,则依次判断所述桶表中多边形的最小外接矩形MBR是否与查询窗口相交,若相交,则将所述多边形加入到候选多边形集中;
若当前结点的最小外接矩形MBR不与查询窗口相交,不对所述子树结点执行S21;
S22:遍历候选多边形集中的多边形,将外环与查询窗口相交的除内环虚拟多边形外的多边形加入查询结果集;
S23:遍历候选多边形集中的多边形,若所述多边形在候选集中的子多边形的内环RIP与查询窗口相交,则将所述多边形加入查询结果集;
S24:遍历剩余候选多边形集中除内环虚拟多边形外的多边形,若查询窗口任取一点在其外环内且不在所述多边形在候选集中的子多边形的内环RIP内,则所述多边形加入到查询结果集;
其中,内环RIP表示子多边形的父多边形包围所述子多边形的相应内环。
8.根据权利要求7所述的方法,其特征在于:还包括从四叉树索引中删除多边形g,其过程如下:
S31:从四叉树索引中查询多边形g所在的结点,并返回该结点及多边形g的位置;
S32:根据多边形g的父多边形指针,从父多边形对象的子多边形列表中删除多边形g,并判断以多边形g的内环RIPID构建虚拟多边形对象是否已存在,若不存在,则构建并插入索引;
其中,内环RIPID表示多边形g在父多边形中相应的内环序号;
S33:遍历多边形g的子多边形信息,根据每个子多边形的指针,从子多边形对象中删除父多边形信息;
S34:从当前结点中删除g,并判断当前结点是否为叶子结点,若是,执行S35;若不是,四叉树索引中多边形g删除操作完成;
S35:判断父结点与兄弟结点中多边形的数量和是否不大于结点分裂阈值Tnum,若是,进行将父结点和兄弟结点的所有多边形对象移入父结点的对应桶表中,并将其父结点所有子树置空;若不是,四叉树索引中多边形g删除操作完成;
S36:递归S35直到不再需要结点合并。
9.根据权利要求7所述的方法,其特征在于:还包括在四叉树索引中插入多边形g,其过程如下:
S41:从四叉树索引中查询多边形g应插入的结点N,并插入到结点N相应的桶表中;
S42:根据包含关系判别规则从结点N开始向根结点搜索父多边形并添加父子索引信息,并判别是否需要删除父多边形相应的虚拟多边形对象;
S43:根据包含关系判别规则,从结点N开始向叶结点搜索多边形g的子多边形并添加父子索引信息;
S44:判断所述结点N是否为叶子节点,若是,判断插入子多边形是否会引起结点分裂,若会,根据步骤S1中方法划分结点N并按结点划分终止条件停止结点分裂;若不是叶子节点,则多边形g插入完成。
CN201910177251.XA 2019-03-08 2019-03-08 一种存储多边形包含关系的四叉树构建方法及索引方法 Active CN111666361B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910177251.XA CN111666361B (zh) 2019-03-08 2019-03-08 一种存储多边形包含关系的四叉树构建方法及索引方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910177251.XA CN111666361B (zh) 2019-03-08 2019-03-08 一种存储多边形包含关系的四叉树构建方法及索引方法

Publications (2)

Publication Number Publication Date
CN111666361A CN111666361A (zh) 2020-09-15
CN111666361B true CN111666361B (zh) 2023-03-21

Family

ID=72382285

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910177251.XA Active CN111666361B (zh) 2019-03-08 2019-03-08 一种存储多边形包含关系的四叉树构建方法及索引方法

Country Status (1)

Country Link
CN (1) CN111666361B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023168568A1 (zh) * 2022-03-07 2023-09-14 华为技术有限公司 用于处理和搜索二维平面场景中的对象的方法
CN115422196B (zh) * 2022-09-05 2023-08-18 河南工业大学 一种矢量数据拓扑关系检查方法
CN117151020B (zh) * 2023-10-31 2024-01-12 北京智芯仿真科技有限公司 基于四叉树的覆铜形状相交状态快速判断方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092992A (zh) * 2013-02-17 2013-05-08 南京师范大学 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法
CN105630968A (zh) * 2015-12-23 2016-06-01 华中师范大学 面向Cassandra的分布式可扩展四叉树索引机制及基于该机制的查询方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8386468B2 (en) * 2010-08-26 2013-02-26 Oracle International Corporation Spatial query processing with query window index

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103092992A (zh) * 2013-02-17 2013-05-08 南京师范大学 基于Key/Value型NoSQL数据库的矢量数据先序四叉树编码和索引方法
CN105630968A (zh) * 2015-12-23 2016-06-01 华中师范大学 面向Cassandra的分布式可扩展四叉树索引机制及基于该机制的查询方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
X.G. Zhou, etc..A QUADTREE SPATIAL INDEX METHOD WITH INCLUSION RELATIONS FOR THE INCREMENTAL UPDATING OF VECTOR LANDCOVER DATABASE.2018,第XLII-4卷全文. *

Also Published As

Publication number Publication date
CN111666361A (zh) 2020-09-15

Similar Documents

Publication Publication Date Title
Snoeyink Point location
CN111666361B (zh) 一种存储多边形包含关系的四叉树构建方法及索引方法
Hu et al. Efficient 3-d scene analysis from streaming data
De Floriani et al. Intervisibility on terrains
CN112181991B (zh) 基于快速构建kd树的地球模拟系统网格重映射方法
CN114529633B (zh) 一种支持gis线对象和面对象连续lod绘制的方法
Roumelis et al. New plane-sweep algorithms for distance-based join queries in spatial databases
CN106204719B (zh) 基于二维邻域检索的三维场景中海量模型实时调度方法
CN102306106A (zh) 虚拟空间导航图自动生成方法与系统及其寻路方法与系统
Rodríguez Inconsistency issues in spatial databases
CN113032404B (zh) 一种面向地表覆盖数据的图斑变化轨迹提取方法与系统
CN110083670B (zh) 一种基于路段密度的地图网格划分方法
US4811244A (en) Drawing information management system
CN113034515A (zh) 基于包围盒树的多边形裁剪方法、电子设备及存储介质
Hamdi et al. A pattern growth-based approach for mining spatiotemporal co-occurrence patterns
CN116090395A (zh) 数据处理方法、数据结构的生成方法、查询方法
CN112362073B (zh) 一种基于凸包特征的导航路径建模及最短路径求解方法
Gold Dynamic spatial data structures-the Voronoi approach
Zhou et al. A quadtree spatial index method with inclusion relations for the incremental updating of vector landcover database
Hidaka et al. An approximation algorithm for a large-scale facility location problem
Afshani et al. Concurrent range reporting in two-dimensional space
KR20000007169A (ko) 분할된 최소 경계 사각형을 이용한 데이터 베이스 관리 방법
Oh Point location in incremental planar subdivisions
CN111709593B (zh) 一种基于弱空间约束的空间资源优化分配方法
Meijers et al. A storage and transfer efficient data structure for variable scale vector data

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant