Matlab对NC文件p处理输出tif

本文基于matlab对普通nc数据进行批量处理成为tif的代码
首先:对路径进行设置,并查看nc数据的属性信息,如果是一类的数据,数据内部存储变量的字段基本相同;




文章使用的是gldas数据,数据变量是二维数据 比较方便
如果涉及到多维nc数据 如降水等 可能是 3各维度 经度纬度和时间 就需要按照时间进行输出
比如:2000-2020的降水数据 一年的nc中包括12个月数据
就需要进行提取
可以使用 pre=pers(:,:,i);这里主要是括号内部 其他pre都是自定义的变量名;(:,:,:)这三个位置分别对应 经纬度 与时间

循环输出部分 包括三个步骤第一步读取经纬度信息,读取 要处理的变量的信息(ps,这里也可以做一些平均操作 比如 平均值 什么的 也可以写循环处理 非常简单);
datas=0
for i=1:12
pre=ncread
data=pre
datas=datas+pre
end
datas就是 累加值
名称设置 这是依据不同的数据名称的命名
翻转图像是为了 让tif图像符合操作 不然输出的tif图像就是颠倒的
使用过程中可以用 imshow查看一下 也可以先处理一个文件 定制翻转的方法
最后就是使用函数 tif制图
georaster是给数据 赋予地理信息
w就是写成tif文件输出
参考代码

%% 此处为批量处理nc数据并转换为tif文件
clc
clear
%% 路径设置 需要修改
filepath='E:\DATA\gldas2.1\2020\';
%%获取nc数据的属性
ncdisp('GLDAS_NOAH025_M.A202001.021.nc4')
info=ncinfo('GLDAS_NOAH025_M.A202001.021.nc4');
%% 数据处理 逐个输出
filelist = dir([filepath,'*.nc4']);
n=length(filelist)
for k=1:n
ncFile=filelist(k).name
lon=double(ncread(ncFile,'lon'));
lat=double(ncread(ncFile,'lat'));
pic = ncread(ncFile,'SoilMoi0_10cm_inst'); %% nc文件中的变量命长
%% 设置名字
outFileName = filelist(k).name(22:29); %输出文件名,(1:33)即为第1-33个字符
%% 翻转图像
pic= flipud(pic);
pic=rot90(pic);
pic=rot90(pic);
pic=rot90(pic);
imshow(pic)
R=georasterref('RasterSize',size(pic),'Latlim',[double(min(lat)) double(max(lat))],'Lonlim',[double(min(lon)) double(max(lon))]);
geotiffwrite([outpath1, '\',outFileName,'.tif'],pic,R)
end
disp("批量处理完成")

