首页> 中国专利> 一种非规则格网数据的快速存储与查询方法

一种非规则格网数据的快速存储与查询方法

摘要

本发明公开了一种非规则格网数据的快速存储与查询方法,该方法包括以下步骤:1)格网大数据分布式存储步骤;2)非规则格网数据加载步骤;3)非规则格网数据查询步骤;4)格网数据的拼接步骤;5)数据导出步骤。本发明通过分布式的存储方式提高了数据查询的效率,在本发明方法的基础上可实现对格网大数据的方便有效管理。

著录项

  • 公开/公告号CN105205095A

    专利类型发明专利

  • 公开/公告日2015-12-30

    原文格式PDF

  • 申请/专利权人 中国地质大学(武汉);

    申请/专利号CN201510500451.6

  • 发明设计人 余翔宇;

    申请日2015-08-14

  • 分类号G06F17/30;

  • 代理机构湖北武汉永嘉专利代理有限公司;

  • 代理人唐万荣

  • 地址 430074 湖北省武汉市洪山区鲁磨路388号

  • 入库时间 2023-12-18 13:14:03

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-31

    未缴年费专利权终止 IPC(主分类):G06F16/29 授权公告日:20190326 终止日期:20190814 申请日:20150814

    专利权的终止

  • 2019-03-26

    授权

    授权

  • 2016-01-27

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20150814

    实质审查的生效

  • 2015-12-30

    公开

    公开

说明书

技术领域

本发明涉及数据存储技术,尤其涉及一种非规则格网数据的快速存储与查询方法。

背景技术

在地球信息科学技术中,地球探测数据一般以格网形式的文件进行存储。由于文件很大,用户通常难以进行查询和提取。而应用传统的数据库(特别是关系数据库)技术进行管理又不可避免的陷入大表问题,即随着数据量的不断增长数据越来越难以管理。在地球物理探测数据中,常会使用非规则格网数据。即格网的单元大小不一致,因此难以使用类似grd的标准格网文件格式进行存储,只能使用(x-y-z-data)的形式一行行的将数据记录下来。此外,对于三维非规则格网,数据的记录顺序也比较灵活,有些采用沿Z方向的XY平面逐层记录;有些采用沿Y方向的XZ剖面逐层记录。如何存储和管理非规则格网数据是一个亟待解决的难题。

发明内容

本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种非规则格网数据的快速存储与查询方法。

本发明解决其技术问题所采用的技术方案是:一种非规则格网数据的快速存储与查询方法,包括以下步骤:

1)格网大数据分布式存储步骤

1.1)将格网数据分离为格网元数据与格网属性数据;

非规则格网元数据内容包括:[格网ID、格网范围、XYZ方向坐标序列、数据加载顺序标识];

其中,

格网ID由格网产生时间及其类型编码生成,XYZ方向坐标序列记录了格网在X,Y,Z方向上的投影坐标;

格网属性数据内容包括:[数据ID、数据值单位描述、属性值];

其中,

数据ID由格网ID值与数据在格网中的加载顺序/索引组合而成;

1.2)对分离后的格网数据分布式存储;

2)非规则格网数据加载步骤

2.1)根据数据加载顺序标识对非规则格网数据进行预读取,判断出非规则格网数据的加载顺序;

2.2)检测相邻两行格网数据记录的x、y、z分量,记录发生变化的位置分量和对应的分量坐标序列;

2.3)遍历所有数据,完成数据的加载,并得到整个非规则格网的范围;

3)非规则格网数据查询步骤;

3.1)获取用户在屏幕视图坐标系中需查询数据的XY坐标;

3.2)根据该非规则格网的XY坐标序列换算成正常加载情况下(x-y-z顺序)的待查询数据在格网中的索引值;

3.3)根据非规则格网数据自身的加载顺序来换算成真实的数据索引值:

若加载顺序为x_y_z,真实的数据索引值为i;

若加载顺序为x_z_y,真实的数据索引值为(i%(xSize*ySize))/xSize*(xSize*zSize)+i/(xSize*ySize)*xSize+i%xSize;

若加载顺序为y_x_z,真实的数据索引值为(i%xSize)*(ySize*xSize)+i/(ySize*xSize)*ySize+(i%(ySize*xSize))/xSize;

若加载顺序为y_z_x,真实的数据索引值为(i%xSize)*(ySize*zSize))+i/(xSize*ySize)*ySize+(i%(ySize*xSize))/xSize;

若加载顺序为z_x_y,真实的数据索引值为(i%(xSize*ySize))/xSize)*(xSize*zSize)+i%xSize*zSize+i/(xSize*ySize);

若加载顺序为z_y_x,真实的数据索引值为(i%xSize)*(zSize*ySize)+(i%(xSize*ySize))/xSize*zSize+i/(xSize*ySize);

其中,%为取余数运算符;

i为数据加载顺序为x-y-z时的数据索引值,xSize,ySize,zSize分别代表三个坐标方向上的坐标序列个数)

4)格网数据的拼接步骤

4.1)确定拼接后的目标格网的格网范围;

4.2)选择待拼接格网

4.3)确定拼接边缘;

4.4)完成格网拼接;

5)数据导出步骤

5.1)分别确定XYZ坐标方向上的序列索引值

若最初的加载顺序为x_y_z,XYZ坐标序列索引值为xi=i%xSize;yi=(i%(xSize*ySize))/xSize;zi=i/(xSize*ySize);

若最初的加载顺序为x_z_y,XYZ坐标序列索引值为xi=i%xSize;yi=i/(xSize*zSize);zi=(i%(xSize*zSize))/xSize;

若最初的加载顺序为y_x_z,XYZ坐标序列索引值为xi=(i%(ySize*xSize))/ySize;yi=i%ySize;zi=i/(ySize*xSize);

若最初的加载顺序为y_z_x,XYZ坐标序列索引值为xi=i/(ySize*zSize);yi=i%ySize;zi=(i%(ySize*zSize))/ySize;

若最初的加载顺序为z_x_y,XYZ坐标序列索引值为xi=(i%(zSize*xSize))/zSize;yi=i/(zSize*xSize);zi=i%zSize;

若最初的加载顺序为z_y_x,XYZ坐标序列索引值为xi=i/(zSize*ySize);yi=(i%(zSize*ySize))/zSize;zi=i%zSize;

其中,i为数据索引值;xi,yi,zi分别对应于三个坐标方向上的序列索引值;xSize,ySize,zSize为它们在XYZ三个方向上的坐标序列个数;

5.2)根据确定的XYZ坐标方向上的序列索引值,按照最初的数据加载顺序将数据导出。

本发明产生的有益效果是:本发明通过分布式的存储方式提高了数据查询的效率,在本发明基础上可实现对格网大数据的方便有效管理。

附图说明

下面将结合附图及实施例对本发明作进一步说明,附图中:

图1是本发明实施例的格网大数据分布式存储方法示意图;

图2是本发明实施例的非规则格网数据的非规则格网数据的加载方法流程图;

图3是本发明实施例的格网大数据拼接实现流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

一种非规则格网数据的快速存储与查询方法,包括以下步骤:

1)格网大数据分布式存储步骤,本发明中对格网大数据进行解析与存储方法见图1;

1.1)将格网数据分离为格网元数据与格网属性数据;

非规则格网元数据内容包括:[格网ID、格网范围、XYZ方向坐标序列、数据加载顺序标识];

其中,

格网ID由格网产生时间及其类型编码生成,XYZ方向坐标序列记录了格网在X,Y,Z方向上的投影坐标;格网范围则针对XY平面范围,分为经纬度和80大地坐标两种方式来进行记录,Z方向以米为单位进行记录。

格网属性数据内容包括:[数据ID、数据值单位描述、属性值];

其中,

数据ID由格网ID值与数据在格网中的加载顺序/索引组合而成;数据值单位描述采用2个字符来表示一种用户定好的计量单位标识;

1.2)对分离后的数据分布式存储;

这些信息由于模式不确定,适合采用Nosql进行组织(如MongoDB)。

2)非规则格网数据加载步骤

2.1)根据数据加载顺序标识对非规则格网数据进行预读取,判断出非规则格网数据的加载顺序;

2.2)检测相邻两行格网数据记录的x、y、z分量,记录发生变化的位置分量和对应的分量坐标序列;

2.3)遍历所有数据,完成数据的加载,并得到整个非规则格网的范围;

非规则格网数据的加载方法参加图2。图2主要以二维非规则格网的数据加载为例,如果对于三维非规则格网,则需要一直检测到第三个位置分量发生变化为止。以二叉排序树将提取出的XYZ坐标序列值进行存储,既可以防止坐标值的重复又可以快速得到XYZ坐标序列值的范围即得到整个非规则格网的范围。

3)非规则格网数据查询步骤;

3.1)获取用户在屏幕视图坐标系中需查询数据的XY坐标;

3.2)根据该非规则格网的XY坐标序列换算成正常加载情况下(x-y-z顺序)的待查询数据在格网中的索引值;

3.3)根据非规则格网数据自身的加载顺序来换算成真实的数据索引值:

若加载顺序为x_y_z,真实的数据索引值为i;

若加载顺序为x_z_y,真实的数据索引值为(i%(xSize*ySize))/xSize*(xSize*zSize)+i/(xSize*ySize)*xSize+i%xSize;

若加载顺序为y_x_z,真实的数据索引值为(i%xSize)*(ySize*xSize)+i/(ySize*xSize)*ySize+(i%(ySize*xSize))/xSize;

若加载顺序为y_z_x,真实的数据索引值为(i%xSize)*(ySize*zSize))+i/(xSize*ySize)*ySize+(i%(ySize*xSize))/xSize;

若加载顺序为z_x_y,真实的数据索引值为(i%(xSize*ySize))/xSize)*(xSize*zSize)+i%xSize*zSize+i/(xSize*ySize);

若加载顺序为z_y_x,真实的数据索引值为(i%xSize)*(zSize*ySize)+(i%(xSize*ySize))/xSize*zSize+i/(xSize*ySize);

其中,

i为数据加载顺序为x-y-z时的数据索引值,xSize,ySize,zSize分别代表三个坐标方向上的坐标序列个数)

4)格网数据的拼接步骤,格网数据的拼接实现参见图3

4.1)确定拼接后的目标格网的格网范围;

4.2)选择待拼接格网

4.3)确定拼接边缘;

4.4)完成格网拼接;

5)数据导出步骤

5.1)分别确定XYZ坐标方向上的序列索引值

若最初的加载顺序为x_y_z,XYZ坐标序列索引值为xi=i%xSize;yi=(i%(xSize*ySize))/xSize;zi=i/(xSize*ySize);

若最初的加载顺序为x_z_y,XYZ坐标序列索引值为xi=i%xSize;yi=i/(xSize*zSize);zi=(i%(xSize*zSize))/xSize;

若最初的加载顺序为y_x_z,XYZ坐标序列索引值为xi=(i%(ySize*xSize))/ySize;yi=i%ySize;zi=i/(ySize*xSize);

若最初的加载顺序为y_z_x,XYZ坐标序列索引值为xi=i/(ySize*zSize);yi=i%ySize;zi=(i%(ySize*zSize))/ySize;

若最初的加载顺序为z_x_y,XYZ坐标序列索引值为xi=(i%(zSize*xSize))/zSize;yi=i/(zSize*xSize);zi=i%zSize;

若最初的加载顺序为z_y_x,XYZ坐标序列索引值为xi=i/(zSize*ySize);yi=(i%(zSize*ySize))/zSize;zi=i%zSize;

其中,i为数据索引值;xi,yi,zi分别对应于三个坐标方向上的序列索引值;xSize,ySize,zSize为它们在XYZ三个方向上的坐标序列个数;

5.2)根据确定的XYZ坐标方向上的序列索引值,按照最初的数据加载顺序将数据导出。

应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号