使用Matlab合成月尺度、年尺度数据
2020-05-10 本文已影响0人
荔枝猪
处理PML v2陆地蒸散发与总初级生产力数据集,由8天尺度合成月尺度、年尺度数据
处理代码
% By Yang,2020/5/9
% 所有数据全部解压放在一个文件夹下
% GPP和ET真实值=像素值*scale_factor (scale_factor=0.01)
%% 合成年尺度数据
for j = 1:18 % 2002-2019,18年
a = num2str(2001+j); % 数字转字符
dz = ['F:\Regional_Dataset\PMLV2_005deg\PMLV2_005deg\*',a,'*.tif'];
pml_dz = dir(dz);
gpp = uint16(zeros(3000,7200)); % 生成uint16的空矩阵
Ec = uint16(zeros(3000,7200));
Es = uint16(zeros(3000,7200));
Ei = uint16(zeros(3000,7200));
Ew = uint16(zeros(3000,7200));
parfor i = 1:size(pml_dz,1) % 计算文件个数
pml_dz2 = strcat(pml_dz(i).folder,'\',pml_dz(i).name); % 数据的每个文件地址+文件名
[pml, R] = geotiffread(pml_dz2); % 读取tif数据
gpp = gpp + pml(:,:,1); % 总初级生产力累加
Ec = Ec + pml(:,:,2); % 植被蒸腾累加
Es = Es + pml(:,:,3); % 土壤蒸发累加
Ei = Ei + pml(:,:,4); % 冠层截留蒸发累加
Ew = Ew + pml(:,:,5); % 水体、积雪蒸发累加
end
PML_y{1,j} = gpp;
PML_y{2,j} = Ec;
PML_y{3,j} = Es;
PML_y{4,j} = Ei;
PML_y{5,j} = Ew;
end
save PML_y.mat PML_y -v7.3
%% 合成月尺度数据
for j = 1:18
a = num2str(2001+j);
for p = 1:12 % 12月
if p < 10 % 文件名2003-01-01.tif
b = ['0',num2str(p)];
else
b = num2str(p);
end
dz = ['F:\Regional_Dataset\PMLV2_005deg\PMLV2_005deg\*',a,'-',b,'*.tif'];% 利用通配符查找各年各月数据的地址
pml_dz = dir(dz);
gpp = uint16(zeros(3000,7200));
Ec = uint16(zeros(3000,7200));
Es = uint16(zeros(3000,7200));
Ei = uint16(zeros(3000,7200));
Ew = uint16(zeros(3000,7200));
parfor i = 1:size(pml_dz,1) % 计算文件个数
pml_dz2 = strcat(pml_dz(i).folder,'\',pml_dz(i).name); % 数据的每个文件地址+文件名
[pml, R] = geotiffread(pml_dz2); % 读取tif数据
gpp = gpp+pml(:,:,1); % 总初级生产力累加
Ec = Ec + pml(:,:,2); % 植被蒸腾累加
Es = Es + pml(:,:,3); % 土壤蒸发累加
Ei = Ei + pml(:,:,4); % 冠层截留蒸发累加
Ew = Ew + pml(:,:,5); % 水体、积雪蒸发累加
end
PML_m{1,(j-1)*12+p} = gpp;
PML_m{2,(j-1)*12+p} = Ec;
PML_m{3,(j-1)*12+p} = Es;
PML_m{4,(j-1)*12+p} = Ei;
PML_m{5,(j-1)*12+p} = Ew;
end
end
% 2002从7月起始,2019到8月结束,需要删除对应空元胞
save PML_m.mat PML_m -v7.3