*matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),具有数值分析、矩阵计算、科学数据可视化的强大功能。tif格式数据本质上就是带有地理信息的矩阵数据,因此,matlab处理tif数据有着得天独厚的优势。
下面介绍matlab如何读取单个tif数据、批量读取有命名规律的多个tif数据、批量读取无命名规律的多个tif数据并导出
数据准备(这一步很重要,要确保数据和路径准确):
首先创建一个文件夹(在哪里创建都可以),命名为数据处理(取其他名字也可以)
然后在数据处理文件夹内再创建一个文件夹——A1_CCI_China_lucc将原始栅格数据放进该文件夹内,再创建一个matlab的程序文件(在matlab中),命名为code:
文件夹和代码的命名都只是为了和下面代码中的命名对应上,在实际操作中大家可以根据自己的需求命名,只要保证和代码中的名字对应上就行
1.基本代码 (单个tif):
clc;
clear;
samplename = 'A1_CCI_China_lucc/CCI_cn1992albers.tif'; %文件夹下tif数据的名称
[SS,R] = geotiffread(samplename); %SS为tif数据的信息,是一个二维数组,R是tif数据的地理信息
info = geotiffinfo(samplename); % 读取tif数据的地理信息,为后面导出为tif数据提供地理信息
[nrows,ncols] = size(SS); %读取SS的行列数
%导出为tif
filename = ['A1_CCI_China_lucc/CCI_cn1992albers.tif']; %存储位置和名字
geotiffwrite(filename,SS, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag); %导出
2.基本代码 (有命名规律的多个tif):
for year = 2000:2020
%一般以时间为规律,其他保持不变
[A,R] = geotiffread(['A1_CCI_China_lucc/CCI_cn',num2str(year),'albers.tif']);
filename = ['A1_CCI_China_lucc/CCI_cn',num2str(year),'albers.tif'];
%导出为tif
geotiffwrite(filename,A, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag); %分别导出
end
3.基本代码 (无命名规律的多个tif):
clc;
clear;
samplename = 'NDVI\ndvi2019001mod13a1c006r500m16days_msg.tif';
[D,R] = geotiffread(samplename);
info = geotiffinfo(samplename);
[rows,cols] = size(D);
Path = 'NDVI\'; % 设置数据存放的文件夹路径
File = dir(strcat(Path,'*.tif')); % 显示文件夹下所有符合后缀名为.tif文件的完整信息
Tif_num =length(File); % 获取所提取数据文件的个数
for k = 1 : Tif_num
% 连接路径和文件名得到完整的文件路径
tif_name = File(k).name;
[filepath,name,ext] = fileparts(tif_name); %获取文件名组成部分 filepath:文件路径名称;name:文件名;ext:扩展名
[data,R] = geotiffread(strcat(Path,tif_name));
filename = []
%按照原名导出为tif
filename = ['NDVI\',name,'.tif'];
geotiffwrite(filename,data, R, 'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
end
创作不易,觉得有用的话还请顺手点个赞。