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

*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

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

  • 59
    点赞
  • 137
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ls_y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值