爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8168|回复: 17

[分享资料] 如何画温度距平剖面图??

[复制链接]

新浪微博达人勋

发表于 2012-10-16 13:43:04 | 显示全部楼层 |阅读模式

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

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

x
想画一定区域内(如经度10度内,纬度10度内)温度距平纬向剖面图:
'reinit'
'sdfopen c:\pcgrads\air.2011-1.nc'
'set lat 30'
'set lon 119 129'
'set lev 1000 100'
'set t 872'
'd air-aave(air,lon=119,lon=129,lat=24,lat=34)'

这样为何显示不了啊??
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-16 15:57:36 | 显示全部楼层
aave代表求面积平均,你这里的距平是指对平均面积的距平?如果用'd air-ave(air,lat=24,lat=34)',可以出图,不知道是不是你要的。
运行你的命令'd air-aave(air,lon=119,lon=129,lat=24,lat=34)',软件提示说此时的t和z应该是固定的。

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

新浪微博达人勋

发表于 2012-10-16 16:43:39 | 显示全部楼层
本帖最后由 river 于 2017-12-17 08:59 编辑

应该是你的gs有一些问题,运行你的gs会提示error from aave , Z T or E can't vary。意思是说错误来自aave,Z T 或者E不能变化。改一下就行了
'reinit'
'sdfopen  c:\pcgrads\air.2011-1.nc'
'set t 872'
'define ave=aave(air,lon=119,lon=129,lat=24,lat=34)'
'set lon 119 129'
'set lat 30'
'set lev 1000 100'
'set zlog on'
*上面那句一定要加上,因为1000到100高度之间距离不相等的*
'd air-ave'
;
这样就可以出图了。还有就是qiezi提到的也是需要考虑的,你是要哪种平均得搞清楚。
air.gif
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-30 07:58:53 | 显示全部楼层
多谢楼主分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-14 22:18:11 | 显示全部楼层
river 发表于 2012-10-16 16:43
应该是你的gs有一些问题,运行你的gs会提示error from aave , Z T or E can't vary。意思是说错误来自aave ...

请问这个平均是逐层的平均,还是整体的平均?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-17 09:02:25 | 显示全部楼层
爱喝柠檬汁 发表于 2017-12-14 22:18
请问这个平均是逐层的平均,还是整体的平均?

怎么说呢,单就那个函数看,aave求的是区域平均。你把它放在grads里面如果设置了层次那就是那一层的那个范围里的区域平均。如果不固定层次,grads会默认把每一层的那个区域的平均都算出来存在内存中
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-17 16:48:08 | 显示全部楼层
是这样的,我想画这种温度、高度距平的垂直剖面,下面的是文献上的图和方法,
123.png
456.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-17 16:53:55 | 显示全部楼层
本帖最后由 爱喝柠檬汁 于 2017-12-17 17:09 编辑

我用楼上的方法画出来的效果如图,我觉得似乎不是我想要的文献中的效果,gs如下:

'reinit'
'sdfopen E:/aaa.nc'
'set grads off'
'set mpdset hires'
'set map 15 1 1'
'set lon 110 130'
'set lat 45 60'

'set t 100'
'define avez=aave(z,lon=110,lon=130,lat=45,lat=60)'
'define avet=aave(t,lon=110,lon=130,lat=45,lat=60)'
'set lon 123'
'set lat 45 60'
'set lev 1000 100'
'set zlog on'
'set gxout shaded'
'd z/9.8-avez/9.8'
'run cbarn.gs'

'set gxout contour'
'set ccolor 15'
'set cstyle 1'
'set cthick 2'
'd t-avet'

'printim E:/tzjuping.png white'
;

我不知道这个gs是不是每一层都算出一个平均值,然后再把每一层的所有值减去这层对应的平均值之后的距平值画图,
我觉得好像不是,所以我又写了另一个gs,在楼下
tzjuping.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-17 17:22:05 | 显示全部楼层
本帖最后由 爱喝柠檬汁 于 2017-12-17 17:56 编辑

'reinit'
'sdfopen e:\aaa.nc'
'set gxout fwrite'
'set fwrite e:\tzjuping.dat'
'set lon 110 130'
'set lat 45 60'
'set t 100'

i=1
while(i<=37)
'set z 'i

'define avez=aave(z,lon=110,lon=130,lat=45,lat=60)'
'define avet=aave(t,lon=110,lon=130,lat=45,lat=60)'
'd z/9.8-avez/9.8'
'd t-avet'

i=i+1
endwhile

'disable fwrite'
'set gxout contour'

用这个gs输出一个dat文件,里面的值就是距平值
下面是对应的ctl
dset e:\tzjuping.dat
undef -9.99E+33
title juping
xdef  41 linear  110 0.5
ydef  31 linear  45 0.5
zdef  37 linear  1 1
tdef   1 linear 00z25jan2010 6hr
vars  2
z     37  99 ** <z>     hpa
t     37  99 ** <t>     k
endvars

然后是画图的gs
'reinit'
'open E:/tzjuping.ctl'
'set grads off'
'set mpdset hires'
'set map 15 1 1'

'set t 1'
'set lon 123'
'set lat 45 60'
'set lev 1000 100'
'set zlog on'
'set gxout shaded'
'd z'
'run cbarn.gs'

'set gxout contour'
'set ccolor 15'
'set cstyle 1'
'set cthick 2'
'd t'

'printim E:/tzjuping.png white'
;

然后grads提示错误,如下图
111.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-17 18:05:27 | 显示全部楼层
不知道纵坐标哪里写错了,还有表达式哪里错误?
我的nc数据的ctl是这样的
222.JPG
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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