【技巧】matlab批量读取tif数据并导出

*matlab是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室),具有数值分析、矩阵计算、科学数据可视化的强大功能。tif格式数据本质上就是带有地理信息的矩阵数据,因此,matlab处理tif数据有着得天独厚的优势。
下面介绍matlab如何读取单个tif数据、批量读取有命名规律的多个tif数据、批量读取无命名规律的多个tif数据并导出

数据准备(这一步很重要,要确保数据和路径准确):
首先创建一个文件夹(在哪里创建都可以),命名为数据处理(取其他名字也可以)
【技巧】matlab批量读取tif数据并导出_第1张图片

然后在数据处理文件夹内再创建一个文件夹——A1_CCI_China_lucc将原始栅格数据放进该文件夹内,再创建一个matlab的程序文件(在matlab中),命名为code:
【技巧】matlab批量读取tif数据并导出_第2张图片
文件夹和代码的命名都只是为了和下面代码中的命名对应上,在实际操作中大家可以根据自己的需求命名,只要保证和代码中的名字对应上就行

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

创作不易,觉得有用的话还请顺手点个赞。

你可能感兴趣的:(matlab,矩阵,开发语言)