爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10790|回复: 14

用grads把nc格式的资料转换成季平均grd资料时遇到问题。

[复制链接]
发表于 2014-5-13 22:58:38 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图: -
问题概况: 用grads把nc格式的资料转换成季平均grd资料,不知道对不对。
我看过提问的智慧: 看过
自己思考时长(天): 3

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

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

x
各位前辈好!
我把时长为45年,每年冬季3个月(12、1、2),时次为135个月的海平面气压的nc格式的数据,用Grads转换成季平均(时次为45)的grd.格式资料,以供FORTRAN使用,但结果一直不太对,希望高手前辈指导一下,下面是我的gs文件:
'reinit'
'sdfopen d:\data\surface.nc'
'set gxout fwrite'
'set fwrite d:\data\ave\ave-slp\slpqq-1.grd'
'set lon 0 360'
'set lat -90 90'
'set z 1'
'set t 1 135'
ti=1
while(ti<135)
'set t 'ti''
'define aveslp=ave(slp,t='ti',t='ti+2')'
'd aveslp'
ti=ti+3
endwhile
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
发表于 2014-5-14 07:30:56 | 显示全部楼层
是怎么不对呢?我看楼主连冬季的循环都没写对···随便带进去,比如ti=1的时候'define aveslp=ave(slp,t=1,t=3)',这也不是冬季的吧,循环开始就是错的后面跟着不对了
密码修改失败请联系微信:mofangbao
发表于 2014-5-14 08:53:00 | 显示全部楼层
*不知道你资料的开始年份是多少,假设45年从1966~2010年,可以这样设
'reinit'
'sdfopen d:\data\surface.nc'
'set gxout fwrite'
'set fwrite d:\data\ave\ave-slp\slpqq-1.grd'
'set x 1 144'
'set lat 1 73'
'set z 1'
ti=1966
while(ti<=2010)
'set time jan'ti''
'define aveslp=ave(slp,t-1,t+1)'
'd aveslp'
ti=ti+1
endwhile
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
发表于 2014-5-14 08:58:24 | 显示全部楼层
首先,你写出的文件,时间(t=ti)是不连续的,我以前用过夏季的降水,将gs文件贴给你看看(一共55个nc文件1951-2005年),自己再考虑考虑,希望对你有帮助。
'reinit'

'set fwrite F:\Data\ChinaPrecip\prep_JJA.grd'
'set gxout fwrite'


i=1951

while(i<2006)

'sdfopen F:\Data\ChinaPrecip\'i'.nc'
if((math_mod(i,400)=0)|(math_mod(i,100)!=0)&(math_mod(i,4)=0))
'set x 1 126'
'set y 1 69'
'set z 1'
'set t 'i-1950''

'd sum(prep,t=153,t=244,1)/10'

else

'set x 1 126'
'set y 1 69'
'set z 1'
'set t 'i-1950''
'd sum(prep,t=152,t=243,1)/10'

endif

'close 1'

i=i+1
endwhile


'disable fwrite'
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-5-14 09:00:24 | 显示全部楼层
river 发表于 2014-5-14 07:30
是怎么不对呢?我看楼主连冬季的循环都没写对···随便带进去,比如ti=1的时候'define aveslp=ave(slp,t=1 ...

是这样的,我的资料就是每年冬季3个月的,所以ti=1的时候'define aveslp=ave(slp,t=1,t=3)'就是第一个冬季的平均,ti=1+3=4的时候'define aveslp=ave(slp,t=4,t=6)'算的是第二个冬季的平均,您觉得这样理解有问题么?嘿嘿。。。。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-5-14 09:02:31 | 显示全部楼层
hahahaha 发表于 2014-5-14 08:53
*不知道你资料的开始年份是多少,假设45年从1966~2010年,可以这样设
'reinit'
'sdfopen d:\data\surface ...

谢谢回复哈,我的资料是1957年12月至2002年2月(每年只有12、1、2月3个月的资料,所以时次是135,而年份是45  所以我觉得您的这个改动算的时次和我的不对应诶),您觉得呢?
密码修改失败请联系微信:mofangbao
发表于 2014-5-14 09:14:11 | 显示全部楼层
铅笔。 发表于 2014-5-14 09:02
谢谢回复哈,我的资料是1957年12月至2002年2月(每年只有12、1、2月3个月的资料,所以时次是135,而年份 ...

我看程序问题不大,除了'set t 1 135'有点多余
你为什么说不对呢?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-5-14 09:15:01 | 显示全部楼层
千里草 发表于 2014-5-14 08:58
首先,你写出的文件,时间(t=ti)是不连续的,我以前用过夏季的降水,将gs文件贴给你看看(一共55个nc文件 ...

谢谢帮助,但我想问下'd sum(prep,t=153,t=244,1)/10'、'd sum(prep,t=152,t=243,1)/10'
里面的153、244、10是什么含义啊?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-5-14 09:34:03 | 显示全部楼层
lqouc 发表于 2014-5-14 09:14
我看程序问题不大,除了'set t 1 135'有点多余
你为什么说不对呢?

恩 这个set t 我改过发现没啥影响。
我也一直觉得没问题,但是后面做EOF、回归分析什么的结果明显有错,才考虑可能是数据提取和转换时有错误。请问gs中的t对应的是原始数据文件里的时次吧?
密码修改失败请联系微信:mofangbao
发表于 2014-5-14 10:33:21 | 显示全部楼层
铅笔。 发表于 2014-5-14 09:34
恩 这个set t 我改过发现没啥影响。
我也一直觉得没问题,但是后面做EOF、回归分析什么的结果明显有错, ...

后续分析有错不一定就是这一步的问题。不明白你说的原始数据的时次是什么意思。你的nc数据是自己造的么?q ctlinfo看看就知道了。话说你可以先尝试直接做第一年的冬季平均画个图,再用循环来吧所有的图都print出来,看看循环得到的结果和你直接画图的是否有差异。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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