使用Matlab裁剪栅格数据

作者: 荔枝猪 | 来源:发表于2019-11-26 14:57 被阅读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
    

    补充说明

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

    相关文章

      网友评论

        本文标题:使用Matlab裁剪栅格数据

        本文链接:https://www.haomeiwen.com/subject/nogewctx.html