请选择 进入手机版 | 继续访问电脑版
爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14323|回复: 14

[作图] ncl应该如何读取有多个变量的nc资料?

[复制链接]

新浪微博达人勋

发表于 2014-11-24 13:13:40 | 显示全部楼层 |阅读模式

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

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

x

原始的nc资料是在欧洲中心下的,三个变量下在一个nc里了,查看过原始资料里面的变量名分别是u,v,t,现在想计算里面的额v变量,但是总是读不对,这个脚本以前读只含一个变量的nc时没有问题,不知道是不是多个变量的读法不同,有人可以帮忙解答吗。

脚本如下


load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
begin

    in1 =addfile("/home/hp/uvt.nc","r")
      time  = in1->time
        lev   = in1->level
lon   = in1->longitude
        lat   = in1->latitude
hgt  = short2flt(in1->v(2:133,:,:,:))
        tt = cd_calendar(hgt&time,0)
print(hgt)

h = hgt(0:32,:,:,:)
        h = 0.0
   fud   = addfile ("vcha.nc","c")
;-------------------------------------------------------------------------------------------------
h = new((/33,17,181,360/),float)
do k=0,32
  h(k,:,:,:)=(hgt(k,:,:,:)+hgt(k+1,:,:,:)+hgt(k+2,:,:,:)+hgt(k+3,:,:,:))/4.0
end do
        eld = new((/17,181,360/),float)
elg = new((/17,181,360/),float)
        elq = new((/17,181,360/),float)
eld(:,:,:)=(h(1,:,:,:)+h(9,:,:,:)+h(10,:,:,:)+h(11,:,:,:)+h(12,:,:,:)+h(14,:,:,:)+h(16,:,:,:)+h(24,:,:,:)+h(26,:,:,:)+h(28,:,:,:)+h(31,:,:,:)+h(32,:,:,:))/12.0
        elg(:,:,:)=(h(0,:,:,:)+h(5,:,:,:)+h(7,:,:,:)+h(13,:,:,:)+h(15,:,:,:)+h(17,:,:,:)+h(18,:,:,:)+h(20,:,:,:)+h(21,:,:,:)+h(22,:,:,:)+h(25,:,:,:))/11.0
        elq(:,:,:)=eld(:,:,:)-elg(:,:,:)
  
   copy_VarCoords(hgt(0,:,:,:),elq)
   fud->V = elq
end



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

新浪微博达人勋

 楼主| 发表于 2014-11-24 13:18:56 | 显示全部楼层
虽然可以通过把资料分开下,来解决,但还是想知道答案,不然整个人都难受
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 14:09:52 | 显示全部楼层
感觉没有什么地方写错了啊,是提示什么错误了还是算出来的资料明显不对?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-24 15:48:53 | 显示全部楼层
sun_shine_Xia 发表于 2014-11-24 14:09
感觉没有什么地方写错了啊,是提示什么错误了还是算出来的资料明显不对?

一开始是提示,“你不能创建一个新的变量”,原话我也找不到了,刚才又运行一次,又可以了,也就是说以后可以这样读多个变量的nc数据是吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 16:18:52 | 显示全部楼层
爆浆炸鸡 发表于 2014-11-24 15:48
一开始是提示,“你不能创建一个新的变量”,原话我也找不到了,刚才又运行一次,又可以了,也就是说以后 ...

是的,一个nc里面有多个变量的话,你只需要变化hgt  = short2flt(in1->v(2:133,:,:,:))里面的那个v就可以了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 19:26:24 | 显示全部楼层
感觉没那么复杂吧,我读过ncep和模式转出来的nc数据,不管nc里面有多少个变量,直接读就可以啊,f=addfile("**.nc","r")
t=f->TG
这样就可以吧,没读过欧洲中心的数据,或者可以利用ncdump -v TG   **.nc  >  tg.log或者ncl_filedump -v TG   **.nc  >  tg.log 把那个变量单独提取出来,然后再利用脚本读取,ncdump 和ncl_filedump 都试试,有时候一个可以用,一个不可以用,具体原因还不是很明白。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 10:17:46 | 显示全部楼层
sun_shine_Xia 发表于 2014-11-24 16:18
是的,一个nc里面有多个变量的话,你只需要变化hgt  = short2flt(in1->v(2:133,:,:,:))里面的那个v就可以 ...

恩恩,好的,谢谢~~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-25 10:18:16 | 显示全部楼层
金玉姻缘 发表于 2014-11-24 19:26
感觉没那么复杂吧,我读过ncep和模式转出来的nc数据,不管nc里面有多少个变量,直接读就可以啊,f=addfile( ...

好的,我去试一下,学习啦~~~谢谢~~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-7 10:50:44 | 显示全部楼层
金玉姻缘 发表于 2014-11-24 19:26
感觉没那么复杂吧,我读过ncep和模式转出来的nc数据,不管nc里面有多少个变量,直接读就可以啊,f=addfile( ...

学习了,感谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-1-7 10:50:48 | 显示全部楼层
金玉姻缘 发表于 2014-11-24 19:26
感觉没那么复杂吧,我读过ncep和模式转出来的nc数据,不管nc里面有多少个变量,直接读就可以啊,f=addfile( ...

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

本版积分规则

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

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

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