生态遥感的学习笔记遥感

使用Matlab读取栅格数据

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

需求

使用Matlab读取tif格式的栅格数据,tif格式的栅格数据最为常见,即使不是也可通过ArcGIS或ENVI等对其进行转换,在Matlab中读取也很方便

读取一个文件夹下的所有tif格式的栅格数据

%% 以读取EVI数据为例
% 获取所有tif文件名
data_dz = dir('D:\MODIS\EVI\*.tif');     
% 读取数据,依次存储在元胞中
for i = 1:length(data_dz)
    filename = strcat(data_dz(i).folder,'\',data_dz(i).name); %文件路径和文件名
    data = double(importdata(filename));                      %获取data
    data (data <-0.2) = NaN;                                  %缺失值设为nan
    data_sum{i} = data;  
end

读取一个文件夹下包含子文件夹,tif格式栅格数据位于子文件夹下

%% 以读取EVI数据为例
% 获取子文件夹信息
subdir  = dir('E:\MODIS\EVI_sg');

% 读取一个现有数据,获取其矩阵行列大小
a = importdata('E:\MODIS\test\1\EVI20010101.tif');
[m,n] = size(a);  

% 构建和data同大小的一列NaN矩阵
data_sum = zeros(m*n,1)+NaN;             
k1=1;                                                        % 初始化为1

% 第1个数组元素和第2个数组元素分别是’.’和’..’,表示当前目录和上层目录,不读取
for i = 1 : length( subdir )
    if( isequal( subdir( i ).name, '.' )||...
        isequal( subdir( i ).name, '..')||...
        ~subdir( i ).isdir)                                  % 如果不是目录则跳过
        continue;
    end
    % 利用fullfile函数根据指定的文件夹和文件名构建完整的文件设定
    subdirpath = fullfile( subdir( i ).folder, subdir( i ).name, '*.tif' );
    dat = dir( subdirpath );                                 % 子文件夹下找后缀为tif的文件

    for j = 1 : length( dat )
        datpath = fullfile( subdir( i ).folder, subdir( i ).name, dat( j ).name);
        % 此处添加为对文件的读写或其它操作 %
        data = double(importdata(datpath)); %获取data
        data = reshape(data,m*n,1);                          % 转为1列
        data(data<-0.2) = NaN;                               % 缺失值设为nan
        data_sum(:,k1) = data;                               % 第一列为第一个时间的data         
        k1 = k1+1;    
    end
end
上一篇 下一篇

猜你喜欢

热点阅读