一种离散地理数据归档管理方法与流程

文档序号:16855735发布日期:2019-02-12 23:16阅读:418来源:国知局
一种离散地理数据归档管理方法与流程

本发明涉及数据归档管理技术领域,具体地说是一种离散地理数据归档管理方法。



背景技术:

在当前各种地理信息系统与仿真平台中,广泛的依赖各类地理数据,如描述地貌的影像数据、描述地形的高程数据以及矢量数据等,该类数据在实际使用过程中都是基于区域产生的,很容易产生大量离散的小数据,计算机在处理该类离散的数据时存在存储零碎、读写复杂、效率低下等问题。



技术实现要素:

针对现有离散地理数据使用中存在的问题,本发明公开了一种高效的离散地理数据归档管理方法,该方法基于大量离散的地理数据所包含的位置与精度信息,首先构建全球唯一编码,进而建立高效的索引访问机制,最后利用内存文件映射技术实现了高效的数据实时读写,该方法解决了离散的地理数据使用过程中遇到的存储难、读写复杂、访问效率低下的问题。

本发明公开了种离散地理数据归档管理方法,包括以下步骤:

s1:对离散的地理数据进行空间编码,编码规则根据经纬度栅格和数据精度;

s2:建立四叉树索引机制,利用索引缓存与下标访问方法命中任意一个地理数据的编码,以获取编码内的数据信息;

s3:在得到的数据信息的基础上,利用大文件映射方法,实现数据的读写访问控制;

其中,数据精度可由符合数据特色的信息替代。

所述s1中标准化后的地理数据结构表达为geodatastruct:

geodatastructi={lng,lat,precision}

其中,geodatastructi表示第i个地理数据,lng表示该数据的地理经度,lat表示该数据的地理纬度。

所述四叉树索引机制,由根节点和往下裂变的子节点构成,具体包括以下步骤:

s2-1:从全球范围将地球分为东西两个半球,得到两个节点区域:

东半球节点spacialnodeeast={precision=0,0°≤lng≤180°,-90°≤lat≤90°}

西半球节点spacialnodeeast={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描述对应的归档文件号,datalengtg描述数据长度,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°}

西半球节点spacialnodeeast={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,indexofchildrb}

其中,precision描述数据的精度,datastate描述数据的状态(存在、不存在、未知三种状态),cacheid描述对应的归档文件号,datalengtg描述数据长度,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。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1