爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5740|回复: 17

[脚本编辑] 求助!grads提取nc资料中遇到的问题

[复制链接]

新浪微博达人勋

发表于 2015-11-13 22:15:27 | 显示全部楼层 |阅读模式

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

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

x
我主要是要用grads提取1981—2010年的冬季(1,2,3月)高度场资料,用的是NCEP2的高度场。
提取的gs如下(以1981年为例):
'reinit'
yy=1981
'set gxout fwrite '
'set fwrite E:/data/ncep_grd/hgt/hgt'yy'.grd'
'sdfopen E:/data/NCEP2/hgt/hgt.'yy'.nc'
if((math_mod(yy,4)=0&math_mod(yy,100)!=0)|math_mod(yy,400)=0)
tt=1
while(tt<=59|t>=336&t<=366)
'set t 'tt''
zz=1
while(zz<=17)
'set z 'zz''
'set x 1 144'
'set y 1 73'
'd hgt'
zz=zz+1
endwhile
tt=tt+1
endwhile
else
tt=1
while(tt<=59|t>=335&t<=365)
'set t 'tt''
zz=1
while(zz<=17)
'set z 'zz''
'set x 1 144'
'set y 1 73'
'd hgt '
zz=zz+1
endwhile   
tt=tt+1
endwhile
endif
'disable fwrite'
;
!!!此处提取1,2,3月每年90天,闰年的2月最后一天不要
分别完成1981—2010年30个年份的提取之后,鉴于之后要用一个30年完整序列,我就想对每年的头尾两天检验一下一原始的nc数据是否一致。
遇到如下问题(仍然以1981为例):
ctl文件如下:
dset E:\data\ncep_grd\hgt\hgt1981.grd
title daily NC winter
undef -9.99e+08
xdef 144 linear 0 2.5
ydef 73 linear -90 2.5
zdef 17 levels 1000 925 850 700 600 500 400 300
250 200 150 100 70 50 30 20 10
tdef 90 linear 00Z01JAN1981 1440mn
vars 1
hgt=>hgt  17  t,z,y,x  Daily Geopotential Heights on Pressure Levels
endvars
当set t=1时,正常,可以画出和nc资料中一样的图;
QQ截图20151113220353.png QQ截图20151113220405.png
当set t=90时,d hgt时,出现如下错误:
QQ截图20151113220924.png
求助啊,这是什么问题?有人碰到过么?求大神帮忙!!

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

新浪微博达人勋

发表于 2015-11-13 23:12:52 | 显示全部楼层

回帖奖励 +1 金钱

啊帮你顶顶吧。等大神来解答
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-13 23:39:11 | 显示全部楼层
你写入grd的文件中,t是啥? 你的问题是写入数据的gs就不对
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-13 23:45:36 | 显示全部楼层
不清楚while循环里面还可以使用条件语句的啊,可能是我懂得不多···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-14 09:04:07 | 显示全部楼层
芥末 发表于 2015-11-13 23:39
你写入grd的文件中,t是啥? 你的问题是写入数据的gs就不对

我现在知道应该是while循环选月份日期的那一句出错了,我单独分月再合成就对了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-14 09:48:58 | 显示全部楼层
river 发表于 2015-11-13 23:45
不清楚while循环里面还可以使用条件语句的啊,可能是我懂得不多···

的确是那句的错
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-14 09:49:44 | 显示全部楼层
river 发表于 2015-11-13 23:45
不清楚while循环里面还可以使用条件语句的啊,可能是我懂得不多···

的确是while循环那句有问题
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-14 10:09:51 | 显示全部楼层
根据你gs的意图,你程序提取的应该是冬季(12,1,2月)三个月的位势高度数据,因此,1981年冬季应该被提取的就只是当年12月和次年1月、2月的数据,不能像你这样处理提取当年1月、2月和12月的数据。虽然你能提取数据成功,但你在ctl的描述文件中tdef 90 linear 00Z01JAN1981 1440mn这句这么写,就错了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-14 10:12:58 | 显示全部楼层
这样处理,画图时,set t=90,时间信息是1981年3月31日,显然你的数据中没有这个时间信息。如果非要这样1、2、12月全提取当年的数据,相应的ctl文件中tdef这句话,应该像zdef一样以枚举型表示,否则一定会报你这种错误。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-11-14 10:19:20 | 显示全部楼层
风之精灵 发表于 2015-11-14 10:12
这样处理,画图时,set t=90,时间信息是1981年3月31日,显然你的数据中没有这个时间信息。如果非要这样1、 ...

grads中tdef的设置中不是只能写均匀增量的么?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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