爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 29212|回复: 22

[源程序] 【解决】nc文件与对应头文件的生成

[复制链接]

新浪微博达人勋

发表于 2015-9-6 14:53:03 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

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);






部分描述文件

部分描述文件
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-9-6 15:00:32 | 显示全部楼层

                               
登录/注册后可看大图
888
QQ图片20150906145941.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-6 15:24:15 | 显示全部楼层
楼主能将每部分稍微解释下吗,看起来有点晕
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-9-6 16:13:34 | 显示全部楼层
lhaikun@163.com 发表于 2015-9-6 15:24
楼主能将每部分稍微解释下吗,看起来有点晕

已经修改了,还有什么问题尽管问,相互学习嘛
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-6 16:26:21 | 显示全部楼层
容与 发表于 2015-9-6 16:13
已经修改了,还有什么问题尽管问,相互学习嘛

感谢楼主分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-9-6 22:06:35 | 显示全部楼层
捕捉到认识的人一只
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-9-7 08:39:33 | 显示全部楼层
someday 发表于 2015-9-6 22:06
捕捉到认识的人一只

,,,,,,,,
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-30 17:14:16 | 显示全部楼层
你好,请问你的原始输入文件是nc格式的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-3-31 11:31:39 | 显示全部楼层
jayzhong 发表于 2016-3-30 17:14
你好,请问你的原始输入文件是nc格式的?

是的,也可以是其他格式的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-8-14 14:33:58 | 显示全部楼层
感谢楼主分享~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表