matlab 批量读取tif、写入tif

这段代码用来读取栅格文件,然后修改一些值(比如把某些值设置为nan),或者修改double存储或single存储,再写成新的栅格文件。

clc;
clear all;
filePath = 'E:\DATA\';   %读取的栅格的文件夹
newfilePath = 'E:\DATA\out\';  %输出位置

img_path_list = dir(strcat(filePath,'*.tif')); %获取该文件夹中所有TIF格式的图像
img_num = length(img_path_list); %获取图像总数量


II=cell(1,img_num); %建立一个cell


if img_num > 0
        for jj = 1:img_num 
                 image_name = img_path_list(jj).name; % 图像名 
                 [image,geo] = geotiffread(strcat(filePath,image_name)); %读取geotiff文件
                 info = geotiffinfo(strcat(filePath,image_name));

                 % 下面的操作是将特定的值赋值为nan 根据你的需要可以删除这个操作
                 x = image(1,1);
                 image(image == x) = nan;

                % 这个是将原本double的转变为single,储存空间小了
                 image = single(image);


                 II{jj}=image;
        
                 geotiffwrite(image_name, image, geo,  ...
                 'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag); %输出新的图像


                 fprintf(' %d %s\n',jj,strcat(filePath,image_name));
                 % 显示正在处理的图像名
                 
        end
end

你可能感兴趣的:(Matlab,matlab,算法)