Matlab合并一个文件夹下所有tif到一张图(之前分块跑出来的数据)
前提:之前因为数据量比较大,所以分成若干块间歇跑的,每个块都是按总的tif大小保存的(无数据区域是NaN),现在用Matlab对分块的数据进行合并到一整个中国区域的tif里,代码如下。
%读取文件夹中的所有tif
filepath="F:\data\phenology_result\Gaussian\SOS2\";
fileExt='*.tif';
files=dir(fullfile(filepath,fileExt));
outname=filepath+"phe_"+"SOS2"+"_gau_merge1.tif";
len1=size(files,1);
file1=strcat(filepath,files(1).name);
[Arr,R1] = geotiffread(file1);
[m,n,b]=size(Arr);
Rout=zeros(m,n,b);
for i=1:len1
filename=strcat(filepath,files(i).name);
[Arr,R] = geotiffread(filename);
info=geotiffinfo(filename);
Rout=Rout+nan20(Arr);
end
%写入geotiff
geotiffwrite(outname, Rout, R1, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
%转换数据
function out= nan20(x)
%nan转0
x(isnan(x)==1) = 0;
out= x;
end