爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7879|回复: 17

[分享资料] 【求助】grads语句里的时间变量(文件名)控制

[复制链接]
发表于 2014-1-8 23:18:38 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 红河岸 于 2014-1-9 20:02 编辑

最近在用wrf的结果插值到站点算风场,论坛里已有grads2ascii.gs,详细大家可以参考这两个帖

http://bbs.06climate.com/forum.php?mod=viewthread&tid=4764&extra=&page=1

http://bbs.06climate.com/forum.php?mod=viewthread&tid=1780&extra=&page=1

我写的gs如下:

'reinit'

'set gxout fwrite'

'open d:\grib\wrf\2010061212\d02\cwrf_d03_2010061212_0000.ctl'

'set x 1'

'set y 1'

*'set lon 112 128'

*'set lat 17 30'

'set z 1'

'set t 1 72'

#now interp the grid data to station data and export

'd:\grib\wrf\grads2ascii mag(gr2stn(u10,121,27.01),gr2stn(v10,121,27.01)) d:\grib\wrf\station2010061212.txt'


因为要做逐日的批量处理,其实简单来说,就是“2010061212”这个字符串要逐日增加一天,第二日就变成“2010061312”,也就是这两句里的字符要改

'open d:\grib\wrf\2010061312\d02\cwrf_d03_2010061312_0000.ctl'
'd:\grib\wrf\grads2ascii mag(gr2stn(u10,121,27.01),gr2stn(v10,121,27.01)) d:\grib\wrf\station2010061312.txt'

问题看起来很简单,现在就求问下,在grads语句里,是否有直接修改的办法,或者是用批处理来修改,但批处理修改有一个问题,这里面的set t 1 72 已经固定下来,如果要批量,不知道要如何改写?
想请教熟悉grads语句的大神们!

密码修改失败请联系微信:mofangbao
发表于 2014-1-9 08:40:06 | 显示全部楼层
本帖最后由 鲸鱼便子 于 2014-1-9 08:50 编辑

可以参考一下grads 手册哈用%修改ctl
QQ截图20140109083531.png
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

0
早起挑战累计收入
发表于 2014-1-9 09:53:09 | 显示全部楼层
批量描述到一个ctl  论坛搜一下
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-1-9 19:14:57 | 显示全部楼层
本帖最后由 红河岸 于 2014-1-9 21:07 编辑

呃,但是文件夹的名字和文件命名都要跟着改,这个可以一起实现么?您的意思应该是用通配符修改ctl的命名吧?

批量改ctl好像只是cwrf_d03_2010061312_0000.ctl可以随之改变。
还有个问题,我算出插值的值,里面已经是'set t 1 72' ,如果批量写ctl的话,这里面t要如何设置?

@kongfeng0824 版主不知道能否解答呢?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-1-9 19:45:29 | 显示全部楼层
mofangbao 发表于 2014-1-9 09:53
批量描述到一个ctl  论坛搜一下

写批量ctl会存在一个问题,我的这个gs,算出3天插值的数值,里面已经是'set t 1 72' ,如果批量写ctl的话,这里面t要如何设置?

密码修改失败请联系微信:mofangbao
发表于 2014-1-9 20:20:42 | 显示全部楼层
你的时间部分估计是变化的,需要用通配符
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-1-9 20:41:02 | 显示全部楼层
本帖最后由 红河岸 于 2014-1-9 20:58 编辑
kongfeng0824 发表于 2014-1-9 20:20
你的时间部分估计是变化的,需要用通配符

那么set t 1 72这块要怎么改?
你说时间变量字符串的控制,是否可以仿造你那个批量出图帖子里的脚本,将2010061312这段模仿你的aaa=year%0%month%0%day%0%hour,然后进行循环处理?
密码修改失败请联系微信:mofangbao
发表于 2014-1-9 21:32:21 | 显示全部楼层
红河岸 发表于 2014-1-9 20:41
那么set t 1 72这块要怎么改?
你说时间变量字符串的控制,是否可以仿造你那个批量出图帖子里的脚本,将 ...

是的。如果你的数据是批量的,就这么修改。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-1-23 22:53:57 | 显示全部楼层
本帖最后由 红河岸 于 2014-1-23 22:58 编辑
kongfeng0824 发表于 2014-1-9 21:32
是的。如果你的数据是批量的,就这么修改。

不知版主是否还在,急切盼望得到解答!

我用你的那个批量的方法仿写了一个文件,但出现了问题,因为我算的数据都是冬半年,即都是10月份到次年3月份的数据,为2011年10月-2012年3月,2012年10月-2013年3月,我先把我写的gs给出,

先解释一下

1、这里hour都是12,所以固定取12。

2、因为我做的是三天数据的插值,所以set t 1 72 在这里是固定的,没法拿到任何地方去改,这个是与版主之前有所不同的地方。
3、grads2ascii是插值用法,导出是插值数据txt,这里随时间变化的,一是cwrf_d03_'%aaa%12'_0000.ctl 这里的,起始数据为cwrf_d03_2011100112_0000.ctl,生成数据为station2011100112.txt和dire2011100112.txt,而“2011100112”这部分就是逐日增加,如“2011100212”“2011100312”等等,需要变化的就是这个量。

这里会出现几个问题:

1、day这里,如果小于10的,很奇怪一律只输出一位数,也就是2011100112会变成201110112。
2、我也不知道程序结果调用哪一天的数据,反正算出来的每一个文件,都是一样的数据,摊手。

我看了半天也看不出啥毛病,恳请版主赐教!

'reinit'

'set gxout fwrite'

year=2011

#设定开始的年

month=1

day=1

while(year<2014)

while(month<13)

while(day<32)

if(month<10)

    if(day<10)

*******设定输出的字符,输出的格式是4位年+2位月+2位日*******
*******日小于10,在前面加0,保证日是2位************

    aaa=year%0%month%0%day

*******月小于10,在前面加0,保证月是2位************

    else

    aaa=year%0%month%day

    endif

else

aaa=year%month%day

endif

'open P:\2\cwrf_d03_'%aaa%12'_0000.ctl'

'set x 1'

'set y 1'

*'set lon 112 128'

*'set lat 17 30'

'set z 1'

'set t 1 72'

#now interp the grid data to station data and export

#浮标#

'P:\2\wrf\grads2ascii mag(gr2stn(u10,120.38,26.94),gr2stn(v10,120.38,26.94)) P:\2\wrf\703520\station'%aaa%12'.txt'

'define pi=3.14159'

'P:\2\wrf\grads2ascii atan2(gr2stn(u10,120.38,26.94),gr2stn(v10,120.38,26.94))*180/3.14159+180 P:\2\wrf\703520\dire'%aaa%12'.txt'

day=day+1

endwhile

day=1

month=month+1

endwhile

month=1

year=year+1

endwhile
;




密码修改失败请联系微信:mofangbao
发表于 2014-1-24 00:17:15 | 显示全部楼层
红河岸 发表于 2014-1-23 22:53
不知版主是否还在,急切盼望得到解答!

我用你的那个批量的方法仿写了一个文件,但出现了问题,因为我 ...

1.你的ctl文件是如何写的?
2.循环写的没有错
3.能输出,就是时间不对是吗?如果是应该是时间通配符没用对
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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