一种基于聚合请求的地理栅格数据并行读写方法

文档序号:6535895阅读:163来源:国知局
一种基于聚合请求的地理栅格数据并行读写方法
【专利摘要】本发明提供一种基于聚合请求的地理栅格数据并行读写方法。技术方案包括所有进程调用GDAL库读取待处理的地理栅格数据文件,从中获取地理栅格元数据的信息;各个处理进程按照统一的数据划分方式计算在地理栅格数据文件中各自所需读取的地理栅格数据划分大小和偏移量;任意一个进程负责创建GTIFF的输出文件,创建完毕后,该进程将创建完毕状态向其它处理进程进行广播,其它处理进程读入待处理的地理栅格数据;每个处理进程完成各自的计算任务,将计算任务完成的结果按照统一的数据划分方式写出到输出文件。本发明能够处理多种数据格式,并行处理机制好,提高了总体输入/输出效率。
【专利说明】一种基于聚合请求的地理栅格数据并行读写方法【技术领域】
[0001]本发明涉及一种面向多节点多处理器集群环境下地理栅格数据文件的并行读写方法,技术应用领域为地理信息系统中大规模地理栅格数据的并行处理。
【背景技术】
[0002]地理栅格数据是地理信息系统和空间信息应用中非常重要的一种数据类型,主要用于描述和表达地表的各类采样和统计信息,在遥感影像处理、数字地形分析、空间统计等方面具有广泛的用途。地理栅格数据按网格单元行与列排列,用大小相等分布均匀、紧密相连的像元(网格单元)阵列来表示空间地物或现象分布的数据结构。网格单元的大小决定了其所覆盖的地表范围内地理数据的精度,网格单元越细,所表示的地理数据越精细。
[0003]随着遥感技术和测绘技术的快速进步发展,地理栅格数据的空间分辨率和时间分辨率都有了大幅度的提高,空间信息应用需要计算的区域不断增大,对地理过程模型的复杂程度和计算精度需求日益增强,地理计算越来越明显地呈现出数据密集型和计算密集型的特征。如何实现其高性能处理已成为制约其进一步应用的关键所在。采用多处理器的集群计算环境和并行计算技术来解决地理栅格数据的高效处理问题成为一种必然的发展趋势。通过提高处理器性能和增加处理器个数的方式,可以提升并行集群的并行处理性能,但是如果对于地理栅格数据的I/O (Input/Output,输入/输出)仍然采用串行方式的话,I/O性能将成为影响整体性能的瓶颈。在此背景下,地理栅格数据的并行访问技术成为地理栅格数据高效处理的一个重要内容。
[0004]目前支持地理栅格数据并行读写的工具库主要有两种。一种是采用GDAL(Geospatial Data Abstract Library,地理空间数据抽象库)进行读写,GDAL提供了统一的数据访问接口,通过抽象数据模型支持可扩展的地理栅格数据格式。因为并行读写地理栅格数据需要进行数据划分,现有的并行处理算法通常采用按照行、列或是块的方式进行划分。GDAL存在的主要问题在于只支持地理栅格数据按照行划分的并行读写,当多个进程使用GDAL并行读写列划分或者块划分时,一方面读写效率很低,另一方面写出的数据正确性也无法得到保证。第二种是适合并行读写的地理栅格数据模型库,如:HDF5 (HierarchicalDataFormatFive,层次数据格式第 5 版)、NetCDF (Network Common Data Form,网络通用数据格式)等,然而以这些数据模型来存储地理栅格数据的应用相对较少,在处理时需要将其他常用的数据格式进行转换,增加了应用的繁琐性。
[0005]地理栅格数据的并行读写方法包括两种。一种是DDC (Data Distribution andCollection,数据分发/收集)方法。该方法将参与并行计算的多进程分为主进程和从进程,只有主进程负责所有的地理栅格数据读写操作,从进程负责数据处理,从进程与主进程之间通过进程间消息传递机制完成所处理数据的接收和发送。DDC方法的缺点在于主进程数据读写容易成为瓶颈,并行处理进程增加时,主、从进程间通信代价容易增加计算延迟。另外一种是并行读写方法,不依赖于主进程进行数据的分发、收集,而是每个进程都可以相对独立地进行数据的存取操作。这样,各个进程同时进行数据的存取,可以很大程度地增大总体I/o带宽,从而提升总体I/O效率。然而这种方式需要底层有并行文件系统的支持,在非并行文件系统中,如果读写请求分布随机性强,I/o效率将大幅降低。

【发明内容】

[0006]本发明的目的是改进地理栅格数据并行读写的性能,通过引入MPI (MessagePassing Interface,消息传递接口)中文件视图的机制,减少多进程并行访问地理栅格数据时非连续的、零碎的数据请求的数量,将I/O请求聚合成为少量的、整块的数据请求。在本发明中,多进程之间只进行状态信息通信,而不进行数据通信,提高多节点多处理器集群环境下地理栅格数据文件的并行读写性能。
[0007]本发明的技术解决方案为:一种基于聚合请求的地理栅格数据并行读写方法,设有若干个处理进程同时处理同一个待处理的地理栅格数据文件,其特征在于,包括下述步骤:
[0008]第一步,在多节点多处理器集群环境下,所有进程调用GDAL库读取待处理的地理栅格数据文件,从中获取地理栅格元数据的信息并记录在内存数据结构roataset中,其中地理栅格元数据信息包括:MPI文件句柄,栅格数据网格单元列数,栅格数据网格单元行数,栅格数据波段数,栅格网格单元数据类型,数据类型字节数,栅格数据在文件中(即地理栅格数据文件)的绝对偏移地址。
[0009]第二步,各个处理进程根据地理栅格元数据信息,按照统一的数据划分方式计算在地理栅格数据文件中各自所需读取的地理栅格数据划分大小和偏移量。数据划分方式可以按照行、列或者块的方式读取。
[0010]第三步,由任意一个进程负责读取待处理的地理栅格元数据中的地理参考信息,创建GTIFF (Georeferenced Tagged Image File Format,地理参考标签影像文件格式)的输出文件,并在输出文件中写入地理参考信息以及内存数据结构roataset中的元数据信息。创建完毕后,该进程将创建完毕状态向其它处理进程进行广播,其它处理进程按照统一的数据划分方式从地理栅格数据文件中读入待处理的地理栅格数据。
[0011]第四步,每个处理进程完成各自的计算任务,然后打开输出文件,设置各自的文件视图,将计算任务完成的结果按照统一的数据划分方式写出到输出文件。
[0012]本发明的有益效果是:
[0013](I)本发明能够处理多种数据格式。因为GDAL库本身能够读取多种格式地理栅格数据,所以本发明中的所有处理进程读取的地理栅格数据格式不受限制。
[0014](2)在对地理栅格数据进行读写时,可以按照行、列或者块的方式读写,不限制对地理栅格数据进行划分的方式。
[0015]( 3 )本发明并行处理机制好。仅在创建输出文件时,各个处理进程需要进行一次等待,并且创建输出文件时只完成对输出文件头信息的操作,因此等待时间可以忽略不计。
[0016](4)各个处理进程在计算任务完成后采用文件视图,可以将随机的I/O请求聚合起来,提高总体I/o效率。
【专利附图】

【附图说明】
[0017]图1为本发明的流程示意图;[0018]图2为本发明某一实施例中创建的文件视图示意图;
[0019]图3为本发明和其它方法进行对比的仿真实验示意图。
【具体实施方式】
[0020]结合附图对本发明作进一步描述。
[0021]图1为本发明的流程示意图。如图所示,假设有η个进程(P0,P1,P2,一Pn)同时处理同一个待处理的地理栅格数据文件,所有进程调用GDAL库读取待处理的地理栅格数据文件,从中获取地理栅格元数据的信息并记录在内存数据结构roataset中;各个处理进程根据地理栅格元数据信息,按照统一的数据划分方式计算在地理栅格数据文件中各自所需读取的地理栅格数据划分大小和偏移量;任意一个进程负责读取待处理的地理栅格元数据中的地理参考信息,创建GTIFF的输出文件,并在输出文件中写入地理参考信息以及内存数据结构roataset中的元数据信息;创建完毕后,该进程将创建完毕状态向其它处理进程进行广播,其它处理进程按照统一的数据划分方式从地理栅格数据文件中读入待处理的地理栅格数据;每个处理进程完成各自的计算任务,然后打开输出文件,设置各自的文件视图,将计算任务完成的结果按照统一的数据划分方式写出到输出文件。
[0022]图2为本发明某一实施例中创建的文件视图示意图。本实施例中,统一的数据划分方式采用块的方式。如图所示,在本发明的第四步处理中,每个处理进程设置自己的文件视图,文件视图定义每个处理进程在输出文件中可操作的数据位置。文件视图包括三个元素定义:绝对偏移地址(Displacement),元素基本类型(ElementType)和文件类型(FileType)0假设η个处理进程PO,Pl,P2,...Pn记录在内存数据结构TOataset中,待处理地理栅格数据网格单元行数为RasterYSize,待处理地理栅格数据网格单元列数为RasterXSize,栅格网格单元数据类型为元素基本类型ElementType,栅格数据在文件中的绝对偏移地址即绝对偏移地址Di sp Iacement。
[0023]按照统一的块划分方式将地理栅格数据划分为η块,计算在地理栅格数据文件中每个处理进程所需读取的地理栅格数据划分大小和偏移量,即得到下列参数:所需块的起始行BlockFirstRow,结束行BlockLastRow,所需块的起始列BlockFirstColumn,结束列BlockLastColumn。对于每个处理进程来说,处理的数据块行单元数BlockYSize=BlockLastRow-BlockFirstRow,列单兀数 BlockXSize=BlockLastColumn_BlockFirstColumn,假设在行上有m块,则每个处理进程处理的数据块大小为BlockXSize*BlockYSize,文件类型为BlockXSize个元素基本类型,再加上RasterXSize-BlockXSize个空洞所组成。设置文件类型后,每个处理进程就可以根据上述参数设置文件视图。
[0024]图3为本发明和其它方法进行对比的仿真实验示意图。如图所示,带矩形标记的曲线表示不使用文件视图,以非聚合请求的方式将计算结果并行写出到数据文件,I/o性能(纵坐标所示)将大幅低于聚合请求方式(即本发明的结果,带菱形标记的曲线)。当处理进程数增加时,非聚合请求并行读写方式I/o性能将随进程数增加而降低,本发明给出的实施方案中,在进程数低于32个时,I/O性能基本保持稳定。
[0025]本发明未详细阐述部分属于本领域公知常识。
[0026]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种基于聚合请求的地理栅格数据并行读写方法,设有若干个处理进程同时处理同一个待处理的地理栅格数据文件,其特征在于,包括下述步骤: 第一步,在多节点多处理器集群环境下,所有进程调用地理空间数据抽象库读取待处理的地理栅格数据文件,从中获取地理栅格元数据的信息并记录在内存数据结构roataset中; 第二步,各个处理进程根据地理栅格元数据信息,按照统一的数据划分方式计算在地理栅格数据文件中各自所需读取的地理栅格数据划分大小和偏移量; 第三步,由任意一个进程负责读取待处理的地理栅格元数据中的地理参考信息,创建地理参考标签影像文件格式的输出文件,并在输出文件中写入地理参考信息以及内存数据结构roataset中的元数据信息;创建完毕后,该进程将创建完毕状态向其它处理进程进行广播,其它处理进程按照统一的数据划分方式从地理栅格数据文件中读入待处理的地理栅格数据; 第四步,每个处理进程完成各自的计算任务,然后打开输出文件,设置各自的文件视图,将计算任务完成的结果按照统一的数据划分方式写出到输出文件。
2.根据权利要求1所述的基于聚合请求的地理栅格数据并行读写方法,其特征在于,获取的地理栅格元数据信息包括:消息传递接口文件句柄,栅格数据网格单元列数,栅格数据网格单元行数,栅格数据波段数,栅格网格单元数据类型,数据类型字节数,栅格数据在地理栅格数据文件中的绝对偏移地址。
3.根据权利要求2所述的基于聚合请求的地理栅格数据并行读写方法,其特征在于,统一的数据划分方式按照行、列或者块的方式读取。
【文档编号】G06F17/30GK103761291SQ201410020074
【公开日】2014年4月30日 申请日期:2014年1月16日 优先权日:2014年1月16日
【发明者】熊伟, 陈荦, 景宁, 刘露, 吴秋云, 赫高进 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1