爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: river

[图形美化] 任意两点间斜剖面做法总结【利用GRADS自带函数】

  [复制链接]

新浪微博达人勋

发表于 2017-9-8 21:58:20 | 显示全部楼层
river 发表于 2017-9-8 19:09
是不是你路径没修改?我看你脚本里地形数据用的还是1X1的,'open E:\gs\dixing\1X1\orog1.ctl'。你自己看 ...

我是用1*1的地形数据插值得到0.25*0.25的地形数据的,所以先打开1*1的地形数据,插值,然后在写入到0.25*0.25地形文件中
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-8 22:14:25 | 显示全部楼层
本帖最后由 小其其格 于 2017-9-8 22:15 编辑

照着绘制流场图,最后用'd coll2gr(1);coll2gr(2)'绘制图形,显示错误ERROR from COLL2GR,invalid dimension environment。gs文件如下:

**************************************************************************************
*
*本脚本用于绘制任意两点的垂直剖面流场图
*详细见http://bbs.06climate.com/forum.p ... 10966&extra=&page=1
*
***************************************************************************************


'reinit'
'open F:\fnl\GFS\2017\0712\VerticalProfile\gfsanl_4_20170712_0600_000.ctl'
'open F:\fnl\GFS\2017\0712\VerticalProfile\NCEP_org_0.5x0.5\orog0.5x0.5.ctl'
'set mpdset cnworld'
'set grads off'
'set grid off'

*'set parea 1 10.2 0.8 7.8'

'set cthick 1'


**U,V单位是0.1m/s
'define u=UGRDprs.1'
'define v=VGRDprs.1'
*垂直速度pa/s转化为0.1m/s,omega的单位是0.001Pa/s
'define w=VVELprs.1*(-100)'
'define t=TMPprs.1-273.15'


'set zlog on'
'set csmooth on'
'set clab off'

lon1=120
lon2=123
lat1=29.8
lat2=29.8
'define alfa=atan2('lat2-lat1','lon2-lon1')'

'set x 1'
'set y 1'
'set t 1'
'set lev 1000 200'

lon=lon1
lat=lat1

'collect 1 free'
'collect 2 free'
'collect 3 free'

while(lon<=lon2)
lat=lat1+(lat2-lat1)*(lon-lon1)/(lon2-lon1)
'collect 1 gr2stn(w*20,'lon','lat')'
'collect 2 gr2stn(u*cos(alfa)+v*sin(alfa),'lon','lat')'
'collect 3 gr2stn(orog.2(t=1),'lon','lat')'
say lon
say lat
lon=lon+0.1
endwhile


'set lon 120 123'
'set lev 1000 200'
'set ylevs 1000 925 850 700 600 500 400 300 200'

'set xlabs 29.8N,120.0E|29.8N,120.5E|29.8N,121.0E|29.8N,121.5E|29.8N,122.0E|29.8N,122.5E|29.8N,123.0E'

*'set xlabs 25N,121.5E|28N,121.5E|31N,121.5E|34N,121.5E|37N,121.5E|40N,121.5E'


**绘制地形数据
'set gxout shaded'
'set csmooth on'
'set clab off'
'set clevs 0'
'set ccols 0 5 0'
'd coll2gr(3,-u)'

*strmden后面的第三个数值是箭头大小,第四个是线类型***
'set gxout stream'
'set strmden 5.0 0.6 0.08 1'
'set ccolor 1'
'set cthick 8'
'set cstyle 1'
'set csmooth on'
'd coll2gr(1);coll2gr(2)'
*'d maskout(coll2gr(2,-u),-coll2gr(3,-u));maskout(coll2gr(1,-u),-coll2gr(3,-u));mag(coll2gr(2,-u),coll2gr(1,-u))'


'run cbarn 1 0'

**设置字体大小,类型(roman font),颜色
'set font 1'
'set strsiz 0.3 0.3'
'set string 1'
**添加上标
*'draw string 1.8 7.8 (b)'

**坐标标注要在变量输出之后
*'draw xlab lon/lat'
'draw ylab height/hPa'


'printim F:\fnl\GFS\2017\0712\VerticalProfile\UW_LonLat\UW.png white'
'enable print F:\fnl\GFS\2017\0712\VerticalProfile\UW_LonLat/UW.gmf white'

say 'ok'

'print'
'c'
'disable print'
;

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

新浪微博达人勋

 楼主| 发表于 2017-9-8 23:36:44 | 显示全部楼层
小其其格 发表于 2017-9-8 22:14
照着绘制流场图,最后用'd coll2gr(1);coll2gr(2)'绘制图形,显示错误ERROR from COLL2GR,invalid dimensi ...

你不去看coll2gr的用法,我帮不了你
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-9-8 23:40:15 | 显示全部楼层
liuyw 发表于 2017-9-8 21:58
我是用1*1的地形数据插值得到0.25*0.25的地形数据的,所以先打开1*1的地形数据,插值,然后在写入到0.25* ...

你自己看,这是你自己贴上来的
大神,我使用的是0.25*0.25的资料,然后根据楼主给的脚本得出0.25*0.25的地形资料,套用脚本运行,结果只有地形图像,没有流线图像。请教大神指导!
'reinit'
'open D:\data\20170707.ctl'
'open E:\gs\dixing\1X1\orog1.ctl'
'set grads off'
'set grid off'
'set zlog on'
lon1=70.0
lon2=130.0
lat1=35.0
lat2=45.0
'define alfa=atan2('lat2-lat1','lon2-lon1')'
·······
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-9 06:44:16 | 显示全部楼层
'd coll2gr(1,-u);coll2gr(2,-u)'
这样设置也出现一样的错误
我的资料是gfs0.5x0.5的,高度层是等压面的,这里用-u应该没错呀
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-9 09:05:26 | 显示全部楼层
river 发表于 2017-9-8 23:40
你自己看,这是你自己贴上来的
大神,我使用的是0.25*0.25的资料,然后根据楼主给的脚本得出0.25*0.25的 ...

对对,这个是有问题的,改过来之后,还是出现同样的问题。
我觉得是不是高度层不同:
地形数据:zdef 17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
FNL资料:zdef 31 levels 100000 97500 95000 92500 90000 85000 80000 75000 70000 65000 60000 55000 50000 45000 40000 35000 30000 25000 20000 15000 10000 7000 5000 3000 2000 1000 700 500 300 200 100
两个数据的层数不同。
这个能把地形数据插值到FNL资料的高度层?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-9-9 11:31:31 | 显示全部楼层
liuyw 发表于 2017-9-9 09:05
对对,这个是有问题的,改过来之后,还是出现同样的问题。
我觉得是不是高度层不同:
地形数据:zdef 1 ...

我觉得不是这个问题,虽然层次上有多有少,但是只要分辨率相同,垂直方向上坐标轴也是相同的,只是在某一些层次上的数据是没有的,这个不影响。你比如你随便画那个地形资料的剖面图,设置高度为1000到1,它只是到一定高度以后没有了资料而已。但是垂直方向坐标轴和fnl资料是一致的。而且我觉得你要研究什么需要那么高的资料?很高的那些层次的资料在一般的研究中应该没有什么意义吧,最重要的是垂直速度根本就没有100hPa以上的资料啊

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

新浪微博达人勋

 楼主| 发表于 2017-9-9 11:36:25 | 显示全部楼层
小其其格 发表于 2017-9-8 22:14
照着绘制流场图,最后用'd coll2gr(1);coll2gr(2)'绘制图形,显示错误ERROR from COLL2GR,invalid dimensi ...

你这个
lat1=29.8
lat2=29.8
是啥意思,纬度根本没变化啊?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-9 14:15:40 | 显示全部楼层
river 发表于 2017-9-9 11:31
我觉得不是这个问题,虽然层次上有多有少,但是只要分辨率相同,垂直方向上坐标轴也是相同的,只是在某一 ...

这个FNL资料下载下来的资料就这样,我实际使用的时候用不了那么高。现在就是地形和画的图叠加不到一块去,不能同时显示。既然地形资料和FNL资料都一样,怎么还是有问题呢,找不到问题的原因所在
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-9 19:06:03 | 显示全部楼层
river 发表于 2017-9-9 11:36
你这个
lat1=29.8
lat2=29.8

这是沿着29.8N作的垂直剖面,其实相当于沿着任意两点间斜线的特例。我找到问题原因了,在设置u,v之前要先设定好lev层的范围,不然coll2gr函数老是提示维数出错
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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