爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6349|回复: 10

[图形美化] 求助:grads算冬季平均

[复制链接]
发表于 2016-12-19 22:13:16 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 海soso 于 2016-12-19 22:15 编辑

数据是整层可降水量 想算从94年到15年的冬季平均(这里冬季算的是11月到次年2月) 用fwrite写到grd文件里
if判断的是是否是闰年
出现的问题是算出来的非闰年的数据是正确的 闰年的数据都是一样的
贴ctl:
dset d:/data/pr_wtr/pr_wtr9415.grd
title mean daily NCEP Reanalysis (1994-2015)
undef -999000000.000000
xdef 144 linear 0 2.5
ydef  73 linear -90 2.5
zdef 1 levels 999
tdef 8035 linear 00Z01Jan1994 1440mn
vars 1
pr_wtr 0 99 mean Daily Precipitable Water For entie atmosphere
endvars


贴gs:
'reinit'
'open d:/wu/pr_wtr/test/pr_wtr9415.ctl'
'set fwrite d:/wu/pr_wtr/test/pr_wtr9415ndjf1.grd'
'set gxout fwrite'

'set lon 70 140'
'set lat 15 55'

tt=305
while (tt<7730)
if(tt=670|tt=2131|tt=3592|tt=5053|tt=6514)
'set t 'tt'  'tt+120''
'd ave(pr_wtr,t='tt',t='tt+120')'
tt=tt+366
else
*'set t 'tt'  'tt+119''
'd ave(pr_wtr,t='tt',t='tt+119')'
tt=tt+365
endif
endwhile
'disable fwrite'
*'close 1'
*;


可以看到 循环里的有二个set t
如果 'set t 'tt'  'tt+120''(闰年,不注释,参与运算)+*'set t 'tt'  'tt+119''(非闰年,注释掉,不运算)得到的结果是算出来的非闰年的数据是正确的 闰年的数据都是一样的
如果 'set t 'tt'  'tt+120''(闰年,不注释,运算)+'set t 'tt'  'tt+119''(非闰年,不注释,运算)得到的结果是所有年的数据都是一样的
如果 *'set t 'tt'  'tt+120''(闰年,注释掉,不运算)+*'set t 'tt'  'tt+119''(非闰年,注释掉,不运算)得到的结果是数据量特别小 41k 根本画不出来图

也搜索了论坛里关于闰年的处理方法 试了artmunich写的http://bbs.06climate.com/forum.php?mod=viewthread&tid=7020&extra=&page=1
附gs:
'reinit'
'open d:/wu/pr_wtr/test/pr_wtr9415.ctl'
'set fwrite d:/wu/pr_wtr/test/pr_wtr9415ndjf2.grd'
'set gxout fwrite'

yr=1994
while (yr<=2014)
'set lon 70 140'
'set lat 15 55'
'd ave(pr_wtr,time=00Z01NOV'yr',time=00Z28FEB'yr+1')'
yr=yr+1
endwhile
'disable fwrite'
*'close 1'
*'reset'
*;

出来的结果和最后一种一样 特别小 41k


求大家帮下啊啊啊啊啊!要疯掉了
密码修改失败请联系微信:mofangbao
发表于 2016-12-20 08:56:23 | 显示全部楼层
reinit'
'open d:/wu/pr_wtr/test/pr_wtr9415.ctl'
'set fwrite d:/wu/pr_wtr/test/pr_wtr9415ndjf1.grd'
'set gxout fwrite'

'set lon 70 140'
'set lat 15 55'

tt=305
while (tt<7730)
if(tt=670|tt=2131|tt=3592|tt=5053|tt=6514)
'set t 'tt'  'tt+120''
'define a=ave(pr_wtr,t='tt',t='tt+120')'
'set t 'tt
'd a'
tt=tt+366
else
'set t 'tt'  'tt+119''
'define a=ave(pr_wtr,t='tt',t='tt+119')'
'set t 'tt
'd a'
tt=tt+365
endif
endwhile
'disable fwrite'
密码修改失败请联系微信:mofangbao
发表于 2016-12-20 08:57:05 | 显示全部楼层
不要平均完之后,直接进行输出,要设置一下
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-12-20 10:06:32 | 显示全部楼层
liyf 发表于 2016-12-20 08:57
不要平均完之后,直接进行输出,要设置一下

你好 按你的脚本run了一下 输出的文件0k==怎么会这样
密码修改失败请联系微信:mofangbao
发表于 2016-12-20 17:00:30 | 显示全部楼层
'set t 'tt'  'tt+120''应该是'set t 1'
密码修改失败请联系微信:mofangbao
发表于 2016-12-20 17:01:15 | 显示全部楼层
*'set t 'tt'  'tt+119''应该是'set t 1'
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-12-21 10:43:19 | 显示全部楼层
dln 发表于 2016-12-20 17:01
*'set t 'tt'  'tt+119''应该是'set t 1'

不行 出来的还是就41K 只有第一年的
密码修改失败请联系微信:mofangbao
发表于 2016-12-21 16:13:41 | 显示全部楼层
数据的大小应该是正常的,因为你只截取了中国这一块区域,我算了下数据的字节数29*17*21*4=41412。你生成数据的ctl:
xdef 29 linear 70 2.5
ydef  17 linear 15 2.5
zdef 1 levels 999
tdef 21 linear 00Z01Jan1994 1yr
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2016-12-21 16:22:22 | 显示全部楼层
dln 发表于 2016-12-21 16:13
数据的大小应该是正常的,因为你只截取了中国这一块区域,我算了下数据的字节数29*17*21*4=41412。你生成数 ...

我把每一年的分开出了 每一年的是200多k 画图的ctl是您这样写的 set t 2就会说超限了  T_T弄好久了就是弄不对
密码修改失败请联系微信:mofangbao
发表于 2016-12-22 14:15:40 | 显示全部楼层
如果你每年一个数据,那么你的ctl应该每年一个,tdef 1 linear 00Z01Jan1994 1yr
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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