一种基于消息传递接口的遥感影像金字塔并行构建方法转让专利

申请号 : CN201510043708.X

文献号 : CN104537125B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 熊伟赫高进陈荦吴秋云景宁

申请人 : 中国人民解放军国防科学技术大学

摘要 :

本发明提供一种基于消息传递接口的遥感影像金字塔并行构建方法。技术方案包括下述步骤:第一步:设置金字塔级数和进程个数,并设定主进程;第二步:主进程读取遥感影像的元数据信息;第三步:创建金字塔文件;第四步:数据划分:主进程将遥感影像的当前处理波段数据平均划分给各个进程。第五步:读取数据:各个进程并行读取各自划分到的数据;第六步:重采样:各个进程采用重采样算法对所要处理的遥感影像数据进行当前金字塔级数对应粒度的重采样;第七步:并行写出结果:各个进程将内存中的重采样后的结果并行写入金字塔文件。本发明构建金字塔效率高,提高了数据写出效率。

权利要求 :

1.一种基于消息传递接口的遥感影像金字塔并行构建方法,金字塔级数越大分辨率越低,其特征在于,包括下述步骤:第一步:设置金字塔级数和进程个数:

根据实际需要设定金字塔级数和进程个数,并设定零号进程作为主进程;

第二步:读取遥感影像的元数据信息:

主进程读取遥感影像的元数据信息;

第三步:创建金字塔文件:

主进程根据设定的金字塔级数和遥感影像的元数据信息计算待创建的金字塔文件大小,如果金字塔文件不超过4GB,则创建地理参考标签影像文件格式的金字塔文件,该金字塔文件只包含相应的元数据信息;如果金字塔文件大小超过4GB,则创建大规模标签影像文件格式的金字塔文件,该金字塔文件同样只包含相应的元数据信息;

对遥感影像的每一个波段进行下述处理,即包括第四步至第七步的处理:第四步:数据划分:

主进程根据遥感影像的元数据信息,按照行划分的方式对遥感影像的当前处理波段数据根据数据量平均划分给各个进程,并通知各个进程读取各自划分到的数据;

第五步:读取数据:

各个进程根据各自划分到的数据情况,计算在原始遥感影像文件中的数据偏移,将所要处理的遥感影像数据读入内存,各个进程读取数据的过程并行地进行;

设当前金字塔级数为0级,然后进行下述步骤:第六步:重采样:

各个进程采用重采样算法对所要处理的遥感影像数据进行当前金字塔级数对应粒度的重采样,将重采样后的结果缓存在内存中,各个进程重采样操作并行地进行;

第七步:并行写出结果:

各个进程计算第六步缓存在内存中的重采样结果在金字塔文件中放置的偏移量,将内存中的重采样后的结果并行写入金字塔文件;

将当前金字塔级数加1,如果当前金字塔级数小于设定金字塔级数,则返回第六步;如果当前金字塔级数不小于设定金字塔级数,则结束当前处理波段的处理。

说明书 :

一种基于消息传递接口的遥感影像金字塔并行构建方法

技术领域

[0001] 本发明属于地理信息处理技术领域,涉及一种地理信息系统中大规模遥感影像金字塔的构建方法。

背景技术

[0002] 随着遥感数据获取技术的快速发展,遥感影像的空间和时间分辨率都大幅度地提高,单幅遥感影像文件的数据量也急剧增加。对于大规模遥感影像进行快速显示和服务发布时,通过预先构建金字塔是提高可视化和服务性能的有效手段,但大数据量为金字塔的构建效率带来了巨大挑战。传统串行的方式由于构建时间很长,已无法与数据获取的速度相匹配,远远不能满足实际应用需求。如何对大数据量遥感影像快速构建金字塔成为一个亟待解决的问题。在此背景下,采用多处理器、多节点的集群计算环境和并行处理机制构建金字塔成为必然趋势。
[0003] 金字塔结构用于实现遥感影像的多分辨率组织。简单来说,金字塔结构就是由原始遥感影像开始,建立起一系列不同分辨率的遥感影像,不同分辨率的遥感影像对应不同的金字塔级。同时,金字塔也是遥感影像的一种有损压缩方式。构建金字塔以后,可以改善遥感影像显示性能,当用户需要对遥感影像进行不同分辨率地放大、缩小或平移时,通过选择一个与用户视图相近分辨率的数据进行可视化,从而系统只需进行少量的计算和查询就可以返回结果,不需要进行逐级采样计算,大大减少数据显示时间。
[0004] 并行构建金字塔主要有两种思路。一种是基于GPU(Graphic Processing Unit,图形处理单元)进行并行加速,利用GPU的计算能力加快金字塔的构建速度,这种方法与GPU硬件能力相关,会提高系统架构的成本;另一种是利用分布式集群系统,将大规模遥感影像文件的金字塔构建任务划分为多个子任务,在多个分布式节点上同时进行。这种方法扩展性较好,可以充分利用分布式并行环境来处理大规模数据,但需要将遥感影像分布存储在多个节点。目前,利用共享外存的高性能集群,基于MPI(Message Passing Interface,消息传递接口)进行大规模遥感影像金字塔的并行构建研究较少。

发明内容

[0005] 本发明的目的提供一种基于新思路的遥感影像金字塔并行构建方法。本发明不需利用GPU,而是利用共享外存的高性能集群,实现对遥感影像并行重采样,然后将重采样结果并行写入到文件系统中,形成遥感影像金字塔。
[0006] 本发明的技术解决方案为:一种基于消息传递接口的遥感影像金字塔并行构建方法,金字塔级数越大分辨率越低。步骤如下:
[0007] 第一步:设置金字塔级数和进程个数
[0008] 根据实际需要设定金字塔级数和进程个数,并设定零号进程作为主进程;
[0009] 第二步:读取遥感影像的元数据信息
[0010] 主进程读取遥感影像的元数据信息。
[0011] 第三步:创建金字塔文件
[0012] 主进程根据设定的金字塔级数和遥感影像的元数据信息计算待创建的金字塔文件大小,如果金字塔文件不超过4GB,则创建GeoTIFF(Georeferenced Tagged Image File Format,地理参考标签影像文件格式)格式的金字塔文件,该金字塔文件只包含相应的元数据信息;如果金字塔文件大小超过4GB,则创建BigTIFF(Big Tagged Image File Format,大规模标签影像文件格式)格式的金字塔文件,该金字塔文件同样只包含相应的元数据信息。
[0013] 对遥感影像的每一个波段进行下述处理,即包括第四步至第七步的处理:
[0014] 第四步:数据划分
[0015] 主进程根据元数据信息,按照行划分的方式对遥感影像的当前处理波段数据根据数据量平均划分给各个进程,并通知各个进程读取各自划分到的数据。
[0016] 第五步:读取数据
[0017] 各个进程根据各自划分到的数据情况,计算在原始遥感影像文件中的数据偏移,将所要处理的遥感影像数据读入内存,各个进程读取数据的过程并行地进行。
[0018] 设当前金字塔级数为0级,然后进行下述步骤:
[0019] 第六步:重采样
[0020] 各个进程采用重采样算法对所要处理的遥感影像数据进行当前金字塔级数对应粒度的重采样,将重采样后的结果缓存在内存中,准备写入到金字塔文件,各个进程重采样操作并行地进行。
[0021] 第七步:并行写出结果
[0022] 各个进程计算第六步缓存在内存中的重采样结果在金字塔文件中放置的偏移量,将内存中的重采样后的结果并行写入金字塔文件。
[0023] 将当前金字塔级数加1,如果当前金字塔级数小于设定金字塔级数,则返回第六步;如果当前金字塔级数不小于设定金字塔级数,则结束当前处理波段的处理。
[0024] 本发明的有益效果是:
[0025] (1)本发明所生成的遥感影像金字塔文件与地理空间数据抽象库GDAL(Geospatial Data Abstract Library,地理数据抽象库)生成的金字塔文件格式一致,GDAL是一种被广泛应用的金字塔构建工具,其创建的金字塔文件能够被当前绝大多数地理信息系统软件直接使用,可以无缝集成到各种地理信息应用中。
[0026] (2)本发明构建金字塔效率高。除了在主进程创建金字塔文件时,各个进程需要等待外,在重采样和数据并行读写过程中,各个进程完全并行。而且,由于创建的金字塔文件中只包含数据量很小的元数据信息,进程等待时间相对于金字塔构建时间较少。
[0027] (3)本发明数据写出效率高。各个进程在重采样完成后,并行写出重采样结果数据,提高了数据写出效率。

附图说明

[0028] 图1是本发明的流程示意图;
[0029] 图2是本发明并行构建金字塔时数据划分和重采样的示意图;
[0030] 图3是GDAL算法与本发明方法对不同类型遥感影像构建金字塔的性能对比;
[0031] 图4是本发明方法构建金字塔时执行时间随处理进程数目变化情况。

具体实施方式

[0032] 结合附图对本发明作进一步描述。
[0033] 图1为本发明流程示意图。假设设定N个进程参与金字塔并行构建,分别为P0,P1,…,PN-1,其中P0为零号进程作为主进程。输入参数除进程个数N以外,还有金字塔级数K,即最后输出为包含L0,L1,…,LK-1级金字塔数据的文件。主进程从输入遥感影像文件F中读取元数据信息(包括波段数、行数、列数、数据类型、多波段数据分布方式、颜色表信息)。假设元数据信息的大小为M字节,遥感影像文件F中除去元数据信息后遥感影像数据大小为D字节,金字塔文件大小则为 字节。主进程P0根据金字塔级数,设置金字塔文件元数据信息,调用GDAL创建金字塔文件。这一步创建的金字塔文件不包含实际的金字塔采样数据,只包含对金字塔文件进行描述的元数据信息,因此耗时较少。各个进程等待主进程P0创建完空白的金字塔文件后,对每一个波段进行数据划分,将数据基本平均地划分给每个进程(包括主进程),使每个进程处理的数据量基本相等,每个进程并行地进行数据读取,重采样以及写出操作。具体过程如下:各个进程计算划分到的要处理的数据在遥感影像文件F中的偏移量,并从输入遥感影像文件F将实际数据(即不包括元数据)读取到内存中,然后根据重采样算法(如:最近邻算法、立方卷积算法、线性插值算法)进行重采样,将重采样的结果保存在内存中。然后,各个进程计算数据在金字塔文件中的偏移量,再将内存中数据写入到金字塔文件中。不同级的金字塔重采样数据量不一样,在文件中的偏移量也会发生变化,因此重复以上重采样、写入操作直到金字塔构建完成。本发明流程执行过程中,需对输入遥感影像数据进行多次重采样,但只需对遥感影像文件F进行一次读取,减少了读/写操作。
[0034] 图2是本发明并行构建金字塔时数据划分和重采样的示意图。假设共有N个进程(分别为P0,P1,…,Pi,…,PN-1)参与K级金字塔的并行构建,P0为主进程。遥感影像为3波段,每个波段数据宽为XSize像素,高为YSize像素。数据划分采用行划分的方式,每个进程划分到的行数尽可能相等,当进程i满足0≤i程需要重采样K次,分别写入金字塔文件中相应的位置。写入的位置距文件起始位置偏移量按如下方法计算:金字塔文件由多个目录组成,每个目录对应金字塔的一级,进程在将重采样的数据写入金字塔文件时,首先读取对应的目录,再根据该进程所处理的数据范围,获取重采样后的数据条带距金字塔文件起始位置的偏移量。如果输入影像有多个波段,则重采样数据按照“波段1波段2波段3”的方式存储。图2中,空白的小方块表示波段1(band1)存储的数据,实心的小方块表示波段2(band2)存储的数据,画斜线的小方块表示波段3(band3)存储的数据。
[0035] 图3是本文并行构建算法与GDAL的构建算法对比图。所采用遥感影像数据为d1、d2、d3、d4,其中数据d1:宽44800像素,高36864像素,1波段,大小1.6GB;数据d2:宽42040像素,高58368像素,3波段,大小4.8GB;数据d3:宽77312像素,高99328像素,1波段,大小7.2GB;数据d4:宽87040像素,高58368像素,3波段,大小15GB。并行构建金字塔算法使用N=
32个进程。图中的纵坐标中,空白矩形的高度表示GDAL算法耗时,实心矩形的高度表示本发明耗时,从图中可以看到,采用本发明方法构建金字塔的速度比GDAL有很大提升。
[0036] 图4是对遥感影像数据d2采用不同数目进程并行构建金字塔的时间变化情况。横坐标是进程数,纵坐标是算法执行时间。从图中可以看到,随着进程数目增加,算法执行时间相应减少,当进程数目增加到一定程度时,算法执行时间趋于稳定。这是因为,当进程数较少时,随着进程增加,单个进程所处理的数据量减少,且各个进程并行地进行采样和写入数据,因此算法总时间减少。当进程增加到一定数目时,进程调度、网络通信及其他系统开销相应增加,抵消了进程数目增加带来的性能提升,因此算法执行时间逐渐趋于稳定。从图中可以看到,该方法针对数据d2构建金字塔时,在进程数达到48个时算法执行时间趋于稳定,在此之前执行时间随进程数目增加而减少,表明该方法具有良好的扩展性。