利用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的数据时,数据已经可以正常导出。