MATLAB对TIFF遥感影像批量辐射定标

将HDF格式的MODIS数据批量拼接、投影及格式转换、重采样、裁剪到研究区后,想批量对数据进行辐射定标(把DN值计算为具有物理意义的值),这里以MOD13A2产品为例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
inpath='E:\1SMAPDATA\NDVIREF2016_2019\05CATEGORY\02CLASS\NDVI';%NDVI原始数据 NDVI文件夹下都是TIFF格式的NDVI遥感影像
outpath='E:\1SMAPDATA\NDVIREF2016_2019\06SCALE';%输出路径
min=-2000; %最小值
max=10000;%最大值
fill=-3000;%填充值
back=-32768;%背景值 这个需要注意 需要先在MATLAB中先读取一幅影像后确定 有时为65535(LST)
scale=0.0001;%缩放因子
off=0;%偏移量
EqualFillBackSca(inpath,outpath,fill,back,min,max,scale,off);%统一辐射定标函数
 
% fill back min max scale off  MOD13A2
% REF: -1000 -32678 0 10000 0.0001
% NDVI EVI :-3000 -32678 -2000 10000 0.0001
 
% min=0;
% max=10000;
% fill=-1000;
% back=-32768;
% scale=0.0001;
% off=0;
 
%读取TIFF数据
[A,R]=geotiffread('E:\02CLASS\blue\A2015353.1_km_16_days_blue_reflectance.tif');

统一辐射定标函数:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function [] = EqualFillBackSca(imagepath,outpath,fill,background,min,max,scale,offset)
%EqualFillBackSca 
%imagepath表示含有某一种类数据的文件夹
%outpath 影像输出路径
%有些影像没有offset值,相应位置就为0
%统一至:背景值 填充值均为nan 这样在ArcGIS中显示时就是正常范围
%背景值可能是最大的LST:65535 也可能是0 建议先读取数据确认
%Fill值一般是产品说明中有的,还是再确定一些比较好
% 要在有效值范围内
fileFolder=fullfile(imagepath);
dirOutput=dir(fullfile(fileFolder,'*.tif'));
fileNames={dirOutput.name}'; l
for i=1:length(fileNames)
filepath=[imagepath,'\',fileNames{i}];
[A,R]=geotiffread(filepath);%注意这里读取的数据矩阵A是不是double格式,这个格式不能为负数或者是nan
A=double(A);
A(A==fill)=nan;
A(A==background)=nan;
A((A<min))=nan;
A((A>max))=nan;
A=A*scale+offset;
info = geotiffinfo(filepath);
geotiffwrite([outpath,'\',fileNames{i}],A,R,'GeoKeyDirectoryTag', info.GeoTIFFTags.GeoKeyDirectoryTag);
end
end

最后结果:

 

posted @   icydengyw  阅读(1691)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示