CN102306166A - 一种移动地理信息空间索引方法 - Google Patents
一种移动地理信息空间索引方法 Download PDFInfo
- Publication number
- CN102306166A CN102306166A CN201110241074A CN201110241074A CN102306166A CN 102306166 A CN102306166 A CN 102306166A CN 201110241074 A CN201110241074 A CN 201110241074A CN 201110241074 A CN201110241074 A CN 201110241074A CN 102306166 A CN102306166 A CN 102306166A
- Authority
- CN
- China
- Prior art keywords
- index
- spatial
- node
- space
- tree
- 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.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种移动地理信息空间索引方法,其特征在于,所述的方法主要分三个步骤:(1)移动地理信息空间数据的存储;(2)移动地理信息空间索引结构的建立;(3)移动地理信息空间索引方法的设计。该方法具有使用简便、存储效率高的特点能,广泛适用于电信增值业务和计算机应用技术领域。
Description
技术领域
本发明属于电信增值业务和计算机应用技术领域,具体涉及一种移动地理信息空间索引方法。
背景技术
传统的空间索引理论的背景是在以资源丰富的PC机或服务器这样的硬件条件,存储量、CPU计算速度、屏幕显示、有线电源等都和移动设备具有很大的不同。如果直接将这些空间索引技术应用到移动GIS中,往往性能达不到原来设计的要求。
现有的技术缺点:
(1)现有的技术方法较多依赖于预先知道空间索引区域;
(2)现有的技术方法具有固定的空间区域划分,缺乏灵活性;
(3)现有的技术方法在空间数据量发生变化后需要重新建立整个空间索引结构,浪费了大量计算时间;
(4)现有的技术方法主要以硬件性能较好的台式机为平台,在移动设备上则缺乏适应性;
(5)现有的技术方法因以台式机为平台考虑,允许空间对象具有不同程度的重复存储,浪费了一定的存储量。
发明内容
为了解决现有技术存在的不足,本发明解决的技术问题是提供一种使用简便、存储效率高的移动地理信息空间索引方法。其技术方案如下:
一种移动地理信息空间索引方法,所述的方法主要分三个步骤:
(1)移动地理信息空间数据的存储:主要包括图形数据和属性数据的存储,图形数据采用本地文件的方式进行存储,采用用户系统定制的序列化二进制文件,所述序列化二进制文件在进行读存时的必须按照相同的步骤,存入的数据的类型、顺序必须与读取的该数据的数据类型、顺序相同,属性数据采用嵌入式数据系统存储,本地文件中的图形数据通过唯一标识ID与嵌入式数据库中的图形文件对应的属性表ID进行管理;
(2)移动地理信息空间索引结构的建立:DOQR索引树核心利用空间对象的外接矩形MBR代表空间对象的本身所占区域范围,按照空间区域和空间区域存储空间对象的个数进行组织存储,利用空间区域的索引,可以在进行空间信息查询、显示、分析时,从大量空间分布不均匀的空间对象中检索出某一特定区域的空间对象;
(3)移动地理信息空间索引方法的设计:在一张建有空间索引的表中,若进行空间数据插入、删除、或修改,那么在索引中也要插入,删除、或修改相应的索引记录项。
进一步优选,在步骤(2)中DOQR核心包括四个步骤:
A、在没有工作范围边界限定的全开放空间范围(简称开放空间)上,将空间对象聚集到一个开放的空间区域中,整个开放空间的根节点对应1个叶节点LNode(Leaf Node),并且将空间对象的索引记录(OID,MBR)存放到该叶节点的存储桶里即存放索引记录(OID,MBR)集合的地方;
B、当空间对象聚集到一定数量时,当再增加1个空间对象,假定四分节点阈值QM=4,总空间对象个数增加到5个时,以包含当前空间对象集的MBR中心为分割点,将空间区域划分为四个子空间,整个空间的根节点变为一个中间节点,或称四分节点,四个子空间对应四个子节点,且四个子空间也是动态开放的;
C、然后将步骤A存储桶中空间对象集中的空间对象重新进行分配,分配规则是:利用每一个空间对象的MBR,判断每一个空间对象是否与中心分割线相交;如相交,则将空间对象索引记录(OID,MBR)保存到属于中间节点的R树结构中存储桶中;如不相交,先判断每一个空间对象位于四个子空间的哪一个空间区域中,然后把每一个空间对象索引记录保存到该子空间区域对应的子节点存储桶中,以此类推,分配所有的空间对象;
D、根据空间对象分配规则,当四个子节点的任何一节点中的空间对象聚集到一定数量时,把子节点空间区域再划分为四个子空间,按照B、C、D步骤以此类推。
进一步优选,在步骤(3)中包括以下算法:
插入算法:当把一个新增的空间实体加入到建有空间索引的实体集时,需要把该实体生成的索引记录项加入到相应的空间索引DOQR树中,如果开放空间节点未“满”,则直接将新索引记录项添加到节点相应数组中;如果已“满”,则需四分开放节点,并将数组中的索引记录项同新增条目一起依次添加到新的子开放节点和R树中;
删除算法:当从空间实体集中删除了一个空间实体时,需要将相应的DOQR树中指向该实体的索引记录项也一同删除,即删除对象前先获取其索引记录项,然后利用索引记录的MBR来判断其所在的开放节点,最后进行OID匹配,匹配成功,则删除该索引项,同样地,在删除后为了维护DOQR树的性质,需要对DOQR树进行调整;
查询算法:空间查询又称空间检索、空间查找,是指从空间数据库或空间数据集合中查找出满足某一条件的空间目标的过程。根据查找的条件的不同,一般空间查询可以分为点查询和区域查询两种,点查询与区域查询过程基本相同,不同点在于,点查询结果为0或1条记录,而区域查询结果则是多条记录,在DOQR树中,空间查询是先通过查询条件筛选出候选集合,再对候选集合进行精确几何判断,从而得到查询结果;
更新策略算法:当空间实体的形状发生改变时,如果这种改变没有影响其MBR,那么对于空间索引来说,这个实体在索引中的位置不变,如果空间实体的形状变化导致其MBR的变化,那么该实体的索引记录在空间索引的位置也需要做相应的调整,一般空间索引更新方法都采用先删除旧的索引记录项,然后插入更新后的索引记录项,DOQR树删除操作是局部定位调整更新,不会影响整个索引结构的稳定性。
本发明的有益效果:
(1)本发明移动地理信息空间索引方法具有不受空间索引区域限制的特点,可以不预先知道需要索引的地理信息的区域边界,适合移动GIS采集数据动态变化的需要;
(2)本发明移动地理信息空间索引方法具有动态开放性,空间索引的外接矩形区域边界随着空间数据的变化而动态变化,符合移动GIS采集数据动态变化的需要;
(3)本发明移动地理信息空间索引方法具有相对的稳定性,空间数据发生了变化,空间索引结构不需要重新构建,对移动设备而言,减少了索引结构频繁操作的时间;
(4)本发明移动地理信息空间索引方法具有较好的逻辑结构组织效率,具有较快的空间数据索引结构构建、查询、插入、删除算法速度,适合移动设备的硬件特性;
(5)本发明移动地理信息空间索引方法具有非冗余的空间索引存储结构,适应不同类型的空间对象(点状、线状、面状),同一空间对象在空间索引结构中不重复存储,适合移动设备存储量小的特点。
附图说明
图1是本发明移动地理信息空间索引方法中DOQR核心思想示意图;
图2是本发明移动地理信息空间索引方法中DOOR树二维空间划分平面图;
图3是本发明发明移动地理信息空间索引方法中图2对应的DOOR结构图;
图4是本发明发明移动地理信息空间索引方法中DOQR树UML关系图;
图5是本发明移动地理信息空间索引方法中比较DQQR树与R树的性能随机数据运行点对象随机生成图;
图6是本发明移动地理信息空间索引方法中比较DQQR树与R树的性能随机数据运行线对象随机生成图;
图7是本发明移动地理信息空间索引方法中比较DQQR树与R树的性能随机数据运行面对象随机生成图;
图8是本发明移动地理信息空间索引方法中比较DQQR树与R树的性能真实数据运行全局真实地图数据图;
图9是本发明移动地理信息空间索引方法中比较DQQR树与R树的性能真实数据运行放大后真实地图;
图10是本发明移动地理信息空间索引方法中二维地图数据插入测试结果图;
图11是本发明移动地理信息空间索引方法中二维地图数据查询测试结果图。
具体实施方式
下面结合附图与具体实施方式对本发明作进一步详细地说明。
发明移动地理信息空间索引方法主要分三个步骤:
(1)移动地理信息空间数据的存储;(2)移动地理信息空间索引结构的建立;(3)移动地理信息空间索引方法的设计。
一、移动地理信息空间数据的存储
移动地理信息空间数据的存储主要包括图形数据和属性数据的存储。
(1)本地文件
本索引方法图形数据采用本地文件的方式进行存储。文件是由大量性质相同的记录组成的集合。由于文件的数据量很大,所以一般存放在外存上,因此文件可以是指存储在外部介质中的数据的集合。本索引方法采用用户系统定制的序列化二进制文件。该文件在读取、存储的效率要比普通的系统文件要快得多。序列的二进制文件在进行读存时的必须按照相同的步骤,存入的数据的类型、顺序必须与读取的该数据的数据类型、顺序相同,否则会停止读取。
(2)嵌入式数据库
本索引方法属性数据采用嵌入式数据系统存储,本地文件中的图形数据通过唯一标识ID与嵌入式数据库中的图形文件对应的属性表ID进行管理。嵌入式数据库系统是指支持移动计算或某种特定计算模式的数据库管理系统,它通常与操作系统和具体应用集成在一起,运行在智能型嵌入式设备和移动设备上。嵌入式数据库具有以下特点:微小内核,占用磁盘空间小、占用系统资源少;具有可靠性,可管理性和安全性;互操作性,可移植性;能与应用软件相结合,是程序驱动式的等。利用嵌入数据的这些特点,当对属性数据管理时,查询效率相当方便,只需sql语句。
二、移动地理信息空间索引结构的建立
(一)DOQR索引方法核心思想
1)地理信息空间区域的划分
现有的网格系列索引和四叉树系列索引时必须给定索引区域范围,当空间对象范围超过整个索引空间时,这些方法都不得不重新构造索引,可调性差。本方法按空间对象区域划分的,DOQR索引树的构建无需提前给定空间区域,只与空间对象的外接矩形MBR(minimumbounding rectangle)以及插入的顺序有关。因此,任意插入空间对象不会对DOQR树索引结构造成毁灭性破坏。
2)DOQR基本思路
DOQR索引树核心思想是利用空间对象的外接矩形MBR代表空间对象的本身所占区域范围,按照空间区域和空间区域存储空间对象的个数进行组织存储,利用空间区域的索引,可以在进行空间信息查询、显示、分析时,从大量空间分布不均匀的空间对象中检索出某一特定区域的空间对象,从而减少空间信息查询、显示、分析的空间对象个数,从而提高效率。
3)DOQR核心思想
DOQR核心思想是:
A、在没有工作范围边界限定的全开放空间范围(简称开放空间)上,将空间对象聚集到一个开放的空间区域中,整个开放空间的根节点对应1个叶节点LNode(Leaf Node),并且将空间对象,例如图1中的r1,r2,r3,r4,的索引记录(OID,MBR)存放到该叶节点的存储桶里即存放索引记录(OID,MBR)集合的地方;
B、当空间对象聚集到一定数量时,例如图1中,原有r1,r2,r3,r4,当再增加1个空间对象r5,总空间对象个数增加到5个时,假定四分节点阈值QM=4,以包含当前空间对象集的MBR中心为分割点,将空间区域划分为四个子空间,整个空间的根节点变为一个中间节点(或称四分节点),四个子空间对应四个子节点,西北ONW,东北ONE,西南OSW,东南OSE,且四个子空间也是动态开放的。
C、然后将该(A步骤)中存储桶中空间对象集中的空间对象重新进行分配,分配规则是:利用每一个空间对象的MBR,判断每一个空间对象是否与中心分割线相交;如相交,如图1中的r4和r5,则将空间对象索引记录(OID,MBR)保存到属于中间节点的R树结构中存储桶中;如不相交,如图1中的r1、r2、r3,先判断每一个空间对象位于四个子空间的哪一个空间区域中,如r1位于OSW子空间,r2位于OSE子空间,然后把每一个空间对象索引记录保存到该子空间区域对应的子节点存储桶中,以此类推,分配所有的空间对象。
D、根据空间对象分配规则,当四个子节点的任何一节点中的空间对象聚集到一定数量时,把子节点空间区域再划分为四个子空间,按照B、C、D步骤以此类推。
4)DOQR索引树示例
图2是以DOQR树结构的简单范例,节点阈值QM=4(节点含空间对象最大个数),四分节点(中间节点)包含的的R树节点构建阈值条件Rm=2(R树节点含空间对象最小个数),RM=3(R树节点含空间对象最大个数)。图2是根据空间对象增加的顺序,DOQR树二维空间划分平面图,图3是与图2对应生成的DOQR树结构图。
在图2中,r1,r2,r3....r14表示空间对象的外接矩形,也表示空间对象本身所占的空间区域,1,2,3.....14表示空间对象出现的顺序。DOQR树的节点阈值QM=4,表示每个四分节点所含空间对象的最大个数。
如图2所示,按照DOQR索引树结构的核心思想:
(1)如图2所示,当在没有工作范围边界限定的全开放空间范围内,增加空间对象r1,r2,r3,r4时,整个开放空间的根节点对应1个根叶节点LNode,并且将空间对象r1,r2,r3,r4的索引记录(OID,MBR)存放到该叶节点的存储桶里;
(2)当增加空间对象r5后,根叶节点LNode包含的空间对象的个数超出QM=4,需要进行节点分裂,以包含r1,r2,r3,r4,r5空间对象集的MBR中心点P0为分割点,将空间区域划分为四个子空间,整个空间的根节点由1个叶节点LNode变为一个中间节点(或称四分节点)ORoot0,四个子空间对应由根节点ORoot0分裂出的四个子叶节点(西北ONW1,东北ONE2,西南OSW3,东南OSE4),如图2、图3所示,且四个子空间的MBR也是动态开放的;
(3)然后将(1步骤)中叶节点LNode(ORoot0转为四分节点之前)存储桶中空间对象集中的空间对象(r1,r2,r3,r4,r5)重新进行分配,分配规则是:利用每一个空间对象的MBR,判断每一个空间对象是否与中心分割线相交;如相交,如图2中的r2,r4和r5,则将r2,r4,r5空间对象的索引记录(OID,MBR)保存到属于中间节点ORoot0的R树结构Rt0的存储桶中;如不相交,如图3中的r1、r3,先判断每一个空间对象位于四个子空间(ONW1,ONE2,OSW3,OSE4)中的哪一个空间区域中,如r1位于子空间ONW1中,r3位于OSW3子空间中,然后把r1空间对象的索引记录保存到子空间ONW1叶节点存储桶中,把r3空间对象的索引记录保存到子空间OSW3叶节点存储桶中;
(4)执行完(3)步骤后,在根节点ORoot0包含的R树结构Rt0存储桶中已存有3个索引记录(r2,r4,r5),在四个子空间叶节点ONW1已存1个索引记录(r1),子叶节点ONE2中已存0个,子叶节点OSW3中已存1个(r3),子叶节点OSE4中已存0个;
(5)按照空间对象的添加顺序,当增加空间对象r6后,需要将r6的索引记录进行分配,按照第(3)步的分配规则,如图2所示,r6位于子空间ONE2中,把r6的索引记录存储到子叶节点ONE2存储桶中。同理,按照空间对象增加的顺序,r7,r8也都位于子空间ONE2中,因此把r7、r8的索引记录也分别存储到子叶节点ONE2存储桶中;
(6)继续增加空间对象r9后,根据第(3)步的分配规则,r9与根节点ORoot0的中心点P0分割线(通过P0中心点的水平与垂直线)相交,如图3所示,把r9的索引记录存储到根节点ORoot0所含的R数据结构Rt0存储桶中。这时,根据R树结构的构建条件(Rm=2,RM=3),现在根节点ORoot0所含的R数据结构根节点Rt0存储桶中已存储4个索引记录(r2,r4,r5,r9),超出RM=3阈值,需要进行R树的节点分裂,按照R树结构的节点分裂规则,R树根节点Rt0分裂为两个子节点R1和R2,并且把存储在R树根节点Rt0存储桶中的r2,r4,r5,r9索引记录,分配到Rt0根结点的两个子节点R1和R2中,根据R树结构分配规则,r2和r9存储到R树字节点R1中,r4和r5存储到R树字节点R2中;
(7)继续增加空间对象r10后,根据第(3)步的分配规则,如图2所示,r10位于子空间ONE2中,把r10的索引记录存储到子叶节点ONE2存储桶中,这时,子空间ONE2中已存储r6,r7,r8,r10;
(8)继续增加空间对象r11后,如图2所示,r11位于子空间ONE2中,把r11的索引记录存储到子叶节点ONE2存储桶中,这时,子空间叶节点ONE2中已存储5个索引记录(r6,r7,r8,r10,r11),子空间叶节点ONE2包含的空间对象的个数超出QM=4,需要进行节点分裂(原理同第2步),以包含r6,r7,r8,r10,r11空间对象集的MBR中心点P1为分割点,将ONE2节点空间区域再划分为四个子空间,ONE2节点空间的根节点由1个叶节点ONE2变为一个中间节点(或称四分节点)ONE2,四个子空间对应由节点ONE2分裂出的四个子叶节点(西北ONW5,东北ONE6,西南OSW7,东南OSE8),如图2、图3所示,且四个子空间的MBR也是动态开放的;
(9)然后将四分节点ONE2原存储桶(ONE2转为四分节点之前为叶节点)中的索引记录(r6,r7,r8,r10,r11)进行重新分配(原理同第3步),按照第3步分配规则,r6位于四分节点ONE2的再四分子叶节点ONW5空间区域中,把r6索引记录存储到子叶节点ONW5存储桶中,同理,r7位于ONE6中,把r7索引记录存储到子叶节点ONW6存储桶中,r8、r10和r11位于OSE8中,把r8、r10和r11索引记录存储到子叶节点OSE8存储桶中;
(10)继续增加空间对象r12后,按照第3步分配规则,r12与四分节点ONE2的中心点P1分割线相交,如图2所示,把r12的索引记录存储到四分节点ONE2所含的R数据结构Rt1存储桶中;
(11)继续增加空间对象r13后,按照第3步分配规则,r13位于子叶节点OSE8空间区域,把r13索引记录存储到子叶节点OSE8存储桶中,这时,子空间ONE8中已存储r8,r10,r11,r13;
(12)继续增加空间对象r14后,按照第3步分配规则,r14位于子节点OSE8空间区域,把r14索引记录存储到子叶节点OSE8存储桶中,这时,子空间ONE8中已存储5个索引记录(r8,r10,r11,r13,r14),子空间叶节点ONE8包含的空间对象的个数超出QM=4,需要进行节点分裂(原理同第2步),以包含r8,r10,r11,r13,r14空间对象集的MBR中心点P2为分割点,将ONE8节点空间区域再划分为四个子空间,ONE8节点空间的根节点由1个叶节点ONE8变为一个中间节点(或称四分节点)ONE8,四个子空间对应由节点ONE8分裂出的四个子叶节点(西北ONW9,东北ONE10,西南OSW11,东南OSE12),如图2、图3所示,且四个子空间的MBR也是动态开放的;
(13)然后将四分节点ONE8原存储桶(ONE8转为四分节点之前为叶节点)中的索引记录(r8,r10,r11,r13,r14)进行重新分配(原理同第3步),按照第3步分配规则,r8位于四分节点ONE8的再四分子叶节点ONW9空间区域中,把r8索引记录存储到子叶节点ONW9存储桶中,同理,r10位于ONE10中,把r10索引记录存储到子叶节点ONW10存储桶中,r11和r14都与四分节点ONE8的中心点P2分割线相交,如图2所示,把r11和r14的索引记录存储到四分节点ONE8所含的R树结构Rt2存储桶中。
至此,图2、图3所示的r1,r2,r3….r14供14个元素的DOQR树索引区域划分与索引结构的建立完成。
(二)DOQR树的索引结构
在以上DOQR索引方法核心思想中分别用到了以下DOQR树索引数据结构:
DOQR树是由两类节点组成,即叶节点和四分节点(也称中间节点)组成,其基本结构分别如下:
叶节点:(NUM,DMBR,E1,E2,…,EN)
四分节点:(NUM,CENTER,DMBR,RTREE,CP0,CP1,CP2,CP3)
叶节点保存一组索引记录项E(OID,MBR),DMBR是该节点中所有索引记录的MBR的最小外界矩,在插入更新中,是动态变化的。
中间节点中,CENTER是开放空间区域的中心分割点,RTREE是与该节点相关联的指向R树结构的一个指针,CPi是中间节点对应的子节点。DMBR是包含R树和四个子节点的动态空间。NUM表示当前节点中已保存的索引记录项的个数。DOQR树内部结构关系可以用图4中UML表示。
三、移动地理信息空间索引方法的设计与应用
(一)移动地理信息空间索引DOQR树算法设计
对空间索引的维护与对存储在数据库中的空间数据维护是一致的。在一张建有空间索引的表中,若进行空间数据插入、删除、或修改,那么在索引中也要插入,删除、或修改相应的索引记录项。
(1)插入算法
当把一个新增的空间实体加入到建有空间索引的实体集时,需要把该实体生成的索引记录项加入到相应的空间索引DOQR树中。如果开放空间节点未“满”,则直接将新索引记录项添加到节点相应数组中;如果已“满”,则需四分开放节点,并将数组中的索引记录项同新增条目一起依次添加到新的子开放节点和R树中。具体算法如下:
DOQR_Insert(ORoot,E)
输入:设ORoot为DOQR树的开放节点ONode
E为索引记录项(ID,MBR)
输出:插入新索引记录项的开放节点ONode
DI1设ORoot为DOQR树根节点
DI2如果ORoot是LNode(叶节点):
如果ORoot索引记录项数小于QM时,插入索引记录项E;否则,调用节点分裂算法SplitNode(见后),并重新分配E和ORoot中的所有记录,得到四分节点ORoot=SplitNode(ORoot);
DI3如果ORoot是QNode(中间节点):
调用location=ChooseLocation(见后),找出放置E的适当位置,执行DI4;
DI4如果location=-1,将E插入到节点R树中;
否则,获取ORoot子节点childNode[location]调用DOQR_Insert(childNode[location],E)。
分配索引记录项位置方法:
ChooseLocation(MBR,CX,CY)
输入:MBR为索引记录项最小外界矩形
CX,CY是QNode节点的中心分割点
输出:MBR相对中心点的位置
判断规则:以(CX,CY)为原点,建立坐标轴,将空间划分为四个象限;判断MBR坐落的具体象限:象限“Z”字型标识为0~3,当MBR与坐标轴相交时,返回-1;否则返回象限编号。当遇到点类对象这种特殊情况,如果其MBR与中心轴完全重合,则以Z字形顺序优先取值。
节点分裂算法规则如下:
DOQR_SplitNode(L)
输入:L为指向叶子节点LNode
输出:分裂生成后的中间节点QNode
SN1确定L存储个数大于QM值;
SN2新建中间节点N,将L叶节点MBR和中心点初始化N;
SN3通过ChooseLocation方法,将L中的索引记录重新插入到新节点N中;
SN4删除L,释放L占有内存,返回N。
(2)删除算法
当从空间实体集中删除了一个空间实体时,需要将相应的DOQR树中指向该实体的索引记录项也一同删除,即删除对象前先获取其索引记录项,然后利用索引记录的MBR来判断其所在的开放节点,最后进行OID匹配,匹配成功,则删除该索引项。同样地,在删除后为了维护DOQR树的性质,需要对DOQR树进行调整。具体算法如下:
DOQR_Delete(ref ORoot,E)
ORoot为DOQR树的开放节点ONode,E为索引记录项,结果返回TRUE或FALSE
DD1设ORoot为根节点;
DD2如果ORoot是叶节点,判断ORoot是否记录在E,包含则删除记录项E,执行DD7;
DD3如果ORoot是中间节点,则通过ORoot中心分割点判断E的位置,执行DD4~DD7;
DD4如果E在中间节点关联的R树中,则调用R树删除算法;删除成功,跳到DD6节点压缩;
DD5如果E在ORoot的子节点Ni中,则调用递归算法DOQR_Delete(ref Ni,E);删除成功,执行DD6节点压缩;
DD6压缩ORoot:如果ORoot内索引记录项个数小于等于阈值QM时,即满足DOQR树叶节点要求,则将ORoot中的所有索引记录添加到新的叶子节点L中,释放ORoot占有的内存,并且使ORoot指向L,最终中间节点压缩为叶节点,更新完毕返回TRUE;当大于QM时,转到DD7进行DOQR树动态空间调整;
DD7动态空间调整规则:
ORoot与E两者的MBR有边界共享,则重新计算ORoot的动态空间DMBR;
(3)查询算法
空间查询又称空间检索、空间查找,是指从空间数据库或空间数据集合中查找出满足某一条件的空间目标的过程。根据查找的条件的不同,一般空间查询可以分为点查询和区域查询两种。点查询与区域查询过程基本相同,不同点在于,点查询结果为0或1条记录,而区域查询结果则是多条记录。在DOQR树中,空间查询是先通过查询条件筛选出候选集合,再对候选集合进行精确几何判断,从而得到查询结果。下面以矩形查询为例,介绍DOQR树空间检索算法。
DOQR_Search(ORoot,SR,ref IDS)
输入:ORoot为DOQR树的开放根节点,SR为搜索矩形窗口
矩形窗口
输出:IDS为查询结果集,保存索引记录项的OID
DS1如果ORoot的DMBR与SR不相交,则返回;否则执行DS2;
DS2如果SR完全覆盖ORoot的DMBR,则直接将ORoot内所有记录集OID存入IDS;否则执行DS3;
DS3如果ORoot是叶节点,则将其所有记录集与SR进行相交判断,相交者存入IDS;如果ORoot是中间节点,先查询ORoot关联R;再循环对其子节点Ni调用DOQR_Search(Ni,SR,ref IDS)。
(4)更新策略算法,当空间实体的形状发生改变时,如果这种改变没有影响其MBR,那么对于空间索引来说,这个实体在索引中的位置不变。如果空间实体的形状变化导致其MBR的变化,那么该实体的索引记录在空间索引的位置也需要做相应的调整。一般空间索引更新方法都采用先删除旧的索引记录项,然后插入更新后的索引记录项。DOQR树删除操作是局部定位调整更新,不会影响整个索引结构的稳定性。
(二)移动地理信息空间索引DOQR树算法应用实验
1)实验环境设计
选择合适的开发环境,不仅可以大大缩短软件开发周期,而且方便程序的移植。表1中详细介绍了开发环境配置。
表1
2)实验数据的设计
为了比较DQQR树与R树的性能,需要通过大量的实验数据运行结果进行统计。为此设计了两个数据:随即数据和真实数据。
(1)随机数据
参照图5、6、7,主要是点,线,面三类对象,通过设置经纬度范围以及个数,产生均匀分布数据。随机参数的选取如表2所示:
表2
(2)真实数据
真实的地理数据来自某地区的基础商业点数据,道路线数据和居民地面数据,都是0,1,2维数据,分别是6854,6651,58024。如图8,图9所示。
3)性能分析
(1)插入性能
空间索引的构建可以分为两种形式:静态加载和动态生成。静态加载是将空间索引按照一定的格式保存在外存中,当需要时,读取索引文件,按照索引节点构造。动态生成的算法是不需要加载或生成索引文件,而是在加载地图数据时或读取近似目标MBR后,动态生成空间索引。DOQR树沿用四叉树的空间划分方法,在插入操作过程中,要比R树快。
例如当插入一个空间对象时,DOQR树和R树的深度都为1时,即树中只有一个叶节点,这时两个的插入效率相同,且具有相同的结构。随着数据量的增加,索引树的深度会越来越大。对R树来说,深度越大,插入对象时寻找合适节点需要的面积计算量就越大,插入的效率就会降低。而DOQR树是根据插入对象与索引空间的中心点相对位置来判断该对象是插入该节点的子节点中还是对应的R树中,判断过程简洁,没有复杂的计算;同时,DOQR树中的R树的深度相对较低,插入对象到该节点的R树中,索引计算量也不会太大。因此在索引的建立和插入方面,DOQR树的效率明显比R树高。下面图10通过二维数据随真实数据插入消耗的时间的统计图。
(2)查询性能
查询的方式很多,这些查询方式中很多可以视为相交查询的特例。本文主要对相交查询进行讨论和分析,其他查询只需要稍作修改就可使用,更改范围不大。索引相交查询最具代表性。常用的有矩形查询,多边形查询,圆查询。下面讨论的是以矩形查询。
DOQR结构中,叶子节点和四分节点的的MBR是指节点内包含索引目标的最小外接矩形(动态空间),而常规四叉树是空间划分的,其每个节点保存的是空间操作区域,其范围往往会比该节点的最小MBR大;当查询窗口与节点区域相交时,而节点内的动态空间却没有相交,这样,会造成不必要的操作时间消耗,因此,在点索引索引方面,DOQR树比常规四叉树效率高。
对于复杂的空间线,面实体,其MBR往往覆盖面积比较大,在常规四叉树中,空间划分后,大多数线面实体会跨边界,这就使得索引记录重复存储,造成空间浪费。在查询时,会有大量的重复查询和排重操作,当数据量较大时,会大大减低四叉树的查询效率。
DOQR树采用动态插入构建方法,没有预定空间区域的限定,针对快跨边界的空间目标,采用R树进行管理。相对R树而言,DOQR树中的四分节点R树没有太大的深度,且保存的空间对象是按照四分节点中心点轴进行分布,相对分布比较均匀。因此在查询时相对常规四叉树和R树,查询效率都有所有提高。如图11为DOQR树与R树真实数据下随机查询性能对比。
(3)删除性能
删除操作是从索引树中找到目标,然后进行删除和索引树的调整。
常规四叉树在删除时有一定优势,即删除一个对象,不会对树结构造成很大的影响,最多是一阶变化,即一个中间节点个数少于限定阈值,这将该中间节点裁剪为叶节点。如果删除的地理对象在空间操作区边界上或附近,删除后,四叉树的最小MBR变小了,而操作区域不变,因此直接影响到查询功能。
R树中删除一个空间对象后,可能出现节点下溢,这时会对该节点中的索引记录进行重新分配,最坏的情况是裁剪蔓延的树的根节点。同时,因为叶节点MBR与该对象的MBR边界共享,删除后,要对MBR进行重新计算,这也是会造成多余的计算。
DOQR树中,在查找方面优于常规的四叉树和R树,在DOQR树中找到空间对象的索引记录,删除记录后,当删除记录后,如果该节点是叶节点且上一级中间节点的索引记录数低于四分条件的阈值QV,则对中间节点进行压缩。因此删除记录不会对DOQR树造成太大影响,使其具有很好的稳定性。但是,由于DOQR树的节点范围都是动态空间,因此删除节点后,如果索引记录MBR与节点MBR共享边界,则重新计算MBR,并向上递归计算,如果不共享,则停止计算,同时更新上一节点的MBR。
Claims (3)
1.一种移动地理信息空间索引方法,其特征在于,所述的方法主要分三个步骤:
(1)移动地理信息空间数据的存储:主要包括图形数据和属性数据的存储,图形数据采用本地文件的方式进行存储,采用用户系统定制的序列化二进制文件,所述序列化二进制文件在进行读存时的必须按照相同的步骤,存入的数据的类型、顺序必须与读取的该数据的数据类型、顺序相同,属性数据采用嵌入式数据系统存储,本地文件中的图形数据通过唯一标识ID与嵌入式数据库中的图形文件对应的属性表ID进行管理;
(2)移动地理信息空间索引结构的建立:DOQR索引树核心利用空间对象的外接矩形MBR代表空间对象的本身所占区域范围,按照空间区域和空间区域存储空间对象的个数进行组织存储,利用空间区域的索引,可以在进行空间信息查询、显示、分析时,从大量空间分布不均匀的空间对象中检索出某一特定区域的空间对象;
(3)移动地理信息空间索引方法的设计:在一张建有空间索引的表中,若进行空间数据插入、删除、或修改,那么在索引中也要插入,删除、或修改相应的索引记录项。
2.根据权利要求1所述的移动地理信息空间索引方法,其特征在于,在步骤(2)中DOQR核心包括四个步骤:
A、在没有工作范围边界限定的全开放空间范围(简称开放空间)上,将空间对象聚集到一个开放的空间区域中,整个开放空间的根节点对应1个叶节点LNode(Leaf Node),并且将空间对象的索引记录(OID,MBR)存放到该叶节点的存储桶里即存放索引记录(OID,MBR)集合的地方;
B、当空间对象聚集到一定数量时,当再增加1个空间对象,假定四分节点阈值QM=4,总空间对象个数增加到5个时,以包含当前空间对象集的MBR中心为分割点,将空间区域划分为四个子空间,整个空间的根节点变为一个中间节点,或称四分节点,四个子空间对应四个子节点,且四个子空间也是动态开放的;
C、然后将步骤A存储桶中空间对象集中的空间对象重新进行分配,分配规则是:利用每一个空间对象的MBR,判断每一个空间对象是否与中心分割线相交;如相交,则将空间对象索引记录(OID,MBR)保存到属于中间节点的R树结构中存储桶中;如不相交,先判断每一个空间对象位于四个子空间的哪一个空间区域中,然后把每一个空间对象索引记录保存到该子空间区域对应的子节点存储桶中,以此类推,分配所有的空间对象;
D、根据空间对象分配规则,当四个子节点的任何一节点中的空间对象聚集到一定数量时,把子节点空间区域再划分为四个子空间,按照B、C、D步骤以此类推。
3.根据权利要求1所述的移动地理信息空间索引方法,其特征在于,在步骤(3)中包括以下算法:
插入算法:当把一个新增的空间实体加入到建有空间索引的实体集时,需要把该实体生成的索引记录项加入到相应的空间索引DOQR树中,如果开放空间节点未“满”,则直接将新索引记录项添加到节点相应数组中;如果已“满”,则需四分开放节点,并将数组中的索引记录项同新增条目一起依次添加到新的子开放节点和R树中;
删除算法:当从空间实体集中删除了一个空间实体时,需要将相应的DOQR树中指向该实体的索引记录项也一同删除,即删除对象前先获取其索引记录项,然后利用索引记录的MBR来判断其所在的开放节点,最后进行OID匹配,匹配成功,则删除该索引项,同样地,在删除后为了维护DOQR树的性质,需要对DOQR树进行调整;
查询算法:空间查询又称空间检索、空间查找,是指从空间数据库或空间数据集合中查找出满足某一条件的空间目标的过程。根据查找的条件的不同,一般空间查询可以分为点查询和区域查询两种,点查询与区域查询过程基本相同,不同点在于,点查询结果为0或1条记录,而区域查询结果则是多条记录,在DOQR树中,空间查询是先通过查询条件筛选出候选集合,再对候选集合进行精确几何判断,从而得到查询结果;
更新策略算法:当空间实体的形状发生改变时,如果这种改变没有影响其MBR,那么对于空间索引来说,这个实体在索引中的位置不变,如果空间实体的形状变化导致其MBR的变化,那么该实体的索引记录在空间索引的位置也需要做相应的调整,一般空间索引更新方法都采用先删除旧的索引记录项,然后插入更新后的索引记录项,DOQR树删除操作是局部定位调整更新,不会影响整个索引结构的稳定性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110241074A CN102306166A (zh) | 2011-08-22 | 2011-08-22 | 一种移动地理信息空间索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110241074A CN102306166A (zh) | 2011-08-22 | 2011-08-22 | 一种移动地理信息空间索引方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102306166A true CN102306166A (zh) | 2012-01-04 |
Family
ID=45380028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110241074A Pending CN102306166A (zh) | 2011-08-22 | 2011-08-22 | 一种移动地理信息空间索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102306166A (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609530A (zh) * | 2012-02-14 | 2012-07-25 | 江苏新大诚信息技术有限公司 | 一种分区域双树结构的空间数据库索引方法 |
CN102831171A (zh) * | 2012-07-26 | 2012-12-19 | 北京世纪天宇科技发展有限公司 | 一种空间数据查询方法和装置 |
CN103377585A (zh) * | 2012-04-25 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 基于经纬度定位行政区划的方法 |
CN103714080A (zh) * | 2012-09-29 | 2014-04-09 | 北京百度网讯科技有限公司 | 基于空间索引结构树提供空间对象搜索结果的方法和设备 |
CN103870602A (zh) * | 2014-04-03 | 2014-06-18 | 中国科学院地理科学与资源研究所 | 数据库空间分片复制方法及系统 |
WO2014161261A1 (zh) * | 2013-07-24 | 2014-10-09 | 中兴通讯股份有限公司 | 数据的存储方法及装置 |
CN104641373A (zh) * | 2012-09-14 | 2015-05-20 | 本特利系统有限公司 | 有效地寻找空间得分最佳的实体 |
CN105868189A (zh) * | 2015-01-19 | 2016-08-17 | 高德软件有限公司 | 一种电子地图空间索引建立方法及装置 |
CN106649858A (zh) * | 2016-12-30 | 2017-05-10 | 天津市测绘院 | 一种个人地理信息的操作方法及装置 |
CN106844409A (zh) * | 2016-06-16 | 2017-06-13 | 南京航空航天大学 | 快速连续历史轨迹距离查询技术 |
CN108090150A (zh) * | 2017-12-11 | 2018-05-29 | 厦门亿力吉奥信息科技有限公司 | Gis空间对象存储方法及其系统 |
CN108280194A (zh) * | 2018-01-26 | 2018-07-13 | 重庆市地理信息中心 | 一种面向复杂空间数据的搜索与展示方法 |
CN108681592A (zh) * | 2018-05-15 | 2018-10-19 | 北京三快在线科技有限公司 | 索引切换方法、装置、系统以及索引切换中控装置 |
CN109117433A (zh) * | 2017-06-23 | 2019-01-01 | 菜鸟智能物流控股有限公司 | 一种索引树对象的创建及其索引方法和相关装置 |
CN109947889A (zh) * | 2019-03-21 | 2019-06-28 | 佳都新太科技股份有限公司 | 空间数据管理方法、装置、设备和存储介质 |
CN111931010A (zh) * | 2020-09-16 | 2020-11-13 | 杭州城市大数据运营有限公司 | 一种锚点与线条的动态绑定方法、装置、设备和存储介质 |
CN112035588A (zh) * | 2020-08-31 | 2020-12-04 | 北京市测绘设计研究院 | 构建空间数据规则库引擎的方法及gis数据质量检查方法 |
CN113312436A (zh) * | 2020-07-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
CN113536058A (zh) * | 2021-08-03 | 2021-10-22 | 上海达梦数据库有限公司 | 一种空间索引修改方法、装置、设备及存储介质 |
CN115630203A (zh) * | 2022-12-12 | 2023-01-20 | 杭州数梦工场科技有限公司 | n叉树的生成方法与相交关系的确定方法及装置 |
-
2011
- 2011-08-22 CN CN201110241074A patent/CN102306166A/zh active Pending
Non-Patent Citations (3)
Title |
---|
GEN TIAN等: "A New Spatial Index Methodology of Mobile GIS Based on Smart Phone", 《GEOINFORMATICS,2011 19TH INTERNATIONAL CONFERENCE》 * |
谢忠等: "嵌入式空间索引策略", 《地球科学 中国地质大学学报》 * |
赵波等: "面向移动GIS的动态四叉树空间索引算法", 《计算机工程》 * |
Cited By (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102609530A (zh) * | 2012-02-14 | 2012-07-25 | 江苏新大诚信息技术有限公司 | 一种分区域双树结构的空间数据库索引方法 |
CN103377585A (zh) * | 2012-04-25 | 2013-10-30 | 腾讯科技(深圳)有限公司 | 基于经纬度定位行政区划的方法 |
CN102831171A (zh) * | 2012-07-26 | 2012-12-19 | 北京世纪天宇科技发展有限公司 | 一种空间数据查询方法和装置 |
CN102831171B (zh) * | 2012-07-26 | 2015-11-18 | 北京世纪天宇科技发展有限公司 | 一种空间数据查询方法和装置 |
CN104641373A (zh) * | 2012-09-14 | 2015-05-20 | 本特利系统有限公司 | 有效地寻找空间得分最佳的实体 |
CN104641373B (zh) * | 2012-09-14 | 2018-09-07 | 本特利系统有限公司 | 有效地寻找空间得分最佳的实体 |
CN103714080A (zh) * | 2012-09-29 | 2014-04-09 | 北京百度网讯科技有限公司 | 基于空间索引结构树提供空间对象搜索结果的方法和设备 |
CN103714080B (zh) * | 2012-09-29 | 2018-07-06 | 北京百度网讯科技有限公司 | 基于空间索引结构树提供空间对象搜索结果的方法和设备 |
WO2014161261A1 (zh) * | 2013-07-24 | 2014-10-09 | 中兴通讯股份有限公司 | 数据的存储方法及装置 |
CN103870602B (zh) * | 2014-04-03 | 2017-05-31 | 中国科学院地理科学与资源研究所 | 数据库空间分片复制方法及系统 |
CN103870602A (zh) * | 2014-04-03 | 2014-06-18 | 中国科学院地理科学与资源研究所 | 数据库空间分片复制方法及系统 |
CN105868189A (zh) * | 2015-01-19 | 2016-08-17 | 高德软件有限公司 | 一种电子地图空间索引建立方法及装置 |
CN106844409A (zh) * | 2016-06-16 | 2017-06-13 | 南京航空航天大学 | 快速连续历史轨迹距离查询技术 |
CN106649858A (zh) * | 2016-12-30 | 2017-05-10 | 天津市测绘院 | 一种个人地理信息的操作方法及装置 |
CN109117433A (zh) * | 2017-06-23 | 2019-01-01 | 菜鸟智能物流控股有限公司 | 一种索引树对象的创建及其索引方法和相关装置 |
CN108090150A (zh) * | 2017-12-11 | 2018-05-29 | 厦门亿力吉奥信息科技有限公司 | Gis空间对象存储方法及其系统 |
CN108090150B (zh) * | 2017-12-11 | 2020-12-15 | 厦门亿力吉奥信息科技有限公司 | Gis空间对象存储方法及其系统 |
CN108280194A (zh) * | 2018-01-26 | 2018-07-13 | 重庆市地理信息中心 | 一种面向复杂空间数据的搜索与展示方法 |
CN108280194B (zh) * | 2018-01-26 | 2019-05-21 | 重庆市地理信息中心 | 一种面向复杂空间数据的搜索与展示方法 |
CN108681592A (zh) * | 2018-05-15 | 2018-10-19 | 北京三快在线科技有限公司 | 索引切换方法、装置、系统以及索引切换中控装置 |
CN109947889A (zh) * | 2019-03-21 | 2019-06-28 | 佳都新太科技股份有限公司 | 空间数据管理方法、装置、设备和存储介质 |
CN113312436A (zh) * | 2020-07-27 | 2021-08-27 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
CN113312436B (zh) * | 2020-07-27 | 2024-04-19 | 阿里巴巴集团控股有限公司 | 空间索引的处理方法及装置 |
CN112035588A (zh) * | 2020-08-31 | 2020-12-04 | 北京市测绘设计研究院 | 构建空间数据规则库引擎的方法及gis数据质量检查方法 |
CN111931010A (zh) * | 2020-09-16 | 2020-11-13 | 杭州城市大数据运营有限公司 | 一种锚点与线条的动态绑定方法、装置、设备和存储介质 |
CN113536058A (zh) * | 2021-08-03 | 2021-10-22 | 上海达梦数据库有限公司 | 一种空间索引修改方法、装置、设备及存储介质 |
CN115630203A (zh) * | 2022-12-12 | 2023-01-20 | 杭州数梦工场科技有限公司 | n叉树的生成方法与相交关系的确定方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102306166A (zh) | 一种移动地理信息空间索引方法 | |
US20210240735A1 (en) | System and method for supporting large queries in a multidimensional database environment | |
JP6032467B2 (ja) | 時空間データ管理システム、時空間データ管理方法、及びそのプログラム | |
US20190102447A1 (en) | System and method for metadata sandboxing and what-if analysis in a multidimensional database environment | |
CN101916299B (zh) | 一种基于文件系统的三维空间数据存储管理方法 | |
CN102255962B (zh) | 一种分布式存储方法、装置和系统 | |
CN109871415B (zh) | 一种基于图数据库的用户画像构建方法、系统及存储介质 | |
US20170116281A1 (en) | System and method for providing bottom-up aggregation in a multidimensional database environment | |
CN101324896B (zh) | 一种矢量数据的存储方法、查询方法和管理系统 | |
Schön et al. | Octree-based indexing for 3D pointclouds within an Oracle Spatial DBMS | |
CN104239377A (zh) | 跨平台的数据检索方法及装置 | |
CN104111958A (zh) | 一种数据查询方法及装置 | |
CN109492060A (zh) | 一种基于MBTiles的地图瓦片存储方法 | |
Ooi et al. | Indexing in spatial databases | |
CN101299213A (zh) | N维聚类排序记录树空间索引方法 | |
CN104423982A (zh) | 请求的处理方法和处理设备 | |
CN113704248B (zh) | 一种基于外置索引的区块链查询优化方法 | |
Khatri et al. | Supporting user-defined granularities in a spatiotemporal conceptual model | |
CN102799583B (zh) | 一种面向对象的存取方法及系统 | |
CN102567432B (zh) | 一种智能信息适配方法及装置 | |
Dröge et al. | Query-adaptive data space partitioning using variable-size storage clusters | |
CN104834733A (zh) | 一种大数据挖掘分析方法 | |
CN106570051B (zh) | 一种基于三维gis模型的海洋石油应用平台构建方法 | |
CN111339245B (zh) | 数据存储方法、装置、存储介质及设备 | |
CN102915329B (zh) | 栅格数据写入与读取的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120104 |