欢迎光临散文网 会员登陆 & 注册

Matlab对NC文件p处理输出tif

2022-10-31 14:25 作者:研究生小小小王  | 我要投稿


本文基于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("批量处理完成")

Matlab对NC文件p处理输出tif的评论 (共 条)

分享到微博请遵守国家法律