爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 11435|回复: 15

[脚本编辑] 求多年夏季区域平均的侯降水数据

[复制链接]

新浪微博达人勋

发表于 2020-4-8 20:44:41 | 显示全部楼层 |阅读模式

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

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

x
资料是1979年-2019年每年日降水资料(nc文件),需要提取青藏高原每年夏季90天的侯平均降水(18侯),一共738侯。然后再进行区域平均。图已经出来,但是感觉图不对,不知道问题出在哪里,哪位大神帮忙找出问题所在?
提取41年的夏季90天(18侯)的数据,生成dat文件:
'reinit'
'set fwrite E:\biyelunwenziliao\gs\pecip1979_2019.dat'
'set gxout fwrite'
year=1979
while(year<=2019)
'sdfopen E:\biyelunwenziliao\rizongliang\precip.'year'.nc'
'set lat 25 40'
'set lon 74 104'
'set z 1'
tt=152
while(tt<=241)
'set t 'tt''
'define pre=ave(precip,t=152,t=156)'
'd pre'
tt=tt+5
endwhile
'close 1'
year=year+1
endwhile
'disable fwrite'
;
有dat文件出来,我编写了ctl:
dset E:\biyelunwenziliao\gs\pecip1979_2019.dat
title CPC GLOBAL PRCP V1.0
undef -9.96921e+36
options yrev
xdef 61 linear 74.25 0.5
ydef 31 linear 24.75 0.5
zdef 1 linear 0 1
tdef 738 linear 00Z01JUN0001 1440mn
vars 1
pre=>pre  0  t,y,x  Daily total of precipitation
endvars
利用这个ctl画出青藏高原东部(我自己的研究区域)区域平均的图,我写的gs:
'reinit'
'open E:\biyelunwenziliao\gs\1979_2019dat.ctl'
'set grads off'
'set lon 74'
'set lat 25'
'set t 1 738'
'set z 1'
'set parea 1.0 10.5 0.8 7.75'
'set gxout line'
'set ccolor 8'
'set cmark 3'
'define p= tloop(aave(pre,lon=99,lon=103,lat=28,lat=35))'
'd p'
出来的图是738侯的图,可是看图很多数据都是接近0左右,考虑到是夏季,候平均以后的数据在区域平均,降水量不应该这样小,我就单独利用相同的方法处理某一年的数据画图,果然同样的年份,出来的图不一样,我现在不知道问题出在哪里。拜托各位了。

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

新浪微博达人勋

发表于 2020-4-8 23:08:36 | 显示全部楼层
tt=152
while(tt<=241)
'set t 'tt''
'define pre=ave(precip,t=152,t=156)'
'd pre'
tt=tt+5
这个是计算候平均?你自己思考一下这个循环是怎么起作用的······
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-8 23:23:25 | 显示全部楼层

这个循环错了吗?可是90天候平均循环出来刚好有18侯,侯的数量是对的。这个要循环应该怎么做才对,麻烦大神帮帮忙
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-9 09:45:57 | 显示全部楼层

大神,这样循环可以吗?
tt=152
while(tt<=241)
'define pre=ave(precip,t='tt',t='tt+4')'
'd pre'
tt=tt+5
endwhile
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-9 12:31:41 | 显示全部楼层
tdef 738 linear 00Z01JUN0001 1440mn
楼主,你这个时间增量是多久
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-9 13:09:50 | 显示全部楼层
onenuister 发表于 2020-4-9 12:31
tdef 738 linear 00Z01JUN0001 1440mn
楼主,你这个时间增量是多久

这个时间增量我写的是1天,之前也写过5天的,出来的图的数值是一样的,只是时间坐标不一样,这个有影响吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-9 22:13:11 | 显示全部楼层

大神,我把夏季内的侯循环改了,但是年循环出来的图和单独处理某一年出来的图不一样,只有第一年的数据是一样的,其他年份不一样,您可以帮我看看年循环有没有问题吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-9 22:20:07 | 显示全部楼层
软壳 发表于 2020-4-9 09:45
大神,这样循环可以吗?
tt=152
while(tt

这个看着还差不多,你自己带进去想一想,5天加权平均为一候, tt=152计算的是152-156的平均,下一次循环tt=157,计算的是157-161的平均,以此类推,应该就是对的
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-4-9 22:30:32 | 显示全部楼层
软壳 发表于 2020-4-9 22:13
大神,我把夏季内的侯循环改了,但是年循环出来的图和单独处理某一年出来的图不一样,只有第一年的数据是 ...

'set t 'tt''
这句为啥要去掉?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-4-9 22:35:37 | 显示全部楼层
river 发表于 2020-4-9 22:30
'set t 'tt''
这句为啥要去掉?


'reinit'
'set fwrite E:\biyelunwenziliao\gs\pecip1979_2019.dat'
'set gxout fwrite'
year=1979
while(year<=2019)
'sdfopen E:\biyelunwenziliao\rizongliang\precip.'year'.nc'
'set lat 25 40'
'set lon 74 104'
'set z 1'
tt=152
while(tt<=241)
'set t 'tt''
'define pre=ave(precip,t='tt',t='tt+4')'
'd pre'
tt=tt+5
endwhile
year=year+1
endwhile
'close 1'
'disable fwrite'
;
这样吗
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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