[发明专利]一种在集群环境中对遥感影像数据进行高效并行存取的方法有效
申请号: | 201210278969.6 | 申请日: | 2012-08-07 |
公开(公告)号: | CN102819407A | 公开(公告)日: | 2012-12-12 |
发明(设计)人: | 占利军;秦承志 | 申请(专利权)人: | 中国科学院地理科学与资源研究所 |
主分类号: | G06F3/06 | 分类号: | G06F3/06 |
代理公司: | 北京科迪生专利代理有限责任公司 11251 | 代理人: | 成金玉;贾玉忠 |
地址: | 100101 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 集群 环境 遥感 影像 数据 进行 高效 并行 存取 方法 | ||
1.一种在集群环境中对遥感影像数据进行高效并行存取的方法,其特征在于步骤如下:
(1)在集群环境中,各个进程将各自要读写的遥感影像数据块的范围信息发给主进程,主进程负责收集各个进程读写遥感影像数据块的范围信息;
(2)主进程根据所有进程读写遥感影像数据块的范围信息判断数据划分方式,并根据数据划分方式来确定各个进程数据重分布的方式,将数据重分布所需的信息发送给各个进程;所述数据重分的信息包括三组,一是是否需要数据重分布;二是数据划分方法,即按行、按列或按块;三是操作数据方式,包括读操作和写操作,简称读写;
(3)各个进程接收和解析主进程发来的数据重分布信息,如果接收到的信息是不需要进行数据重分布,那么各个进程使用GDAL库的RasterlO函数直接按原来按行数据划分方式来读写;
(4)如果各个进程接收到的信息是需要进行数据重分布,并且是按行数据划分,则数据重分布策略为:奇数号进程负责读写文件,偶数号进程与左邻奇数号进程通信;
(5)如果各个进程接收到的信息是需要进行数据重分布,并且原来的数据划分方式是按列或按块数据划分,则数据重分布策略为:每一行最左端的进程负责读写文件操作,其它进程与本行最左端的进程通信。
2.根据权利要求1所述的在集群环境中对遥感影像数据进行高效并行存取的方法,其特征在于:所述步骤(2)中如果是按行数据划分,且进程数目不多即没有超过设定的阈值,即读写请求数目较少,则主进程认为各个进程不需要进行数据重分布操作;如果进程数目较多即读写请求数目很多,即已超过设定的阈值,则主进程认为各个进程需要执行数据重分布操作;如果是按列或按块数据划分,主进程认为各个进程应该在存取遥感影像文件前先进行数据重分布。
3.根据权利要求1所述的在集群环境中对遥感影像数据进行高效并行存取的方法,其特征在于:所述步骤(4)中奇数号进程负责读写文件,偶数号进程与左邻奇数号进程通信的具体实现为:
假设有2n个进程,即P[1],P[2],…P[2n],这些进程以按行划分的方式将遥感影像文件划分成2n个数据块,即Block[1],Block[2],…Block[2n];如果是读请求,为了减少读请求数目,采用两步操作:第一步,奇数号进程首先生成一个临时缓冲区,然后一次读取两个数据块到该临时缓冲区,即P[2k-1]调用GDAL库的RasterlO函数读取数据块Block[2k-1]和Block[2k],由于这两个数据块合并后在文件中是连续分布的,所以只需要一次读请求操作;第二步,奇数号进程P[2k-1]与相邻偶数号进程P[2k]通信,P[2k-1]将临时缓冲区的连续数据分成两个数据块Block[2k-1]和Block[2k],并将数据块Block[2k]以消息传递的方式发送至进程P[2k];通过上述两步操作,读请求数目能够降为原来的一半;
对于各个进程按行写也是如此,第一步是奇数号进程P[2k-1]生成临时缓冲区,偶数号进程即P[2k]将数据块Block[2k]以消息传递的方式发送至进程P[2k-1],P[2k-1]将Block[2k]和Block[2k-1]合并成连续数据,并放置到临时缓冲区;第二步是P[2k-1]调用GDAL库的RasterlO函数将临时缓冲区中的数据连续写进影像文件,由于临时缓冲区中的数据是连续的,所以能够一次写入,这样写请求次数也能降低为原来一半。
4.根据权利要求1所述的在集群环境中对遥感影像数据进行高效并行存取的方法,其特征在于:所述步骤(5)中每一行最左端的进程负责读写文件操作,其它进程与本行最左端的进程通信的具体实现为:假设有m×n个进程,即P[1][1],P[1][2],…P[1][n],P[2][1],…P[m][n],这些进程以按块划分的方式将遥感影像文件划分成m×n个数据块,即Block[1][1],Block[1][2],…Block[1][n],Block[2][1],…Block[m][n],对于读请求,为了减少读请求数目,采用两步操作:第一步,每一行最左端的进程P[*][1]先生成一个临时缓冲区,然后P[*][1]调用GDAL库的RasterlO函数读取数据块Block[*][1],Block[*][2],…Block[*][n],由于这些数据块合并后在文件中是连续分布的,因此只需一次读请求操作即可将这些数据块读到临时缓冲区中;第二步,P[*][1]将其临时缓冲区中的连续数据分成各个数据块Block[*][1],Block[*][2],…Block[*][n],并将这些数据块以消息传递的方式发送至进程P[*][1],P[*][2],…P[*][n];通过这种数据重分布方案,读请求数目将从原来的m×n降低为m;
对于各个进程按列或按块写遥感影像文件数据也是如此,第一步是每一行最左端的进程P[*][1]先生成一个临时缓冲区,然后每一行各个进程P[*][1],P[*][2],…P[*][n]将自己的数据块Block[*][1],Block[*][2],…Block[*][n]以消息传递的方式发送至进程P[*][1],P[*][1]合并这些数据块,生成连续数据,并放置到临时缓冲区;第二步P[*][1]调用GDAL库的RasterlO函数将临时缓冲区的连续数据写入遥感影像文件,由于临时缓冲区中的数据是连续的,所以能够一次写入;通过这种数据重分布方案,写请求数目从原来的m×n降低为m。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院地理科学与资源研究所,未经中国科学院地理科学与资源研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210278969.6/1.html,转载请声明来源钻瓜专利网。