- 积分
- 956
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-10-23
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 容与 于 2015-9-6 16:22 编辑
这几天等学校的面试等得好焦急,于是弄了一个写nc文件的程序(论坛里有几个老帖子,用的不是nccreate的,实际用起来数组存放顺序和描述文件(以ncdisp看的)有差异【用matlab读取和ncl读取经纬度反了什么的】,应该用ncdump看的描述差不多,这里是和ncdisp描述的一致。经验而言,matlab和ncl读取数据顺序貌似是反的,需要自行验证一下),仅供参考(还有方便以后自己又忘了)。这里,能够生成 “Global Attributes:”,生成经纬度等坐标的方法在其他帖子有提及,和生成变量类似,我就不赘述了,有个老帖子讲netcdf的可参考:
http://bbs.06climate.com/forum.php?mod=viewthread&tid=28875
下面是代码(吐槽一下,代码半天只能传1行,也是醉了)和生成的部分描述文件:
clear;close all;
inputdir = '/home/test01/agrif/ROMS_FILES'
%-----------------------------------------
%input data
indirfile = [inputdir '/' 'roms_blk.nc'];%
bulk_time = ncread(indirfile,'bulk_time');
tair = ncread(indirfile,'tair');
rhum = ncread(indirfile,'rhum');
%省去其他变量 ...
%-----------------------------
%write
%
filename = [inputdir '/' 'roms_blk1.nc'];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ncwriteatt(filename,'/','title',' simulation');
% ncwriteatt(filename,'/','date',datestr(now));
% ncwriteatt(filename,'/','grd_file',filename);
% ncwriteatt(filename,'/','type','ROMS heat flux bulk forcing file');
%%head information,do not write above because have not created the nc file. Suggest create at tail.
varname='bulk_time';N=size(bulk_time);
nccreate(filename,varname,'Dimensions',{'bulk_time',N(1)},'Datatype','double','Format','classic');
% 写入的文件名 变量名 维数 维名称与维大小 文件类型(可以是single) 格式(可以是64bit)
ncwrite(filename,varname,bulk_time);
%写成nc文件上面四行是必须的(从“filename=...”开始不包括注释部分)下面6行是该变量的注释——描述
long_name = 'bulk formulation execution time'; %%全称
units = 'days'; %%单位
cycle_length = 360; %%循环长度
ncwriteatt(filename,varname,'long_name',long_name);
ncwriteatt(filename,varname,'units',units);
ncwriteatt(filename,varname,'cycle_length',cycle_length);
varname='tair';N=size(tair);
nccreate(filename,varname,'Dimensions',{'xi_rho',N(1),'eta_rho',N(2),'bulk_time',N(3)},'Datatype','double','Format','classic');
ncwrite(filename,varname,tair);
long_name = 'surface air temperature';
units = 'Celsius';
ncwriteatt(filename,varname,'long_name',long_name);
ncwriteatt(filename,varname,'units',units);
varname='rhum';N=size(rhum);
nccreate(filename,varname,'Dimensions',{'xi_rho',N(1),'eta_rho',N(2),'bulk_time',N(3)},'Datatype','double','Format','classic');
ncwrite(filename,varname,rhum);
long_name = 'relative humidity';
units = 'fraction';
ncwriteatt(filename,varname,'long_name',long_name);
ncwriteatt(filename,varname,'units',units);
%中间省去了其他变量......
%%这个就是所谓的头文件,Global Attribute 就放在这里,像Source、Format、Dimensions,都是自带的。Global Attribute我猜只是全局注释
ncwriteatt(filename,'/','title',' simulation');
ncwriteatt(filename,'/','date',datestr(now));
ncwriteatt(filename,'/','grd_file',filename);
ncwriteatt(filename,'/','type','ROMS heat flux bulk forcing file');
ncdisp(filename);
|
-
部分描述文件
|