一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于键值数据库的邻近点快速查询方法与流程

2022-03-02 00:57:16 来源:中国专利 TAG:


1.本发明属于地理空间点位数据存储与检索相关技术领域,特别是涉及一种基于键值数据库的邻近点快速查询方法。


背景技术:

2.随着社会的进步以及智慧城市建设进程的推进,地理空间数据量急速增长。在数据量十分庞大的情况下,如何快速有效地存储、处理以及查询地理空间数据成为了亟需解决的问题。点数据作为地理数据应用实体,已经广泛应用于电商、社交、电子地图服务、互联网金融等领域。传统的关系数据库无法支持在海量的点数据中,通过二维的坐标信息快速有效地查询到目标点数据。因为关系数据库复杂的表结构会降低处理数据的效率,尤其是大量数据写入、更新以及简单快速查询等处理。而键值数据库的可扩展性好,灵活性高,在大量写操作时性能高,可以快速查找目标数据。因此,运用键值数据库对点数据进行存储会极大提升存储和查询效率。


技术实现要素:

3.本发明针对现有技术的不足,提供一种基于键值数据库的邻近点快速查询方法,通过键值数据库存储点数据并建立有效的索引表,极大地提高了查询点数据的效率,解决传统关系数据库在处理地理空间数据时效率较低的问题。
4.为了达到上述目的,本发明提供的技术方案是一种基于键值数据库的邻近点快速查询方法,包括以下步骤:
5.步骤1,对点数据建立空间索引,并存入主表;
6.步骤2,对主表建立索引表;
7.步骤3,当收到查询请求时,根据请求点的空间位置在索引表以及主表中检索,返回查询结果;
8.步骤3.1,当收到查询请求时,根据请求点的经纬度坐标使用geohash算法生成对应的geohash编码,在索引表中查询该编码的前m位,可以获得主表中所有geohash前m位与其相同的编码值;
9.步骤3.2,若在索引表中未查到与请求点相同的前m位geohash编码,则返回请求点周围没有所查数据;若在索引表中查到n个与请求点相同的前m位geohash编码,则将步骤3.1得到的所有编码值进行编码反解得到n组经纬度值,利用经纬度计算出与请求点欧氏距离距离最近的前m个点;
10.步骤3.3,在主表中查询步骤3.2得到的m个点数据的属性,返回查询结果,查询结果即为点的经纬度坐标和属性信息。
11.而且,所述步骤1中首先对点数据空间坐标进行降维处理,使用geohash算法将经纬度坐标转换为一维的geohash码,然后选用n位geahash码作为key值,点数据的其他属性值作为value值,将其存入键值数据库主表中。
12.而且,所述步骤2中对存入数据库主表中的所有key值,即每个点数据生成的n位geohash码进行处理;根据实际存储的点位分布及密度,将geohash码前m位相同的所有geohash码进行组合,存入索引表中,即索引表的key值为geohash码相同的前m位值,value值为geohash码后n-m位的一个拼接组合。
13.与现有技术相比,本发明具有如下优点:
14.1)使用键值数据库存储点位信息,提高了检索速度,且可扩展性好。
15.2)利用geohash算法将点数据中的二维地理坐标转换为一维的geohash码,由于每个点对应唯一的geohash码,且空间上相似的点,其对应的geohash码相似度也比较高,由此可以有效快速地查询目标点周围的点数据。
附图说明
16.图1为本发明实施例的流程框图。
17.图2为本发明实施例的geohash曲线示意图。
18.图3为本发明实施例的的数据查询流程示意图。
具体实施方式
19.本发明提供一种基于键值数据库的邻近点快速查询方法,首先利用geohash算法将点数据中的二维地理坐标转换为一维的geohash码,以这个唯一的geohash码为key值,点数据的其他属性作为value值,存储到键值数据库中,然后利用geohash编码前缀相似程度与空间距离成正比的特性,对入库的点数据建立索引表,最后主表和索引表相结合实现了快速查询目标周围点数据的功能。
20.下面结合附图和实施例对本发明的技术方案作进一步说明。
21.如图1所示,本发明实施例的流程包括以下步骤:
22.步骤1,对点数据建立空间索引,并存入主表。
23.首先对点数据空间坐标进行降维处理,使用geohash算法将经纬度坐标转换为一维的geohash码,然后以该唯一的geahash码作为key值,点数据的其他属性值如name、address、telephone、type、areaid作为value值,将其存入键值数据库主表中。本实施例采用12位geohash码作为数据的key值,12位的geohash码可以保证厘米级经度,确保了key值的唯一性。geohash曲线是空间填充曲线的一维分形,是z型曲线的应用。虽然它是一维曲线但却可以填充二维平面的所有空间,geohash曲线具有局域性和连续性,因此通常将其用于将多变量以线性顺序进行表达。geohash曲线示意图如图2所示。
24.本发明中应用geohash编码作为点数据的唯一标识,并采用了12位geohash码,各级geohash可以覆盖的范围(精度),如表1所示。
25.表1各级geohash覆盖范围(精度)
26.编码等级覆盖范围1≤5,000km
×
5,000km2≤1,250km
×
625km3≤156km
×
156km4≤39.1km
×
19.5km
5≤4.89km
×
4.89km6≤1.22km
×
0.61km7≤153m
×
153m8≤38.2m
×
19.1m9≤4.77m
×
4.77m10≤1.19m
×
0.596m11≤149mm
×
149mm12≤37.2mm
×
18.6mm
27.步骤2,对主表建立索引表。
28.索引表建立过程为:对存入数据库主表中的所有key值,即每个点数据生成的12位geohash码进行处理。考虑到实际存储的点位分布及密度,本实施例将geohash码前六位相同的所有geohash码进行组合,存入索引表中。即索引表的key值为geohash码相同的前六位值,value值为geohash码后六位的一个拼接组合。索引表的意义在于能够查询到主表中geohash码前六位相同的所有数据。
29.步骤3,当收到查询请求时,根据请求点的空间位置在索引表以及主表中检索,返回查询结果。
30.步骤3.1,当收到查询请求时,根据请求点的经纬度坐标使用geohash算法生成对应的geohash编码,在索引表中查询该编码的前六位,可以获得主表中所有geohash前六位与其相同的编码值。
31.本实施例考虑到前六位geohash编码相同代表着请求点与目标点的区域范围在1.22km
×
0.61km,搜索范围已足够大,因此选择前六位进行比较。
32.步骤3.2,若在索引表中未查到与请求点相同的前六位geohash编码,则返回请求点周围没有所查数据;若在索引表中查到n个与请求点相同的前六位geohash编码,则将步骤3.1得到的所有编码值进行编码反解得到n组经纬度值,计算出与请求点欧氏距离距离最近的前m个点。
33.步骤3.3,在主表中查询步骤3.2得到的m个点数据的属性,返回查询结果,查询结果即为点的经纬度坐标和属性信息。
34.具体实施时,以上流程可采用计算机软件技术实现自动运行流程。
35.本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献