利用MATLAB批量读写tif数据(Landsat7&8)

利用MATLAB批量读写tif数据(Landsat7&8)

代码来源于:批量读写
代码如下:

clc;clear
%% 读取NDVI-tif文件
file_path_N = 'E:\';% 图像文件夹路径 
img_path_list_N = dir(strcat(file_path_N,'*.tif'));%获取该文件夹中所有TIF格式的图像 
img_num_N = length(img_path_list_N);%获取图像总数量
II_N=cell(1,img_num_N);

if img_num_N > 0
    for jj = 1:img_num_N
        image_name_N = img_path_list_N(jj).name;% 图像名
        [image_N,geo] = geotiffread(strcat(file_path_N,image_name_N));
        II_N{jj}=image_N;
        fprintf(' %d %s\n',jj,strcat(file_path_N,image_name_N));% 显示正在处理的图像名
    end
end
%% 计算植被覆盖度
NDVImax = 0.8;
NDVImin = 0.2;
fc_1 = cell(1,img_num_L);
for i = 1:img_num_L
    fc_1{i} = ((II_N{i}-NDVImin)./(NDVImax-NDVImin)).^2;
end
 %% 输出TIF图像
 for j = 1:1:img_num_L
     CoordRefSysCode=32648; 
     outpath='E:\';
     outFile=strcat(outpath,img_path_list_L(j).name);
     geotiffwrite(outFile,fc_1{i},geo,'CoordRefSysCode',CoordRefSysCode);
 end

遇到的问题: 在读取Landsat7的数据时,批量导出数据一直失败,原因在于,下载的Landsat7的数据,每一幅影像的行列号有差异,导致导出时的地理信息‘geo’与各个影像并不匹配,因此出错。在换成Landsat8的数据时,数据已经可以正常导出。