| 
 
	积分957贡献 精华在线时间 小时注册时间2012-10-23最后登录1970-1-1 
 | 
 
| 
本帖最后由 容与 于 2015-9-6 16:22 编辑
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
  
 这几天等学校的面试等得好焦急,于是弄了一个写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);
 
 
 
 
 
 
 
 | 
 
部分描述文件   |