一种基于分布式文件系统的遥感数据存储方法及系统与流程

文档序号:13072813阅读:156来源:国知局
本发明涉及遥感影像存储
技术领域
:,特别涉及一种基于分布式文件系统的遥感数据存储方法及系统。
背景技术
::当前存在的基于分布式文件系统的遥感数据存储体系大多属于对现有系统的简单拼凑,缺乏主流大数据处理框架的支撑,给遥感数据的处理带来了诸多不便。同时,由于遥感数据本身包含诸多类型数据,现有的分布式文件系统无法直接对于多种类型的遥感数据进行存储,也缺乏统一的接口对多种类型数据进行管理,给用户的使用带来的较大不便。技术实现要素:为了解决上述问题,本发明公开了一种基于分布式文件系统的遥感数据存储方法及系统,通过组合使用hdfs/hbase和mongodb,实现了多种类型遥感数据的分布式存储,并且提供了访问接口以实现hadoop/spark平台对遥感数据的访问和处理。本发明通过如下方法实现:一种基于分布式文件系统的遥感数据存储方法,包括:使用hdfs存储遥感原始影像数据,使用hbase存储遥感元数据和切片数据,构建遥感数据分布式存储框架,具体为:使用hdfs,在多个datanode节点中存储遥感原始影像数据;选择image_scale参数或由auto_scale()函数自动确定切图大小,使用gdal库进行分布式切图;采用改进的hilbert编码方式,扩充hilbert编码为等长编码并定义为rowkey,所述rowkey为hbase索引;使用format_file()函数,实现切片数据的并行入库;使用put命令,实现遥感元数据的入库操作;定义分布式访问接口:所述分布式访问接口分别为mongodb访问接口和hdfs/hbase直接访问接口,所述分布式访问接口的访问方式具体为:判断是否满足ismdb或ishdb状态之一,如果是,则进一步判断,否则数据写入本地磁盘;进一步判断是否满足ishdb状态,如果是,则调用接口ihdfsout(),实现数据访问;否则,调用函数mongo_convert(),将数据缓存到mongodb,调用imongoout()接口实现数据访问。所述的方法中,所述image_scale参数用于确定切图大小参数,所述切图大小参数包括:128x128,256x256,512x512,1024x1024;所述auto_scale()函数用于自动确定切图大小;所述format_file()函数用于序列化切图文件并入库;所述put命令用于在表中添加一行文本数据。所述的方法中,所述ismdb状态为允许mongodb库访问状态;所述ishdb状态为允许直接访问hdfs/hbase状态。所述的方法中,所述ihdfsout()用于实现基于hdfs/hbase数据的访问;所述mongo_convert()用于实现hbase中遥感影像数据到mongodb文档数据库的存储和hbase中遥感元数据到mongodb的存储;所述imongoout()用于实现基于mongodb的数据访问。所述的方法中,所述扩充hilbert编码为等长编码具体为:扩充字符及hilbert编码,其中扩充字符均使用1填充,扩充长度为2切图块数-length(hilbert),扩充完成后的编码为2切图块数。本发明还提出一种存储系统:一种基于分布式文件系统的遥感数据存储系统,包括:遥感数据分布式存储框架:使用hdfs存储遥感原始影像数据,使用hbase存储遥感元数据和切片数据,构建遥感数据分布式存储框架,具体为:遥感原始影像数据存储模块,用于使用hdfs,在多个datanode节点中存储遥感原始影像数据;遥感元数据及切片数据存储模块:选择image_scale参数或由auto_scale()函数自动确定切图大小,使用gdal库进行分布式切图;采用改进的hilbert编码方式,扩充hilbert编码为等长编码并定义为rowkey,所述rowkey为hbase索引;使用format_file()函数,实现切片数据的并行入库;使用put命令,实现遥感元数据的入库操作;分布式访问接口:所述分布式访问接口分别为mongodb访问接口和hdfs/hbase直接访问接口;判断是否满足ismdb或ishdb状态之一,如果是,则进一步判断,否则数据写入本地磁盘;进一步判断是否满足ishdb状态,如果是,则调用接口ihdfsout(),实现数据访问;否则,调用函数mongo_convert(),将数据缓存到mongodb,调用imongoout()接口实现数据访问。所述的系统中,所述image_scale参数用于确定切图大小参数,所述切图大小参数包括:128x128,256x256,512x512,1024x1024;所述auto_scale()函数用于自动确定切图大小;所述format_file()函数用于序列化切图文件并入库;所述put命令用于在表中添加一行文本数据。所述的系统中,所述ismdb状态为允许mongodb库访问状态;所述ishdb状态为允许直接访问hdfs/hbase状态。所述的系统中,所述ihdfsout()用于实现基于hdfs/hbase数据的访问;所述mongo_convert()用于实现hbase中遥感影像数据到mongodb文档数据库的存储和hbase中遥感元数据到mongodb的存储;所述imongoout()用于实现基于mongodb的数据访问。所述的系统中,所述扩充hilbert编码为等长编码具体为:扩充字符及hilbert编码,其中扩充字符均使用1填充,扩充长度为2切图块数-length(hilbert),扩充完成后的编码为2切图块数。本发明优势在于可以实现多种类型遥感数据的分布式存储,并且由于现有的遥感数据处理平台大多不支持直接访问,因此本系统实现了允许进行hdfs/hbase到mongodb的数据交换,实现数据访问。本发明提出一种基于分布式文件系统的遥感数据存储方法及系统,本发明方法通过建立面向遥感应用的分布式存储框架,存储遥感原始影像数据及元数据和切片数据,并定义两个访问接口,分别为mongodb访问接口和hdfs/hbase直接访问接口,可以兼容现有的遥感数据处理平台。通过本发明的方法,实现了多种类型遥感数据的分布式存储,并且提供了访问接口实现对遥感数据的访问和处理。附图说明为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为一种基于分布式文件系统的遥感数据存储方法中构建遥感数据分布式存储框架实施例流程图;图2为一种基于分布式文件系统的遥感数据存储方法中分布式访问接口的访问方式实施例流程图;图3为一种基于分布式文件系统的遥感数据存储系统结构示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本发明实施例中的技术方案,并使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明中技术方案作进一步详细的说明。本发明公开了一种基于分布式文件系统的遥感数据存储方法及系统,该过组合使用hdfs/hbase和mongodb,实现了多种类型遥感数据的分布式存储,并且提供了访问接口以实现hadoop/spark平台对遥感数据的访问和处理。本发明通过如下方法实现:一种基于分布式文件系统的遥感数据存储方法,包括:使用hdfs存储遥感原始影像数据,使用hbase存储遥感元数据和切片数据,构建遥感数据分布式存储框架,如图1所示,具体为:s101:使用hdfs,在多个datanode节点中存储遥感原始影像数据;s102:选择image_scale参数或由auto_scale()函数自动确定切图大小,使用gdal库进行分布式切图;s103:采用改进的hilbert编码方式,扩充hilbert编码为等长编码并定义为rowkey,所述rowkey为hbase索引;s104:使用format_file()函数,实现切片数据的并行入库;s105:使用put命令,实现遥感元数据的入库操作;所述put命令语法为:put<table>,<rowkey>,<family:column>,<value>,<timestamp>。其中table指需要插入的表,rowkey为索引,value为值,timestamp为时间戳。对步骤做更细致说明:遥感元数据为遥感图像的解释数据,包括了遥感图像的采集时间,大小,卫星和传感器,采集地区等信息。这些信息对解释遥感数据十分重要。此处table为rs_data表,保存遥感元数据。rowkey与hdfs存储的遥感元数据key一致。column为元数据类型,value为元数据值。定义分布式访问接口:所述分布式访问接口分别为mongodb访问接口和hdfs/hbase直接访问接口,所述分布式访问接口的访问方式如图2所示,具体为:s201:判断是否满足ismdb或ishdb状态之一,如果是,则进一步判断,否则数据写入本地磁盘;s202:进一步判断是否满足ishdb状态,如果是,则执行s203,否则,执行s204;s203:调用接口ihdfsout(),实现数据访问;s204:调用函数mongo_convert(),将数据缓存到mongodb,调用imongoout()接口实现数据访问。由于现有的遥感数据处理平台大多不支持直接访问hdfs/hbase,因此本系统允许进行hdfs/hbase到mongodb的数据交换。ihdfsout()与imongoout()接口均定义在output.java中。mongo_convert()函数定义在output.cpp中。该函数的map过程相关代码如下:publicvoidmap(textkey,textvalue,contextcontext)throwsioexception,interruptedexception{string[]fields=value.tostring().split("\t");stringtype=fields[0];stringvalue=fields[1];stringtime=fields[2];bsonobjectb=newbasicbsonobject();b.put("type",type);b.put("date",date);b.put("time",time);context.write(newobjectid(),b);}所述的方法中,所述image_scale参数用于确定切图大小参数,由用户进行选择,所述切图大小参数包括:128x128,256x256,512x512,1024x1024,遥感图像切图大小一般根据原始影像数据大小选择为128x128,256x256,512x512,1024x1024四种,以满足不同分辨率图像的读取需求;所述auto_scale()函数用于自动确定切图大小;auto_scale()函数根据原始影像数据大小和所需分辨率确定切图大小。若不指定所需分辨率,则auto_scale()自动取当前原始影像数据允许的最大值。考虑到有时候用户需要特定大小的切图数据,系统也允许用户自行指定image_scale参数值。auto_scale()函数定义在scale.java文件中,相关函数代码如下:level1-4为原始影像大小与所需分辨率大小比例的分界值。一旦计算得的比例值在某一区间内,则返回相应的image_scale值。系统默认值为1024,用于不指定所需分辨率时的取值。所述format_file()函数用于序列化切图文件并入库;所述put命令用于在表中添加一行文本数据。所述的方法中,所述ismdb状态为允许mongodb库访问状态;所述ishdb状态为允许直接访问hdfs/hbase状态。所述的方法中,所述ihdfsout()用于实现基于hdfs/hbase数据的访问;所述mongo_convert()用于实现hbase中遥感影像数据到mongodb文档数据库的存储和hbase中遥感元数据到mongodb的存储;所述imongoout()用于实现基于mongodb的数据访问。所述的方法中,所述扩充hilbert编码为等长编码具体为:扩充字符及hilbert编码,其中扩充字符均使用1填充,扩充长度为2切图块数-length(hilbert),扩充完成后的编码为2切图块数。该方式用以保证编码可以容纳所有的切图块。本发明还提出一种存储系统:一种基于分布式文件系统的遥感数据存储系统,如图3所示,包括:遥感数据分布式存储框架100:使用hdfs存储遥感原始影像数据,使用hbase存储遥感元数据和切片数据,构建遥感数据分布式存储框架,具体为:遥感原始影像数据存储模块110,用于使用hdfs,在多个datanode节点中存储遥感原始影像数据;遥感元数据及切片数据存储模块120:选择image_scale参数或由auto_scale()函数自动确定切图大小,使用gdal库进行分布式切图;采用改进的hilbert编码方式,扩充hilbert编码为等长编码并定义为rowkey,所述rowkey为hbase索引;使用format_file()函数,实现切片数据的并行入库;使用put命令,实现遥感元数据的入库操作;分布式访问接口200:所述分布式访问接口分别为mongodb访问接口210和hdfs/hbase直接访问接口220;判断是否满足ismdb或ishdb状态之一,如果是,则进一步判断,否则数据写入本地磁盘;进一步判断是否满足ishdb状态,如果是,则调用接口ihdfsout(),实现数据访问;否则,调用函数mongo_convert(),将数据缓存到mongodb,调用imongoout()接口实现数据访问。所述的系统中,所述image_scale参数用于确定切图大小参数,所述切图大小参数包括:128x128,256x256,512x512,1024x1024;所述auto_scale()函数用于自动确定切图大小;所述format_file()函数用于序列化切图文件并入库;所述put命令用于在表中添加一行文本数据。所述的系统中,所述ismdb状态为允许mongodb库访问状态;所述ishdb状态为允许直接访问hdfs/hbase状态。所述的系统中,所述ihdfsout()用于实现基于hdfs/hbase数据的访问;所述mongo_convert()用于实现hbase中遥感影像数据到mongodb文档数据库的存储和hbase中遥感元数据到mongodb的存储;所述imongoout()用于实现基于mongodb的数据访问。所述的系统中,所述扩充hilbert编码为等长编码具体为:扩充字符及hilbert编码,其中扩充字符均使用1填充,扩充长度为2切图块数-length(hilbert),扩充完成后的编码为2切图块数。本发明优势在于可以实现多种类型遥感数据的分布式存储,并且由于现有的遥感数据处理平台大多不支持直接访问,因此本系统实现了允许进行hdfs/hbase到mongodb的数据交换,实现数据访问。本发明提出一种基于分布式文件系统的遥感数据存储方法及系统,本发明方法通过建立面向遥感应用的分布式存储框架,存储遥感原始影像数据及元数据和切片数据,并定义两个访问接口,分别为mongodb访问接口和hdfs/hbase直接访问接口,可以兼容现有的遥感数据处理平台。通过本发明的方法,实现了多种类型遥感数据的分布式存储,并且提供了访问接口实现对遥感数据的访问和处理。本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1