matlab批量读取nc文件并转为tif
time星君
编辑于 2022年07月22日 18:20

clc;

clear;

%读取nc文件基本信息

inpath = 'E:\nct\nc\'; %nc文件所在文件夹

info1 = ncinfo('E:\nct\nc\tmp.nc'); %nc文件基本信息

%先在arcgis中读取nc文件中的一个时间点数据,并导出为tif,以便后面为nc文件批量导出提供坐标系

maskname = 'E:\nct\tif\2021-01.tif';

[A,R] = geotiffread(maskname); %主要目的是获取R,也就是坐标系

info = geotiffinfo(maskname);

%获取nc文件基本信息

infile = strcat(inpath,'tmp.nc');

lon = ncread(infile,'lon');

lat = ncread(infile,'lat');

D = ncread(infile,'tmp');  %读取变量D的内容

%按时间分别读取

for year = 2020:2021 %年循环 

  for month = 1:12 %月循环

    n = (year-1901)*12+month; %1901为数据起始年份

    data = D(:,:,n); %逐月读取

    data = rot90(data); %rot90逆时针旋转90°/flipud上下翻转/fliplr左右翻转  

               %有时候数据行列数反了,需要旋转数据来调整

    export2tif = ['E:\nct\result\',int2str(year),'_',int2str(month),'.tif'];  %导出路径和名字

    geotiffwrite(export2tif,data,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag); %批量导出为tif

  end

  disp(year);

end