一种基于半分解策略的多维空间数据索引方法技术

技术编号:22295424 阅读:54 留言:0更新日期:2019-10-15 04:35
本发明专利技术提供了一种基于半分解策略的多维空间数据索引方法,包括创建半分解树结构过程,传入一个多维空间节点Node,判断空间对象几何数量,进行空间划分生成子空间,选择空间对象最多的子空间生成新的多维空间节点LeafNode,将Node中的部分空间对象移动到LeafNode,计算LeafNode深度。本发明专利技术提供的一种基于半分解策略的多维空间数据索引方法减少了存储空间的使用,降低磁盘IO次数,能够高效进行多维空间数据的管理,保障了空间数据库的流畅性。

A Multidimensional Spatial Data Index Method Based on Semi-decomposition Strategy

【技术实现步骤摘要】
一种基于半分解策略的多维空间数据索引方法
本专利技术涉及一种基于半分解策略的多维空间数据索引方法,属于空间信息管理

技术介绍
空间索引是空间数据库中快速检索数据的关键,是对存储在介质上的数据位置信息的描述,是用来提高系统对数据获取的效率。多维空间数据在大数据下具有空间分布不均匀、数据量庞大、结构复杂等特征,对空间数据的检索性能要求极高,是一个巨大的挑战。近些年来人们提出了大量的时空索引结构来支持处理多维空间数据时空查询,但是仍然无法保证高维空间数据的检索效率。因而能否找到更加高效的多维空间数据索引方法是当前大数据时代下人们急需解决的问题。目前,常用的空间数据索引结构主要采用的是树形索引结构,人们提出了大量的时空索引结构来支持多维空间数据的时空查询,这些索引结构大多来自于B树和R树。其中以R树为代表的对空间数据采用空间划分方式的,其本身及其派生出来的空间数据索引结构使用最小边界矩形来表示来表示空间范围,并通过将一些其他数据参数化来处理多维数据。然而其边界矩形总是大于多维空间对象本身的范围,其重叠问题在高维度上难以解决,更新效率较低。一些常用的树形结构,例如四叉树和八叉树,它们被广泛应用于各种领域,包括计算几何、图像处理等领域,但是受多维数据分布不均匀的特点,其树是不平衡的,影响树的深度,另外树本身是一种层次的结构,而这些树的中间节点本身往往不包含空间对象,当树的深度越深,中间节点越多,这些不包含空间对象的中间节点将会产生巨大的存储空间,树的性能限制严重。除了这些以外,一些基于网格的索引,例如LUGRID,GPR树等,采用了惰性插入和删除来处理不同的查询,添加额外的内存驻留层,但是并不能在根本上提升查询效率。此外还有一种分解树,通过分解空间生成子空间,进而省略了中间节点,但是由于其不包含中间节点,无法判断其下层空间是否存在,需要遍历整个哈希表,效率低下,另外采用完全分解的方式,会生成大量的叶子节点,大量占用内存和磁盘空间,且在插入、删除、范围查询操作时需要较多的IO次数。综上所述,由于高维数据特征的影响,当前大部分的多维空间索引技术都很难有较高的效率,很难在实际的多维空间数据管理种得到很好的应用。因此有必要提出一种更加高效的多维空间数据索引方法。
技术实现思路
为了解决现有技术的不足,本专利技术提供了一种基于半分解策略的多维空间数据索引方法,该方法减少了存储空间的使用,降低磁盘IO次数,能够高效进行多维空间数据的管理,保障了空间数据库的流畅性。本专利技术为解决其技术问题所采用的技术方案是:提供了一种基于半分解策略的多维空间数据索引方法,包括创建半分解树结构过程,具体包括以下步骤:(a1)向初始化的半分解树T’传入一个多维空间节点Node;(a2)判断多维空间节点Node的空间对象集合数量是否超出预设的最大限制值,若未超出,将多维空间节点Node中的数据写回磁盘内,结束创建过程;否则继续执行步骤(a3);(a3)对多维空间节点Node按照维度的先后顺了,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a3)对多维空间节点Node按照维度的先后顺序,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a5)将多维空间节点Node中关于SubNodemax的空间对象添加到LeafNode中,同时移除多维空间节点Node中SubNodemax的空间对象;(a6)返回步骤(1),直到原空间节点Node与新生成的LeafNode节点的空间对象数量均不超过最大限制,进入步骤(a7)(a7)使用移位操作计算LeafNode在半分解树中的深度_depth;(a8)将_depth与全分解树T的深度depth进行比较,取较大的数赋值给depth;(a9)返回步骤(a1)。本专利技术提供的一种基于半分解策略的多维空间数据索引方法还包括插入数据过程,具体包括以下步骤:(b1)向半分解树T’传入一个待插入的空间对象Object1;(b2)计算Object1在半分解树T’的最深处所属的多维空间的整数编码,记为Code1;(b3)使用整数编码移位操作对Code1依次向上进行移位操作,当在哈希表中查找到Code1时,停止移位操作;(b4)根据Code1在磁盘中读取空间对象,生成整数编码为Code1的第一多维空间节点Node1;(b5)将Object1添加到Node1的空间对象集合中;(b6)对Node1执行步骤(a1)~(a9)所述的半分解策略操作,其中将步骤(a1)~(a9)中的Node替换为Node1执行。本专利技术提供的一种基于半分解策略的多维空间数据索引方法还包括查询数据过程,具体包括以下步骤:(c1)传入一个待查询的多维空间范围Envelope;(c2)计算Envelope在半分解树T’的最深处所属的多维空间的整数编码,记为Code2;(c3)若Code2为0,说明该半分解树T’对应的多维空间不能保全包含查询空间,为相交或者相离,若相离,直接返回空;若相交,令Code2为半分解树T’的根节点的编码,执行步骤(c5);反之若Code2不为0,执行步骤(c4);(c4)判断Code2在哈希表中是否存在,不存在采用整数移位操作获取上层编码,直到哈希表包含Code2,读取该Code2的磁盘数据,生成整数编码为Code2的第二多维空间节点Node2,将Node2中的空间对象集合与Envelope作比较,添加数据到结果中后,返回结果,结束程序;如果Code2在哈希表中存在,执行步骤(c5);(c5)读取Code2所对应的磁盘数据,生成Code2对应的多维空间节点Node2,将Node2中的空间对象与Envelope的空间范围作比较,将属于Envelope的空间对象添加到结果中;(c6)分解多维空间节点Node2,生成2个以上子空间,每个子空间对应一个整数编码,遍历整数编码,判断哈希表中是否包含该整数编码,包含则返回步骤(c5),否则进入步骤(c7);(c7)释放内存中的节点数据,将查询结果不存在返回,结束查询。本专利技术提供的一种基于半分解策略的多维空间数据索引方法还包括查询数据过程,具体包括以下步骤:(d1)传入一个待删除的空间对象,记为Object3;(d2)计算Object3在半分解树T’的最深处所属的多维空间的整数编码,记为Code3;(d3)若Code3等于0,则Object3不在该半分解树所对应的最大多维空间内,结束删除过程;否则继续执行以下操作:(d4)使用整数编码移位操作对Code3依次向上进行移位操作,当在哈希表中查找到Code3时,停止移位操作;(d5)根据Code3在磁盘中读取空间对象Object3,生成整数编码为Code3的第三多维空间节点Node3;(d6)依次遍历Node3中空间对象集合,查找是否存在一个与Object3对应的空间对象属性一样的空间对象,若未找到,结束操作,释放Node3节点;若找到,从空间对象集合中删除该空间对象;(d7)判断Node3的空间对本文档来自技高网
...

【技术保护点】
1.一种基于半分解策略的多维空间数据索引方法,其特征在于包括创建半分解树结构过程,具体包括以下步骤:(a1)向初始化的半分解树T’传入一个多维空间节点Node;(a2)判断多维空间节点Node的空间对象集合数量是否超出预设的最大限制值,若未超出,将多维空间节点Node中的数据写回磁盘内,结束创建过程;否则继续执行步骤(a3);(a3)对多维空间节点Node按照维度的先后顺了,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a3)对多维空间节点Node按照维度的先后顺序,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a5)将多维空间节点Node中关于SubNodemax的空间对象添加到LeafNode中,同时移除多维空间节点Node中SubNodemax的空间对象;(a6)返回步骤(1),直到原空间节点Node与新生成的LeafNode节点的空间对象数量均不超过最大限制,进入步骤(a7)(a7)使用移位操作计算LeafNode在半分解树中的深度_depth;(a8)将_depth与全分解树T的深度depth进行比较,取较大的数赋值给depth;(a9)返回步骤(a1)。...

【技术特征摘要】
1.一种基于半分解策略的多维空间数据索引方法,其特征在于包括创建半分解树结构过程,具体包括以下步骤:(a1)向初始化的半分解树T’传入一个多维空间节点Node;(a2)判断多维空间节点Node的空间对象集合数量是否超出预设的最大限制值,若未超出,将多维空间节点Node中的数据写回磁盘内,结束创建过程;否则继续执行步骤(a3);(a3)对多维空间节点Node按照维度的先后顺了,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a3)对多维空间节点Node按照维度的先后顺序,对每个维度进行空间范围的均等划分,生成2个以上子空间;(a4)判断每个子空间中的空间对象数量,选择空间对象最多的子空间SubNodemax,生成新的多维空间节点LeafNode;(a5)将多维空间节点Node中关于SubNodemax的空间对象添加到LeafNode中,同时移除多维空间节点Node中SubNodemax的空间对象;(a6)返回步骤(1),直到原空间节点Node与新生成的LeafNode节点的空间对象数量均不超过最大限制,进入步骤(a7)(a7)使用移位操作计算LeafNode在半分解树中的深度_depth;(a8)将_depth与全分解树T的深度depth进行比较,取较大的数赋值给depth;(a9)返回步骤(a1)。2.根据权利要求1所述的基于半分解策略的多维空间数据索引方法,其特征在于还包括插入数据过程,具体包括以下步骤:(b1)向半分解树T’传入一个待插入的空间对象Object1;(b2)计算Object1在半分解树T’的最深处所属的多维空间的整数编码,记为Code1;(b3)使用整数编码移位操作对Code1依次向上进行移位操作,当在哈希表中查找到Code1时,停止移位操作;(b4)根据Code1在磁盘中读取空间对象,生成整数编码为Code1的第一多维空间节点Node1;(b5)将Object1添加到Node1的空间对象集合中;(b6)对Node1执行步骤(a1)~(a9)所述的半分解策略操作,其中将步骤(a1)~(a9)中的Node替换为Node1执行。3.根据权利要求1所述的基于半分解策略的多维空间数据索引方法,其特征在于还包括查询数据过程,具体包括以下步骤:(c1)传入一个待查询的多维空间范围Envelope;(c2)计算Envelope在半分解树T’的最深处所属的多维空间的整数编码,记为Code2;(c3)...

【专利技术属性】
技术研发人员:何珍文刘刚田宜平黄挺李旸孙亚博龙仕容赵洪刘玉婷乔璐楠吴凡
申请(专利权)人:中国地质大学武汉
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1