生态遥感的学习笔记遥感生态笔记

使用Matlab裁剪栅格数据

2019-11-26  本文已影响0人  荔枝猪

需求

使用Matlab读取tif格式的栅格数据,并根据该栅格数据裁剪多副其余栅格数据

制作掩膜数据

Mask_data = double(importdata('D:\GPP\ecology\eco1km\2015\eco1km.tif'));   % 获取研究区栅格数据
Mask_data(Mask_data==15|Mask_data==4) = nan;                               % 将研究区外nodata设为nan值,本例像元值等于15或4的为NAN  
Mask_data(Mask_data>0) = 1;                                                % 研究区其余设为1

栅格数据批量裁剪

% 输入需要裁剪的栅格数据地址,读取文件夹下所有tif文件,一个文件代表一个时间(天\16d\月)的数据
dz = dir('D:\GPP\EVI_TEM\TEM\*.tif'); 
for i = 1:size(dz,1)                                 % 计算文件个数
    filename = strcat(dz(i).folder,'\',dz(i).name);  % 栅格数据的每个文件地址+文件名
    data = double(importdata(filename));             % 获取栅格数据
    %data(data<0) = nan;                             % 将研究区外nodata设为nan值,本例不需要  
    data2 = data.*Mask_data;                         % 利用任何数*NAN为NAN,*1为原数进行裁剪
    data_all{i} = data2;                             % 存放于元胞中    
end

输出裁剪后的栅格数据

% 先读取一个已有栅格数据的地理信息
[a,R] = geotiffread('D:\GPP\ecology\eco1km\2015\eco1km.tif');
info = geotiffinfo('D:\GPP\ecology\eco1km\2015\eco1km.tif');
% 输出带有地理坐标信息的栅格数据
for k = 1:length(data_all)
    tempp = data_all{k};
    filename = strcat(dz(k).folder,'\L_',dz(k).name); % 栅格数据的每个文件地址+文件名
    geotiffwrite(filename,tempp,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag)  
end

补充说明

掩膜的栅格数据和需裁剪的栅格数据,行列数需一致

上一篇下一篇

猜你喜欢

热点阅读