一种索引构建及查询方法技术

技术编号:31616854 阅读:13 留言:0更新日期:2021-12-29 18:50
本说明书一个或多个实施例提供一种索引构建及查询方法,包括根据空间数据集,构造四叉树结构;利用Z曲线对单元格内的空间数据进行数据降维处理,得到空间数据的空间数据表示;根据Z值对空间数据表示进行排序,并构建链表;基于链表进行数据分段处理,得到多个数据段;构建每个数据段的本地模型,根据各数据段的本地模型,确定单元格的查询模型。在构建的四叉树结构基础上,利用数据分段算法划分数据段,并构建查询模型,降低空间存储代价,提高检索性能,可以一次性的数据遍历快速构建索引,提高索引构建效率,适用于动态更新的空间数据集的动态索引构建。集的动态索引构建。集的动态索引构建。

【技术实现步骤摘要】
一种索引构建及查询方法


[0001]本说明书一个或多个实施例涉及数据处理
,尤其涉及一种索引构建及查询方法。

技术介绍

[0002]物联网设备会生成大量的地理空间数据,为了有效地访问和处理此类数据,通常会采用树型索引结构存储空间数据。然而,当数据量达到PB级别以上时,树形索引结构急剧变大,严重侵占系统资源;另一方面,传统的树形索引结构在静态数据上性能较好,但无法支持动态的索引构建与更新。

技术实现思路

[0003]有鉴于此,本说明书一个或多个实施例的目的在于提出一种索引构建及查询方法,能够实现动态索引构建。
[0004]基于上述目的,本说明书一个或多个实施例提供了一种索引构建方法,包括:
[0005]根据空间数据集,构造包括至少一个单元格的四叉树结构;
[0006]利用Z曲线对所述单元格内的空间数据进行数据降维处理,得到与所述空间数据对应的空间数据表示;其中,所述空间数据表示包括空间数据的坐标及Z值;
[0007]根据所述Z值对所述空间数据表示进行排序,并将排序后的空间数据表示保存于链表中;
[0008]基于所述链表进行数据分段处理,得到至少一个数据段;
[0009]构建每个数据段的本地模型,根据各数据段的本地模型,确定所述单元格的查询模型。
[0010]可选的,所述链表的各结点包括空间数据表示及其在链表中的位置。
[0011]可选的,基于所述链表进行数据分段处理,得到至少一个数据段为:采用FSW算法对所述链表中的结点进行数据分段,得到至少一个数据段。
[0012]可选的,所述数据段的本地模型包括数据段的起始点的位置及Z值,结束点的位置及Z值,根据所述起始点和结束点计算得到的斜率。
[0013]可选的,根据各数据段的本地模型,确定所述单元格的查询模型为:对各数据段的本地模型进行数据拟合,生成所述查询模型。
[0014]本说明书实施例还提供一种范围查询方法,基于所构建的索引进行查询,包括:
[0015]根据输入的查询矩形查询所述四叉树结构,确定与所述查询矩形具有交集的单元格;
[0016]将所述查询矩形划分为多个子矩形;其中,所述子矩形分为与所述单元格完全重合的子矩形,和与所述单元格部分重合的子矩形;
[0017]对于与单元格完全重合的子矩形,将所述完全重合的单元格中的空间数据作为查询结果;
[0018]对于与单元格部分重合的子矩形,根据所述部分重合的单元格的查询模型进行查询,得到查询结果。
[0019]可选的,根据根据所述部分重合的单元格的查询模型进行查询,得到查询结果,包括:
[0020]确定所述与单元格部分重合的子矩形的最小Z值和最大Z值;
[0021]确定所述最大Z值和最小Z值在所述查询模型中的可能位置范围;
[0022]判断所述可能位置范围内的空间数据是否在所述查询矩形范围内,将在所述查询矩形范围内的空间数据作为查询结果。
[0023]本说明书实施例还提供一种最近邻查询方法,基于所构建的索引进行查询,包括:
[0024]根据输入的查询数据点查询四叉树结构,确定所述查询数据点所在的单元格;
[0025]根据所述单元格的空间密度和数据点数量,确定初始距离;
[0026]确定所述初始距离与预设的距离阈值中较小的距离,根据所述查询数据点和所述距离,构建初始查询矩形;
[0027]以所述初始查询矩形为范围查询方法的查询矩形,获得范围查询结果;
[0028]根据所述范围查询结果确定最近邻查询结果。
[0029]可选的,根据所述范围查询结果确定最近邻查询结果,包括:
[0030]以所述查询数据点为圆心,所述距离为半径,构建初始查询圆形;
[0031]判断所述范围查询结果中的空间数据是否在所述初始查询圆形范围之内,将在所述初始查询圆形内的空间数据作为中间查询结果;
[0032]判断所述中间查询结果中的数据量是否达到预定数量;
[0033]如果达到,按照与所述查询数据点的距离由小到大排列,从排序后的数据点中选取所述预定数量的数据点作为最近邻查询结果;
[0034]如果未达到,对所述初始距离进行扩展,根据所述查询数据点和扩展的距离,构建二次查询矩形,根据所述二次查询矩形利用范围查询方法进行查询,得到范围查询结果,基于范围查询结果更新所述中间查询结果,直至所述中间查询结果中的数据量达到所述预定数量为止。
[0035]可选的,根据所述二次查询矩形利用范围查询方法进行查询,包括:
[0036]根据所述初始查询矩形和所述二次查询矩形,确定未查询区域;
[0037]以所述未查询区域为范围查询方法的查询矩形进行查询。
[0038]从上面所述可以看出,本说明书一个或多个实施例提供的索引构建及查询方法,通过根据空间数据集,构造四叉树结构;利用Z曲线对单元格内的空间数据进行数据降维处理,得到空间数据的空间数据表示;根据Z值对空间数据表示进行排序,并构建链表;基于链表进行数据分段处理,得到多个数据段;构建每个数据段的本地模型,根据各数据段的本地模型,确定单元格的查询模型。本实施例的方法,在构建的四叉树结构基础上,利用数据分段算法划分数据段,并构建查询模型,降低空间存储代价,提高检索性能,可以一次性的数据遍历快速构建索引,提高索引构建效率,适用于动态更新的空间数据集的动态索引构建。
附图说明
[0039]为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将
对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0040]图1为本说明书一个或多个实施例的构建方法流程示意图;
[0041]图2为本说明书一个或多个实施例的索引构建过程示意图;
[0042]图3为本说明书一个或多个实施例的数据划分示意图;
[0043]图4A、4B为本说明书一个或多个实施例的数据降维和有序化示意图;
[0044]图5为本说明书一个或多个实施例的数据分段示意图;
[0045]图6为本说明书一个或多个实施例的查询模型示意图;
[0046]图7为本说明书一个或多个实施例的范围查询流程示意图;
[0047]图8A、8B、8C为本说明书一个或多个实施例的范围查询示例图;
[0048]图9为本说明书一个或多个实施例的KNN查询流程示意图;
[0049]图10A、10B、10C为本说明书一个或多个实施例的KNN查询示例图;
[0050]图11为本说明书一个或多个实施例的装置结构示意图;
[0051]图12为本说明书一个或多个实施例的电子设备结构示意图。
具体实施方式
[0052]为使本公开的目的、技术方案和优点更加清楚明白本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种索引构建方法,其特征在于,包括:根据空间数据集,构造包括至少一个单元格的四叉树结构;利用Z曲线对所述单元格内的空间数据进行数据降维处理,得到与所述空间数据对应的空间数据表示;其中,所述空间数据表示包括空间数据的坐标及Z值;根据所述Z值对所述空间数据表示进行排序,并将排序后的空间数据表示保存于链表中;基于所述链表进行数据分段处理,得到至少一个数据段;构建每个数据段的本地模型,根据各数据段的本地模型,确定所述单元格的查询模型。2.根据权利要求1所述的方法,其特征在于,所述链表的各结点包括空间数据表示及其在链表中的位置。3.根据权利要求1所述的方法,其特征在于,基于所述链表进行数据分段处理,得到至少一个数据段为:采用FSW算法对所述链表中的结点进行数据分段,得到至少一个数据段。4.根据权利要求1或3所述的方法,其特征在于,所述数据段的本地模型包括数据段的起始点的位置及Z值,结束点的位置及Z值,根据所述起始点和结束点计算得到的斜率。5.根据权利要求4所述的方法,其特征在于,根据各数据段的本地模型,确定所述单元格的查询模型为:对各数据段的本地模型进行数据拟合,生成所述查询模型。6.一种范围查询方法,基于权利要求1

5中任意一项所述方法所构建的索引进行查询,其特征在于,包括:根据输入的查询矩形查询所述四叉树结构,确定与所述查询矩形具有交集的单元格;将所述查询矩形划分为多个子矩形;其中,所述子矩形分为与所述单元格完全重合的子矩形,和与所述单元格部分重合的子矩形;对于与单元格完全重合的子矩形,将所述完全重合的单元格中的空间数据作为查询结果;对于与单元格部分重合的子矩形,根据所述部分重合的单元格的查询模型进行查询,得到查询结果。7.根据权利要求6所述的方法,其特征在于,根据根据所述部分重合的单元格的查询模型进行查询,得到...

【专利技术属性】
技术研发人员:崔栋张华温巧燕王华伟涂腾飞
申请(专利权)人:北京邮电大学
类型:发明
国别省市:

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

1