CN112015740B - 基于z曲线的空间数据存储索引方法 - Google Patents
基于z曲线的空间数据存储索引方法 Download PDFInfo
- Publication number
- CN112015740B CN112015740B CN202011117997.0A CN202011117997A CN112015740B CN 112015740 B CN112015740 B CN 112015740B CN 202011117997 A CN202011117997 A CN 202011117997A CN 112015740 B CN112015740 B CN 112015740B
- Authority
- CN
- China
- Prior art keywords
- latitude
- longitude
- curve
- binary
- target
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明公开基于Z曲线的空间数据存储索引方法,包括如下步骤:预设经纬度的固定范围;获取目标经纬度,并将目标经纬度始终投放在固定范围内,使用二分法逐步进行二进制化编码处理,得到经纬度的二进制串;将经纬度的二进制串进行错位混淆,获得二进制编码;对二进制混淆后的经纬度进行编码采用double数据类型表示,形成稳态Z曲线编码。本发明达到对任意尺度大规模数据动态编码的无尺度适应,且采用double小数域进行编码,结构更加紧凑,对大规模数据的插入查询更加友好,更加高效。
Description
技术领域
本发明涉及位置查询技术领域,尤其涉及基于Z曲线的空间数据存储索引方法。
背景技术
数据库索引机制可以快速访问一条特定查询所请求的数据,而无需遍历整个数据库,因此为了提高检索效率,数据库一般都会建立一系列的索引机制,如B-树,但是这些都是一维索引,无法处理空间数据库中二维和多维空间数据。这种情况在NoSQL数据库中尤为突出,NoSQL数据库多为Key-Value的一维索引结构,以保持应对大规模数据的简洁高效,例如Hbase,Redis,Cassandra等。
因此,NoSQL数据库常采用降维方法将空间数据用一维形式表达以达到索引检索的目的,空间填充曲线(Space filling Curve)是其中一种常用方法,例如Elasticsearch,MongoDB,Hbase以及Accumulo都提供了采用GeoHash的方式检索查询空间数据的支持。但是GeoHash最初设计目的是为每一个经纬度坐标提供一个独一无二的字符串表达,以方便人们在邮件、论坛、网站等引用具体的地理位置,对数据库读写操作有一定不便。
在大数据数据量庞大的背景下,采用GeoHash作为空间数据存储索引方式就显得有些粗糙。首先,GeoHash采用一个字节表达5位的编码,每5次划分都要多出32.5%的空间,在全球尺度下如果采用64位的二进制GeoHash编码则每一个数据需要额外1.625倍的空间存储。这种编码方式在处理TB或者PB级空间数据时数据冗余较大严重影响效率,不利于空间索引在大规模数据上使用。其次,GeoHash在不同深度上的编码方式往往长短不一样,在小范围多尺度条件下空间编码比较复杂多变,不利于分布式划分与数据检索平滑过渡,制约了其使用灵活性,导致其对小范围大规模数据插入与查询不友好。
另一方面,与传统空间填充曲线编码索引鲜明不同的是,在大数据NoSQL环境下,空间数据编码更是应该作为分布式数据库进行数据划分的依据。NoSQL数据库通常都是分布式数据库,具有多个数据节点,依赖一个划分键进行数据划分,例如MongoDB使用Sharding Key进行分布式数据划分。GeoHash在不同深度上的编码方式尺度不一,编码值非连续跳动,再进行跨尺度插入与查询时Key需要特殊处理,影响了查询效率。
发明内容
为了解决上述技术问题,本发明提出基于Z曲线的空间数据存储索引方法。
为了达到上述目的,本发明的技术方案如下:
基于Z曲线的空间数据存储索引方法,包括如下步骤:
预设经纬度的固定范围;
获取目标经纬度,并将目标经纬度始终投放在固定范围内,使用二分法逐步进行二进制化编码处理,得到经纬度的二进制串;
将经纬度的二进制串进行错位混淆,获得二进制编码;
对二进制混淆后的经纬度进行编码采用double数据类型表示,形成稳态Z曲线编码。
优选地,还包括如下步骤,判断目标经纬度是否在预设经纬度的固定范围中,若在,则double数据类型的符号位为正,若不在,则double数据类型的符号位为负。
优选地,所述预设经纬度的固定范围中,经度固定范围为0至180;纬度固定范围为-90至90。
优选地,所述double数据类型为双精度浮点数。
优选地,所述稳态Z曲线编码存储在double数据类型小数域。
优选地,所述稳态Z曲线double数据类型的小数域中预留阶位,所述阶位表示数值的整数以下的划分次数。
一种计算机可读取存储介质,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如上述任意一项所述的方法。
一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如上述任意一项所述的方法。
基于上述技术方案,本发明的有益效果是:本发明适合于分布式集群环境的空间数据库在并行空间数据划分过程中应该综合考虑到各项空间因素,例如有空间数据分布以及实体关联等,在空间数据划分中需要考虑到空间数据集的空间查询方法。本文基于空间填充曲线构建空间数据划分算法,由于Z曲线本的优良空间聚类特征,能够有效地保持空间对象的邻接关系,而且还能满足数据量负载均衡的要求。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1:实施例一基于Z曲线的空间数据存储索引方法的方法流程图;
图2:稳态Z曲线double数据类型编码结构;
图3:本发明与Geohash分别执行编、解码效率试验的实验结果对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
实施例一
本发明采用Z曲线编码思路,首先对经纬度坐标进行二分法二进制编码,但采用数值类型作为编码,将经纬度始终投放在固定范围(min,max),从而达到对任意尺度大规模数据动态编码的无尺度适应,称之为稳态Z曲线动态编码算法。稳态Z曲线编码使用小数域进行编码,是一种为NoSQL数据库量身定做的空间数据编码方式,结构更加紧凑,对大规模数据的插入查询更加友好。
(1)经纬度坐标二进制化
与GeoHash算法类似,首先使用二分法逐步逼近地理经纬度坐标值,目标经纬度大于范围中间值,则取值为1,目标经纬度小于中间值,则取值为0,可以得到一个任意精度的二进制串。例如,南京大学鼓楼校区北大楼坐标(118.7810,32.0570),将南京大学鼓楼校区北大楼坐标使用二分法逐步逼近经纬度坐标值,经度固定范围为(0,180),纬度固定范围为(-90,90),其中,坐标经度的整数部分118>经度范围中间值90,因此,第一次经度划分为1;坐标纬度的整数部分纬度在北半球32>纬度范围中间值0,第一次纬度划分也为1,以此类推,经9次划分二进制化编码处理后可以得到二进制串,南京大学鼓楼校区北大楼经度的二进制串为:101010001,纬度的二进制串为:101011011,如表1所示。
表1南京大学北大楼坐标经纬度坐标的Z曲线二进制串
(2)经纬度二进制混淆
Z曲线编码生产算法比较简单,只需要将经度和纬度二进制串进行错位混淆,经度置于奇数位,纬度置于偶数位,即可以得到一个二进制编码,算法实现中由位运算完成效率很高,如表2所示。
表2南京大学北大楼坐标经纬度坐标混淆后Z曲线二进制串
(3)二进制编码的浮点数表示
但是常见数据库并不能支持任意精度的二进制串,常见基础数据类型及其编码精度,参见表3,其中double数据类型在各种操作系统和编程语言中支持较为常见,decimal数据类型精度虽高但是容量过大,因此,本文采用double(64位)浮点型数据类型来表示Z曲线编码结果,记为Dz。
表3常见基础数据类型及其编码精度
double数据类型为双精度浮点数,其在IEEE 754标准中浮点数存储标准如表4所示,计算机表示格式如图2所示,double类型数据采用64位进行存储,其中小数域一共52位,符号域为1位,指数域为11位。稳态Z曲线二进制编码存储Dz在double数据类型小数域,因此,一共有52位有效位。
表4 IEEE 754标准中浮点数存储标准
根据Z曲线空间划分规则,稳态Z曲线采用纬度18次划分,经度19次划分,一共37位作为稳态Z曲线double数据类型(Dz)的整数位,此时格网精度约为76m,参见精度对照表5。由于double数据类型第一位始终是数字1被省略表达,同时为了节省存储空间利用double的符号位,约定东半球采用正整数表示,西半球采用负整数表示,本实施例中定义东半球的经度范围为(-180,180),纬度范围为(-90,90),地球周长取40076千米(赤道)。因此稳态Z曲线double数据类型(Dz)整数位最多不超过35位,实际表达数值范围为-237+1~237。
表5稳态Z曲线划分精度对照表
如果因精度需要再进行划分,Dz将采用小数表示,但受制于double数据类型存储位数52位的限制,Dz可用的小数存储位数还剩17位,但考虑需要存储编码值的阶位以表示数值所在的精度,留出三位表示整数以下的划分次数(0-7阶,0表示没有小数域划分,7表示经纬度小数域分别经过7次划分),故小数域还可以进行最多7次划分,14位小数,如表6所示。
因此Dz可以支持空间数据按照稳态Z曲线划分纬度25次,经度26次,编码最长51位,实际占据double数据类型48位,单元精度为59.72cm。因此,稳态Z曲线借助标准数据类型double数据进行编码构建,从而使得编码可以无尺度平滑过渡,其时间复杂度为O(n),n∈[12,26],空间复杂度为常量,相比Geohash算法数据结构更加紧凑高效。
以南京大学北大楼为例,南京大学北大楼的地理坐标为(118.7810,32.0570),判断坐标是否处于东半球,其中,坐标经度的整数部分118>90,因此,第一次经度划分为1;坐标纬度的整数部分纬度在北半球32>0第一次纬度划分也为1,按照Z曲线规则依次进行25次划分,可以得到表6二进制编码,18次划分为整数位。
表6南京大学北大楼稳态Z曲线编码
利用Java语言实现稳态Z曲线算法,并与Geohash的Java实现进行对比试验。两个算法在同一硬件条件,反复执行100次对比试验,计算每秒钟可以完成的操作数。对比试验结果如图3所示,稳态Z曲线编码每秒钟编码效率可以达到30.01M ops/sec,高于Geohash每秒钟3.22M ops/sec的执行效率;稳态Z曲线编码每秒钟解码效率可以达到23.20M ops/sec,高于Geohash每秒钟2.75M ops/sec的执行效率。由此可以得出,稳态Z曲线效率相比Geohash有着明显的优势,这主要是由于稳态Z曲线在分别编码、解码过程中减少了Geohash字符转化的操作,只需要进行位运算完成,因此获得更好的效率。
以上所述仅为本发明所公开的基于Z曲线的空间数据存储索引方法的优选实施方式,并非用于限定本说明书实施例的保护范围。凡在本说明书实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本说明书实施例的保护范围之内。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书实施例中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (6)
1.基于Z曲线的空间数据存储索引方法,其特征在于,包括如下步骤:
预设经纬度的固定范围;
获取目标经纬度,并将目标经纬度始终投放在固定范围内,使用二分法逐步进行二进制化编码处理,得到经纬度的二进制串;
将经纬度的二进制串进行错位混淆,获得Z曲线二进制编码;
对目标经纬度混淆后的二进制串,以不超过35位作为整数位,14位作为小数位,3位作为预留阶位存储到double数据类型中,形成稳态Z曲线编码;
所述稳态Z曲线编码存储在double数据类型的小数域,所述double数据类型的小数域中预留阶位,所述阶位表示数值的整数以下的划分次数;
基于目标的稳态Z曲线编码进行检索查询目标空间数据。
2.根据权利要求1所述的基于Z曲线的空间数据存储索引方法,其特征在于,还包括如下步骤,判断目标经纬度是否在预设经纬度的固定范围中,若在,则double数据类型的符号位为正,若不在,则double数据类型的符号位为负。
3.根据权利要求2所述的基于Z曲线的空间数据存储索引方法,其特征在于,所述预设经纬度的固定范围中,经度固定范围为0至180;纬度固定范围为-90至90。
4.根据权利要求1所述的基于Z曲线的空间数据存储索引方法,其特征在于,所述double数据类型为双精度浮点数。
5.一种计算机可读取存储介质,其特征在于,所述计算机可读取存储介质中存储有程序代码,所述程序代码可被处理器调用执行如权利要求1至4任一项所述的方法。
6.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行如权利要求1至4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011117997.0A CN112015740B (zh) | 2020-10-19 | 2020-10-19 | 基于z曲线的空间数据存储索引方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011117997.0A CN112015740B (zh) | 2020-10-19 | 2020-10-19 | 基于z曲线的空间数据存储索引方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112015740A CN112015740A (zh) | 2020-12-01 |
CN112015740B true CN112015740B (zh) | 2022-04-26 |
Family
ID=73528039
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011117997.0A Active CN112015740B (zh) | 2020-10-19 | 2020-10-19 | 基于z曲线的空间数据存储索引方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112015740B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110070599A (zh) * | 2018-01-23 | 2019-07-30 | 北京云游九州空间科技有限公司 | 一种空间网格调度方法及装置 |
CN111078806A (zh) * | 2019-10-12 | 2020-04-28 | 平安科技(深圳)有限公司 | 位置查询方法、装置、计算机设备及存储介质 |
-
2020
- 2020-10-19 CN CN202011117997.0A patent/CN112015740B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110070599A (zh) * | 2018-01-23 | 2019-07-30 | 北京云游九州空间科技有限公司 | 一种空间网格调度方法及装置 |
CN111078806A (zh) * | 2019-10-12 | 2020-04-28 | 平安科技(深圳)有限公司 | 位置查询方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112015740A (zh) | 2020-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9719790B2 (en) | Mapping uncertain geometries to graticules | |
CN107798054B (zh) | 一种基于Trie的范围查询方法及装置 | |
CN107766433B (zh) | 一种基于Geo-BTree的范围查询方法及装置 | |
CN109101474B (zh) | 一种地址聚合的方法、包裹聚合的方法以及设备 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN112685407A (zh) | 一种基于GeoSOT全球剖分网格编码的空间数据索引方法 | |
EP3117344B1 (en) | Density-based dynamic geohash | |
CN106126486A (zh) | 时间信息编码方法、编码值检索方法、解码方法与装置 | |
CN106844288B (zh) | 一种随机字符串生成方法及装置 | |
US20190087466A1 (en) | System and method for utilizing memory efficient data structures for emoji suggestions | |
CN111522892A (zh) | 地理要素的检索方法及装置 | |
WO2019240912A1 (en) | Relational data model for hierarchical databases | |
CN112214472A (zh) | 气象格点数据的存储及查询方法、装置及存储介质 | |
US9602129B2 (en) | Compactly storing geodetic points | |
Qu et al. | STGI: a spatio-temporal grid index model for marine big data | |
CN112015740B (zh) | 基于z曲线的空间数据存储索引方法 | |
Kowsari et al. | Construction of fuzzyfind dictionary using golay coding transformation for searching applications | |
CN110475204A (zh) | 一种地理围栏逆地址解析方法、装置及设备 | |
CN116049521A (zh) | 一种基于空间网格编码的时空数据检索方法 | |
CN115495537A (zh) | 一种地址描述信息处理方法及设备 | |
Liu et al. | GB-Tree: An efficient LBS location data indexing method | |
CN104156475A (zh) | 地理信息读取方法及装置 | |
Kumar et al. | Compendious and Optimized Succinct Data Structures for Big Data Store | |
CN115952859B (zh) | 数据处理方法、装置及设备 | |
CN116089731B (zh) | 一种缓解灾难性遗忘的在线哈希检索方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |