爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4982|回复: 5

[程序设计] matlab生成nc数据,grads无法读取?

[复制链接]

新浪微博达人勋

发表于 2015-7-23 16:58:07 | 显示全部楼层 |阅读模式

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

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

x
如题,使用的是Matlab2014a
尝试生成一个nc数据,经向和纬向各十个格点,时次为1,生成数据后,用matlab读取没有问题,但是用grads的sdfopen命令读取就会报错。
报错内容如下:
gadsdf: SDF file has no discernable X coordinate.
  To open this file with GrADS, use a descriptor file with an XDEF entry.
  Documentation is at http://iges.org/grads/gadoc/SDFdescriptorfile.html


生成nc的程序如下,可能有点长,请各位指教,万谢!

%% 1创建nc文件
ncid=netcdf.create('test8.nc','NC_NOCLOBBER');

%% 2定义Dimension
lon=1:10;
lat=1:10;
time=0;
dimidx = netcdf.defDim(ncid,'lon',10);
dimidy = netcdf.defDim(ncid,'lat',10);
dimidt = netcdf.defDim(ncid,'time',1);

%%3赋予属性
%lon
varid_lon=netcdf.defVar(ncid,'longitude','double',dimidx);
netcdf.putAtt(ncid,varid_lon,'long_name','Longitude');
netcdf.putAtt(ncid,varid_lon,'units','degrees_east');
netcdf.putAtt(ncid,varid_lon,'axis','X');
%lat
varid_lat = netcdf.defVar(ncid,'latitude','double',dimidy);
netcdf.putAtt(ncid,varid_lat,'long_name','Latitude');
netcdf.putAtt(ncid,varid_lat,'units','degrees_north');
netcdf.putAtt(ncid,varid_lat,'axis','Y');
%time
varid_time = netcdf.defVar(ncid,'time','int',dimidt);
netcdf.putAtt(ncid,varid_time,'long_name','Time');
netcdf.putAtt(ncid,varid_time,'calendar','standard');
netcdf.putAtt(ncid,varid_time,'units','hour since 1900-01-01 00:00');

%% 4.定义变量:
varid_chl = netcdf.defVar(ncid,'CHL','double',[dimidx dimidy dimidt]);
netcdf.putAtt(ncid,varid_chl,'long_name','CHLFEB');
netcdf.putAtt(ncid,varid_chl,'units','mg/m2/day');
% netcdf.putAtt(ncid,varid_chl,'missing_value',-32767);%fine the missing value

%% 5完成netCDF文件定义模式
netcdf.endDef(ncid)

%% 6 把数据写到netcdf的文件中
netcdf.putVar(ncid,varid_chl,rand(10))
netcdf.putVar(ncid,varid_lon,lon);
netcdf.putVar(ncid,varid_lat,lat);  
netcdf.putVar(ncid,varid_time,time);  

%% 7 关闭文件
netcdf.close(ncid);


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

新浪微博达人勋

发表于 2015-11-7 20:44:21 | 显示全部楼层
圆圆圆 发表于 2015-11-7 17:08
多谢指点!研究一下COARDS格式先,还是希望可以不通过ctl文件的形式直接打开,如果能用sdfopen一步到位会 ...

只是使用的话,不用具体研究COARDS规则,用xdfopen打开也很方便,编写ctl的要求没有使用open的时候高。但是想直接打开好像不太可能。如果你研究出来,请分享下啊。
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2015-7-24 10:16:17 | 显示全部楼层
求助各位大神啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-4 16:04:21 | 显示全部楼层
你生成的nc文件不符合COARDS格式,需要编写个简单的ctl文件,然后使用xdfopen打开文件即可
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-7 17:08:06 | 显示全部楼层
ziqiangbuxi 发表于 2015-11-4 16:04
你生成的nc文件不符合COARDS格式,需要编写个简单的ctl文件,然后使用xdfopen打开文件即可

多谢指点!研究一下COARDS格式先,还是希望可以不通过ctl文件的形式直接打开,如果能用sdfopen一步到位会方便很多。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-28 17:19:56 | 显示全部楼层
+1!!遇到一样的问题!!

matlab计算出来的结果怎么导入grads出图
http://bbs.06climate.com/forum.p ... 2&fromuid=60928

想请教下楼主知道怎么将matlab计算结果导入Grads吗?不采用nc这种文件的话

密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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