CN109325086B - 一种离散地理数据归档管理方法 - Google Patents
一种离散地理数据归档管理方法 Download PDFInfo
- Publication number
- CN109325086B CN109325086B CN201810910212.1A CN201810910212A CN109325086B CN 109325086 B CN109325086 B CN 109325086B CN 201810910212 A CN201810910212 A CN 201810910212A CN 109325086 B CN109325086 B CN 109325086B
- Authority
- CN
- China
- Prior art keywords
- data
- precision
- node
- describes
- geographic
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种离散地理数据归档管理方法,包括如下步骤:1、对离散的小数据或文件按统一编码;2、根据统一编码设计高效的检索树,便于快速的查询;3、利用大文件内存映射技术实现快速的读写访问,本发明有效地实现了离散小数据或文件的高效访问以及存储控制。
Description
技术领域
本发明涉及数据归档管理技术领域,具体地说是一种离散地理数据归档管理方法。
背景技术
在当前各种地理信息系统与仿真平台中,广泛的依赖各类地理数据,如描述地貌的影像数据、描述地形的高程数据以及矢量数据等,该类数据在实际使用过程中都是基于区域产生的,很容易产生大量离散的小数据,计算机在处理该类离散的数据时存在存储零碎、读写复杂、效率低下等问题。
发明内容
针对现有离散地理数据使用中存在的问题,本发明公开了一种高效的离散地理数据归档管理方法,该方法基于大量离散的地理数据所包含的位置与精度信息,首先构建全球唯一编码,进而建立高效的索引访问机制,最后利用内存文件映射技术实现了高效的数据实时读写,该方法解决了离散的地理数据使用过程中遇到的存储难、读写复杂、访问效率低下的问题。
本发明公开了种离散地理数据归档管理方法,包括以下步骤:
S1:对离散的地理数据进行空间编码,编码规则根据经纬度栅格和数据精度;
S2:建立四叉树索引机制,利用索引缓存与下标访问方法命中任意一个地理数据的编码,以获取编码内的数据信息;
S3:在得到的数据信息的基础上,利用大文件映射方法,实现数据的读写访问控制;
其中,数据精度可由符合数据特色的信息替代。
所述S1中标准化后的地理数据结构表达为GeoDataStruct:
GeoDataStructi={Lng,Lat,Precision}
其中,GeoDataStructi表示第i个地理数据,Lng表示该数据的地理经度,Lat表示该数据的地理纬度。
所述四叉树索引机制,由根节点和往下裂变的子节点构成,具体包括以下步骤:
S2-1:从全球范围将地球分为东西两个半球,得到两个节点区域:
东半球节点SpacialNodeEast={Precision=0,0°≤Lng≤180°,-90°≤Lat≤90°}
西半球节点SpacialNodewest={Precision=0,-180°≤Lng≤0°,-90°≤Lat≤90°}
东西半球节点自上而下以四叉树的方式裂变,得到子节点;
S2-2:定义描述每个索引节点的数据结构GeoCacheIndex:
GeoCacheIndex={Precision,DataState,CacheID,DataLength,DataAddr,Index,Row,Col,Level,IndexOfParent,IndexOfChildLT,IndexOfChildRT,IndexOfChildLB,Inde xOfChildRB}
其中,Precision描述数据的精度,DataState描述数据的状态,CacheID描述对应的归档文件号,DataLength描述数据长度,DataAddr表示数据地址,Index描述节点索引号,Row为基于纬度计算得出的行号,Col为基于经度计算得出的列号,Level为根据Precision计算得出的层号,IndexOfParent描述父节点索引号,IndexOfChildLT描述左上角孩子节点索引号,IndexOfChildRT描述右上角节点索引号,IndexOfChildLB描述左下角孩子节点索引号,IndexOfChildRB描述右下角孩子节点索引号;
S2-3:建立一个GeoCacheIndex数组TreeNodes,数组初始时所有数据状态为空,随着四叉树的建立该数组逐步填充;
S2-4:根据新到的数据请求,根据其经纬度选择相应的半球节点向下遍历,节点不存在时则创建,记当前TreeNodes的数组游标为Flag,新建树节点TreeNode。
所述S3中的大文件映射方法具体为:创建一块固定大小的内存块,利用虚拟内存读取整个大文件,再从中取出对应的数据映射到实际内存中,将地理数据GeoData写入到该内存,记录地址到TreeNode.DataAddr中,记录数据长度到TreeNode.DataLength中。
有益效果:本发明与现有技术相比,本发明公开的离散地理数据归档化管理方法的优点在于:
1、根据地理数据包含的区域位置与精度信息进行全球唯一编码,便于对数据的身份认证;
2、基于四叉树的索引机制在工程实践过程中加以优化,利用索引缓存技术与数组下标直接命中法较好的解决了100万个数组的遍历与访问;
3、利用大文件映射技术对离散的地理数据进行归档化管理,形成一份大的文件,提升了总体的访问效率与存储能力,便于数据安全保密与整体迁移升级。
附图说明
图1是本发明的工作流程图;
图2是本发明的四叉场景树构建示意图;
图3是本发明的索引树节点创建示意图;
图4是本发明的离散小文件映射到归档大文件示意图。
具体实施方式
下面结合附图和实施例进一步阐述本发明。
如图1所示,本发明公开了一种高效的离散地理数据归档化管理方法,包括如下步骤:
S1:分析并读入离散地理数据所包含的所处区域位置与数据精度信息,构建全球唯一的地理编码;
记标准化后的地理数据结构表达为GeoDataStruct:
GeoDataStructi={Lng,Lat,Precision}
其中,GeoDataStructi表示第i个地理数据,Lng表示该数据的地理经度,Lat表示该数据的地理纬度,Precision在本发明中表述为数据精度,但在具体事件中也可设置为数据类型、数据来源等信息,主要用于建立符合数据特色的全球唯一编码。
S2:构建基于四叉树的索引机制,并在该机制的具体实践中利用索引缓存与下标访问方法,使得算法能在0.01秒内快速的命中任意一个地理数据的编码,进而获得该编码内数据的详细信息;
四叉树索引机制,其由根节点和往下裂变的子节点构成,该机制能快速的实现地理数据的命中访问,四叉树构建过程如下:
首先,从全球范围将地球分为东西两个半球,得到如下两个节点区域:
东半球节点SpacialNodeEast={Precision=0,0°≤Lng≤180°,-90°≤Lat≤90°}
西半球节点SpacialNodewest={Precision=0,-180°≤Lng≤0°,-90°≤Lat≤90°}
上述公式意义表述为在基础层,东半球经度范围为0到180度,纬度范围为-90到90度,西半球经度范围为-180到0度,纬度为-90度到90度。
随着Precision的增大,各节点自上而下以四叉树的方式裂变。即子节点的经纬度范围是上一层节点的1/4,见四叉场景树构建示意图。
其次,定义描述每个索引节点的数据结构GeoCacheIndex:
GeoCacheIndex={Precision,DataState,CacheID,DataLength,DataAddr,Index,Row,Col,Level,IndexOfParent,IndexOfChildLT,IndexOfChildRT,IndexOfChildLB,Inde xOfChildRB}
其中,Precision描述数据的精度,DataState描述数据的状态(存在、不存在、未知三种状态),CacheID描述对应的归档文件号,DataLength描述数据长度,DataAddr表示数据地址,Index描述节点索引号,Row为基于纬度计算得出的行号,Col为基于经度计算得出的列号,Level为根据Precision计算得出的层号,IndexOfParent描述父节点索引号,IndexOfChildLT描述左上角孩子节点索引号,IndexOfChildRT描述右上角节点索引号,IndexOfChildLB描述左下角孩子节点索引号,IndexOfChildRB描述右下角孩子节点索引号。
其次,建立一个长度为1024*100的GeoCacheIndex数组TreeNodes[1024*100],初始时所有数据状态为空,随着四叉树的建立该数组逐步填充。
根据新到的数据请求,根据其经纬度位置选择相应的半球节点向下遍历,节点不存在时则创建,记当前TreeNodes的数组游标为Flag(Flag初始为0,实际值为1024*100减去当前数据容量,如经过建立东西半球节点则Flag为2),新建树节点TreeNode。
假设某地理数据GeoData的经纬度范围在东半球,数据精度比根节点更加精细,则根据精细程度向下建立N层新的节点,N的计算过程根据Precision的应用场景决定,本案例中N=512/Precision。本案例中N为2,则首先找到EastRootTreeNode,再根据其范围决定具体在哪个孩子节点中,假设在左下角孩子节点中,则EastRootTreeNode.IndexOfChildID=TreeNode.Index,后续再为TreeNode创建相应的孩子节点,同时修改TreeNode的孩子节点索引,具体详见图3。
S3:基于数据编码信息,利用大文件内存映射技术,可以快速的实现数据的读写与访问控制,其读写速度均控制在50毫秒之内,在写数据时,通过建立本地大文件的方法,将离散的数据写入大文件,在本实施例中将单个大文件大小设置为512M。
首先根据TreeNode的CacheID访问到相应的归档文件,其中会使用到大文件映射技术,其原理是:创建一块固定大小的内存块,大小与具体的地理数据类型有关,本案例中取为10M,利用虚拟内存读取整个大文件,再从中取出对应的数据映射到实际内存中,将GeoData写入到该内存,记录地址到TreeNode.DataAddr中,记录数据长度到TreeNode.DataLength中,具体详见图4。
Claims (2)
1.一种离散地理数据归档管理方法,其特征在于:包括以下步骤:
S1:对离散的地理数据进行空间编码,编码规则根据经纬度栅格和数据精度;
S2:建立四叉树索引机制,利用索引缓存与下标访问方法命中任意一个地理数据的编码,以获取编码内的数据信息;
S3:在得到的数据信息的基础上,利用大文件映射方法,实现数据的读写访问控制;
其中,数据精度可由符合数据特色的信息替代;
所述S1中标准化后的地理数据结构表达为GeoDataStruct:
GeoDataStructi={Lng,Lat,Precision}
其中,GeoDataStructi表示第i个地理数据,Lng表示该数据的地理经度,Lat表示该数据的地理纬度,Precision表示数据的精度;
所述四叉树索引机制,由根节点和往下裂变的子节点构成,具体包括以下步骤:
S2-1:从全球范围将地球分为东西两个半球,得到两个节点区域:
东半球节点SpacialNodeEast={Precision=0,0°≤Lng≤180°,-90°≤Lat≤90°}
西半球节点SpacialNodewest={Precision=0,-180°≤Lng≤0°,-90°≤Lat≤90°}
东西半球节点自上而下以四叉树的方式裂变,得到子节点;
S2-2:定义描述每个索引节点的数据结构GeoCacheIndex:
GeoCacheIndex={Precision,DataState,CacheID,DataLength,DataAddr,Index,Row,Col,Level,IndexOfParent,IndexOfChildLT,IndexOfChildRT,IndexOfChildLB,IndexOfChildRB}
其中,Precision描述数据的精度,DataState描述数据的状态,CacheID描述对应的归档文件号,DataLength描述数据长度,DataAddr表示数据地址,Index描述节点索引号,Row为基于纬度计算得出的行号,Col为基于经度计算得出的列号,Level为根据Precision计算得出的层号,IndexOfParent描述父节点索引号,IndexOfChildLT描述左上角孩子节点索引号,IndexOfChildRT描述右上角节点索引号,IndexOfChildLB描述左下角孩子节点索引号,IndexOfChildRB描述右下角孩子节点索引号;
S2-3:建立一个GeoCacheIndex数组TreeNodes,数组初始时所有数据状态为空,随着四叉树的建立该数组逐步填充;
S2-4:根据新到的数据请求,根据其经纬度位置选择相应的半球节点向下遍历,节点不存在时则创建,记当前TreeNodes的数组游标为Flag,新建树节点TreeNode。
2.根据权利要求1所述的一种离散地理数据归档管理方法,其特征在于:所述S3中的大文件映射方法具体为:创建一块固定大小的内存块,利用虚拟内存读取整个大文件,再从中取出对应的数据映射到实际内存中,将地理数据GeoData写入到该内存,记录地址到TreeNode.DataAddr中,记录数据长度到TreeNode.DataLength中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810910212.1A CN109325086B (zh) | 2018-08-10 | 2018-08-10 | 一种离散地理数据归档管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810910212.1A CN109325086B (zh) | 2018-08-10 | 2018-08-10 | 一种离散地理数据归档管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109325086A CN109325086A (zh) | 2019-02-12 |
CN109325086B true CN109325086B (zh) | 2021-01-26 |
Family
ID=65263409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810910212.1A Active CN109325086B (zh) | 2018-08-10 | 2018-08-10 | 一种离散地理数据归档管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109325086B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750708A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN106933833A (zh) * | 2015-12-30 | 2017-07-07 | 中国科学院沈阳自动化研究所 | 一种基于空间索引技术的位置信息快速查询方法 |
CN106991149A (zh) * | 2017-03-28 | 2017-07-28 | 桂林电子科技大学 | 一种融合编码和多版本数据的海量空间对象存储方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2589931B1 (en) * | 2011-11-07 | 2016-06-29 | Elektrobit Automotive GmbH | Technique for structuring navigation data |
-
2018
- 2018-08-10 CN CN201810910212.1A patent/CN109325086B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750708A (zh) * | 2013-12-27 | 2015-07-01 | 华为技术有限公司 | 一种时空数据的索引建立方法、查询方法、装置及设备 |
CN106933833A (zh) * | 2015-12-30 | 2017-07-07 | 中国科学院沈阳自动化研究所 | 一种基于空间索引技术的位置信息快速查询方法 |
CN106991149A (zh) * | 2017-03-28 | 2017-07-28 | 桂林电子科技大学 | 一种融合编码和多版本数据的海量空间对象存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109325086A (zh) | 2019-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1429263B1 (en) | Method for organizing map data | |
CN104252489B (zh) | 一种根据经纬度数据快速获得位置文字描述信息的方法 | |
CN105630968A (zh) | 面向Cassandra的分布式可扩展四叉树索引机制及基于该机制的查询方法 | |
CN105138560A (zh) | 基于多级空间索引技术的分布式空间矢量数据管理方法 | |
CN113946700A (zh) | 一种时空索引构建方法、装置、计算机设备及存储介质 | |
CN110909093B (zh) | 智慧地标控制网的构建方法及装置 | |
JP2022024065A (ja) | マルチ解像度画像システム | |
CN111291016A (zh) | 一种海量遥感影像数据分层混合存储与索引方法 | |
CN111475597B (zh) | 非刚性网格编码、空间对象唯一标识、查询方法及装置 | |
CN111723096B (zh) | 一种集成GeoHash和Quadtree的空间数据索引方法 | |
CN109614454B (zh) | 一种基于mpi的矢量大数据并行空间叠置分析方法 | |
CN113269870B (zh) | 一种基于三维剖分网格的多分辨率数字地形集成方法 | |
CN111552694A (zh) | 一种自适应地理空间网格索引方法 | |
CN108920499A (zh) | 一种面向周期性检索的时空轨迹索引与检索方法 | |
CN106991149B (zh) | 一种融合编码和多版本数据的海量空间对象存储方法 | |
CN108205562A (zh) | 地理信息系统的定位数据存储、检索方法及其装置 | |
CN102663028A (zh) | 一种适用于全球数字高程模型和遥感影像数据快速空间索引的方法 | |
CN115687675A (zh) | 一种机载矢量地图数据处理方法 | |
CN110533764B (zh) | 面向建筑群的分形四叉树纹理组织方法 | |
CN113326343B (zh) | 基于多级网格和文件索引的路网数据存储方法及系统 | |
CN114398459A (zh) | 一种面向船舶定位数据的时空网格与树融合的存储方法 | |
CN109325086B (zh) | 一种离散地理数据归档管理方法 | |
CN110475204B (zh) | 一种地理围栏逆地址解析方法、装置及设备 | |
CN109827585B (zh) | 一种快速填补栅格地图中凹形区域的方法 | |
CN115408382B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No.1 Lingshan South Road, Qixia District, Nanjing City, Jiangsu Province 210046 Applicant after: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. Address before: 210000 No. 1 East Garden Street, Qinhuai District, Jiangsu, Nanjing Applicant before: THE 28TH RESEARCH INSTITUTE OF CHINA ELECTRONICS TECHNOLOGY Group Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |