一种基于Geo‑BTree的范围查询方法及装置制造方法及图纸

技术编号:17407016 阅读:37 留言:0更新日期:2018-03-07 04:51
本发明专利技术涉及一种基于Geo‑BTree的范围查询方法及装置,本发明专利技术方法包括:数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;空间索引建立步骤,根据排序后的字符串构建B‑Tree索引结构;范围查询步骤,以检索B‑Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。本发明专利技术采用基于geohash编码构建B‑Tree索引结构,具有较高的查询效率,可直接用于数据管理系统中;采用geohash空间索引方法,有效支持任意范围查询。

A device and range Geo query method based on BTree

The invention relates to a device and the range of Geo BTree query method based on the method of the invention includes: data preprocessing, data set in all points for the growth of string n encoding string, string according to the lexicographical ordering of the location point data sort and number ID; according to the steps of building spatial index the sorted string to construct B Tree index structure; range query steps to retrieve the return B Tree index structure ID query domain ID as the starting point of bidirectional search, filtered to obtain ID candidate sets, and the position of the candidate set ID the corresponding verification points within the scope of the query returns. The invention adopts geohash encoding to construct B Tree index structure based on its high efficiency, can be directly used for data management system; using geohash spatial index method, support arbitrary range queries effectively.

【技术实现步骤摘要】
一种基于Geo-BTree的范围查询方法及装置
本专利技术涉及一种基于Geo-BTree的范围查询方法及装置,属于数据库(Database)领域、范围查询(RangeSearch)领域、基于位置的服务(Location-BasedService,LBS)等领域。
技术介绍
近年来,随着智能手机、平板电脑等移动设备的普及,基于桌面的互联网时代已转向移动互联网时代。与此同时,随着定位技术的发展,如:GPS、3G、4G、WiFi等,导致产生了大量具有位置属性的数据,且数据量急剧增长。面对海量的空间数据,高效支持空间查询是一个迫切需要解决的问题。空间索引用于过滤、排除大量与特定空间操作无关的地理对象,从而缩减空间操作范围,为高效支持空间查询,则需高效的空间索引结构。从空间数据库的观点来看,空间索引结构可以分为两类:专门用于处理点对象的点存取方法(PAM)和处理具有空间扩展的空间对象(包括点、线、面、体)的空间存取方法(SAM)。PAM包括Grid文件、Buddy树、K-D-B树、hB树、LSD树等;依据空间对象的不同组织方式,SAM分为对象映射、对象分割/复制和对象界定三类,对象映射即将高维空间中的对象线性映射到一维空间,用空间排列码(如:Peano码、Hilbert码、Morton码等)进行表达;对象分割/复制是把与子空间相交的数据对象分割成几个子对象,分别存储在互不重叠的子空间中,在子空间中复制对象本身或其标识符,如:R+树、Cell树、线性四叉树等;对象界定又称为区域重叠技术,其主要思想是允许子空间的相互重叠,如:R树、R*树等。R树是目前最流行的动态空间索引结构,其采用对象的最小外包矩形(MinimumBoundingRectangle,MBR)来近似表示空间实体,可有效支持查询、插入、删除等操作。由于空间数据分布的偶然性,容易造成MBR重叠,查询时会产生多个查询分支,从而降低查询效率。选取geohash空间索引方法可有效解决R-Tree的多路径查询问题,geohash编码用二分法划分空间,避免了区域重叠;选用geohash编码可支持任意范围查询。因此,geohash空间索引方法广泛用于多个领域,如:地理信息系统领域(如:PostGIS)、空间数据库领域(如:MongoDB)、信息检索领域(如:Lucene)。存储geohash编码常用的索引结构如:B-Tree、B+Tree、Hashing。B-Tree是一种自平衡的树,其支持对数据的增加、删除、修改、查找操作在对数时间内完成,故B-Tree常被应用在数据库和文件系统的实现上。R-Tree是B-Tree在k维空间上的自然扩展,因其采用对象界定技术组织空间对象,造成多路径查询问题,从而降低查询效率。
技术实现思路
本专利技术提供了一种基于Geo-BTree的范围查询方法及装置,目的在于有效支持任意范围查询;有效解决因R树存在的多路径查询问题而导致的检索低效问题;直接用于数据管理系统中。本专利技术的技术方案是:一种基于Geo-BTree的范围查询方法,包括:数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;范围查询步骤,以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。所述数据预处理步骤,具体包括如下步骤:步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。所述空间索引建立步骤,具体为:步骤210:根据字符串构建B-Tree索引结构,每个结点至少存储1个<string,ID>。所述范围查询步骤,具体包括如下步骤:步骤310:给定查询位置点q和查询距离范围d,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash算法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值,每一个geohash编码表示一个区域;步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,通过经纬度范围对9个查询域内的ID进行筛选,最终得到ID候选集;步骤340:计算候选集中ID对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。所述步骤110,包括下列步骤111、112:步骤111:根据geohash精度表确定geohash编码长度n;步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。所述通过geohash算法将位置点编码成字符串具体为:首先,将经纬度范围看作二维平面坐标系;然后,采用二分法对经度/纬度进行划分,根据位置点经度/纬度在划分结果中的位置分别赋值0或1,直到划分次数满足对应的经/纬度位串的位数;之后,通过位交错方法合并经度位串与纬度位串;最后,通过Base32编码将经纬度位串编码为相应长度的字符串。所述步骤310中,获取qs周围8个区域的geohash编码的方法:根据qs的经纬度位串,东/西方向的区域编码:经度位串不变,纬度位串加/减1,通过位交错方法得到该区域的经纬度位串;南/北方向的区域编码:纬度位串不变,经度位串减/加1,通过位交错方法得到该区域的经纬度位串;东北/西南方向的区域编码,经纬度位串均加/减1,通过位交错方法得到该区域的经纬度位串;东南方向的区域编码:纬度位串加1,经度位串减1,通过位交错方法得到该区域的经纬度位串;西北方向的区域编码:纬度位串减1,经度位串加1,通过位交错方法得到该区域的经纬度位串;之后,通过Base32编码将以上8个位串进行编码即可获得qs周围8个区域的geohash编码。所述步骤320中,根据检索B-Tree索引结构返回ID的方法为:从根结点开始重复如下过程:若比结点的第一个关键字小,则查找在该结点第一个指针指向的结点进行;若等于结点中某个关键字,则查找成功;若在两个关键字之间,则查找在它们之间的指针指向的结点进行;若比该结点所有关键字大,则查找在该结点最后一个指针指向的结点进行;若查找已经到达某个叶子结点,还未匹配成功,则查找失败,其中,字符串的前p位为关键字。所述步骤330中,根据查询位置点q和查本文档来自技高网
...
一种<a href="http://www.xjishu.com/zhuanli/55/201710843972.html" title="一种基于Geo‑BTree的范围查询方法及装置原文来自X技术">基于Geo‑BTree的范围查询方法及装置</a>

【技术保护点】
一种基于Geo‑BTree的范围查询方法,其特征在于:包括:数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;空间索引建立步骤,根据排序后的字符串构建B‑Tree索引结构;范围查询步骤,以检索B‑Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。

【技术特征摘要】
1.一种基于Geo-BTree的范围查询方法,其特征在于:包括:数据预处理步骤,将数据集中所有位置点编码成长度为n的字符串string,根据字符串按字典序对数据集中的位置点排序并编号ID;空间索引建立步骤,根据排序后的字符串构建B-Tree索引结构;范围查询步骤,以检索B-Tree索引结构返回的ID为起始点双向搜索获取查询域内的ID,经过滤得到ID候选集,并对候选集中ID所对应的位置点验证返回查询范围内的位置点。2.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述数据预处理步骤,具体包括如下步骤:步骤110:给定一个由一系列位置点构成的数据集D,通过geohash算法将D中的位置点编码成长度为n的字符串string;其中,位置点由纬度、经度数据构成;步骤120:根据字符串按字典序对数据集中的位置点排序并编号,该编号即为对应的位置点ID,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集;其中,记录由ID、纬度、经度、字符串组成。3.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述空间索引建立步骤,具体为:步骤210:根据字符串构建B-Tree索引结构,每个结点至少存储1个&lt;string,ID&gt;。4.根据权利要求1所述的基于Geo-BTree的范围查询方法,其特征在于:所述范围查询步骤,具体包括如下步骤:步骤310:给定查询位置点q和查询距离范围d,根据geohash精度表选定与d相对应的geohash编码长度p,通过geohash算法将位置点q编码为p位长度的字符串qs,获取字符串qs周围8个区域的geohash编码,并将字符串qs及其周围8个区域的geohash编码分别作为查询域,共9个查询域;其中,p对应的距离误差不小于d且为最小值,每一个geohash编码表示一个区域;步骤320:根据检索B-Tree索引结构返回的ID,在记录集中以此ID为起始点双向搜索至不满足查询条件,返回满足查询条件的ID,为一个查询域内的ID;重复以上操作至获取9个查询域内的ID;其中,每一行数据称为一条记录,则由这些数据组成的数据集称为记录集,记录由ID、纬度、经度、字符串组成;查询条件指记录集中字符串的前p位与查询域的geohash编码相同;步骤330:根据查询位置点q和查询距离范围d分别确定纬度范围与经度范围,通过经纬度范围对9个查询域内的ID进行筛选,最终得到ID候选集;步骤340:计算候选集中ID对应的位置点到q的距离dq:若dq≤d,则返回该位置点,否则,不返回。5.根据权利要求2所述的基于Geo-BTree的范围查询方法,其特征在于:所述步骤110,包括下列步骤111、112:步骤111:根据geohash精度表确定geohash编码长度n;步骤112:通过geohash算法将所有位置点编码成长度为n的字符串。6.根据权利要求2或4所述的基于Geo-BT...

【专利技术属性】
技术研发人员:沈兵林贾连印丁家满游进国李晓武左喻灏胡俊涛雷妍
申请(专利权)人:昆明理工大学
类型:发明
国别省市:云南,53

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

1