爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: river

[脚本编辑] 【完美】解决FNL资料任意两点间斜剖面叠加地形的问题

  [复制链接]

新浪微博达人勋

发表于 2020-6-25 15:30:21 | 显示全部楼层
VVELprs的单位是Pa/s,按照-VVELprs*100/(1.29*9.8)处理了,图中间平滑了一些,但左右两边的流场还是直上直下的。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-8-3 22:50:30 | 显示全部楼层
完美
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2020-8-10 16:39:57 | 显示全部楼层
太牛了,就是不知道哪里有问题,地形出来了,但是等值线不对
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-17 17:02:49 | 显示全部楼层
嘴角上扬 发表于 2020-6-25 14:55
楼主,我用的0.25的fnl资料,照你的方法做的,出来的图是这样的,可能是什么原因呢?检查数据没有问题,每 ...

这么神的问题我也没碰到过,你上脚本啥的看看。有没有可能是经纬度增量的问题,你的资料分辨率挺高,我怀疑经纬度增量是不是应该写0.25呢
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-8-27 16:58:26 | 显示全部楼层
我的程序中coll2gr总是出问题
'reinit'
'open L:/2014datafiles/fnl_2014.ctl'

'set t 1'
'set lon 90 130'
'set lat 20 45'
'set z 1 21'

'define tmpz=TMPprs'
'define rhz=RHprs'
'define prsz=lev'
'define esz=(6.112*exp(17.67*(tmpz-273.15)/(tmpz-29.65)))'
'define qz=rhz*(0.62197*esz/(prsz-esz))/100.'
'define ez=prsz*qz/(0.62197+qz)+1e-10'
'define tlclz=55.0+2840.0/(3.5*log(tmpz)-log(ez)-4.805)'
'define thetaz=tmpz*pow((1000/prsz),(0.2854*(1.0-0.28*qz)))'
'define eqtz=thetaz*exp(((3376./tlclz)-2.54)*qz*(1.0+0.81*qz))'
'define dtx=cdiff(eqtz,x)'
'define dty=cdiff(eqtz,y)'
'define dx=cdiff(lon,x)*3.1416/180*cos(lat*3.1416/180)*6.371e6'
'define dy=cdiff(lat,y)*3.1416/180*6.371e6'
'define vy=VGRDprs'
'define uy=UGRDprs'

'define eqtxy=eqtz(z-1)-eqtz(z+1)'
'define vxy=vy(z-1)-vy(z+1)'
'define uxy=uy(z-1)-uy(z+1)'

'define dp=10000'
'define mp1=-9.8*absvprs*eqtxy/dp'
'define mp2=9.8*((vxy/dp)*(dtx/dx)-(uxy/dp)*(dty/dy))'
'define mp=mp1+mp2'
'define mpv=mp*1E6'
'define mpv1=mp1*1E6'
'define mpv2=mp2*1E6'

'set mpdset cnworld cnriver'
'set grads off'
'set csmooth on'
'set x 1'
'set y 1'
'set lev 850 200'
lon1 = 90.0
lon2 = 130.0
lat1 = 20.0
lat2 = 45.0
lon = lon1
'collect 1 free'
while (lon <= lon2)
  lat = lat1 + (lat2-lat1)*(lon-lon1) / (lon2-lon1)
  'collect 1 gr2stn(mpv1,'lon','lat')'
  lon = lon + 1
endwhile

'set grads off'
'set zlog on'
'set grid off'
'set lon 90 130'
'set z 1 21'
'set ylab off'
'set xlab off'
'set csmooth on'
*画变量
'set ylab on'
'set xlab on'
'set csmooth on'
*'set ylevs 1000 925 850 700 600 500 400 300 200 100'
'set xaxis 'lon1' 'lon2''
'set gxout stream'
'set clab on'
'd coll2gr(1,-u)'
'printim L:/2014datafiles/mpv1_xpou/fnl_mpv1_xpou'.png white'
'disable gxprint'
*

搜狗截图20200827165651.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-8-28 21:44:41 | 显示全部楼层
瑾珂 发表于 2020-8-27 16:58
我的程序中coll2gr总是出问题
'reinit'
'open L:/2014datafiles/fnl_2014.ctl'

我只能说你这问题很神奇!你的脚本里有用到 orog1 这个鬼变量吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-8-31 11:27:30 | 显示全部楼层
river 发表于 2020-8-28 21:44
我只能说你这问题很神奇!你的脚本里有用到 orog1 这个鬼变量吗?

后面能出图了,就是只有第一幅图是按照我想要的样子出图,后面的全变成填色图,好神奇。
'reinit'
'open L:/2014datafiles/fnl_2014.ctl'
'open L:/2014datafiles/orog1.ctl'



i=1
while (i<=31)

'set dfile 1'
'set t 'i''
'set lon 96 107'
'set lat 20 30'
'set z 1 21'
'define w=VVELprs'
'define v=VGRDprs'
'define u=UGRDprs'
'define q=SPFH2m'
'define Uq=u*q'
'define Vq=v*q'
'define Uqdx=cdiff(Uq,x)'
'define Vqdy=cdiff(Vq,y)'
'define dx=cdiff(lon,x)*3.1416/180*cos(lat*3.1416/180)*6.371e6'
'define dy=cdiff(lat,y)*3.1416/180*6.371e6'
'define Hm=w/1.29*(Uqdx/dx+Vqdy/dy)'

'set mpdset cnworld cnriver'
'set grads off'
'set csmooth on'
'set zlog on'
'set x 1'
'set y 1'
'set z 1 21'
lon1 = 99.0
lon2 = 105.0
lat1 = 23.0
lat2 = 25.0
lon = lon1
'collect 1 free'
while (lon <= lon2)
  lat = lat1 + (lat2-lat1)*(lon-lon1) / (lon2-lon1)
  'collect 1 gr2stn(Hm,'lon','lat')'
  lon = lon + 1
endwhile




'set grads off'
'set zlog on'
'set grid off'
'set lon 99 105'
'set z 1 21'
'set csmooth on'
'set ylab on'
'set xlab on'
'set csmooth on'
*'set ylevs 1000 925 850 700 600 500 400 300 200 100'
'set xlabs 23N,99E|24N,102E|25N,105E'
'set csmooth on'
'set gxout stream'
'set ccolor 0'
'set clab on'
'd coll2gr(1,-u)'

'set dfile 2'
'set t 1'
'set x 1'
'set y 1'
'set z 1 17'
lon1 = 99.0
lon2 = 105.0
lat1 = 23.0
lat2 = 25.0
lon=lon1
'collect 3 free'
while(lon<=lon2)
lat=lat1+(lat2-lat1)*(lon-lon1)/(lon2-lon1)
'collect 3 gr2stn(orog,'lon','lat')'
lon=lon+1
endwhile
'set lon 99 105'
'set z 1 17'
'set ylab off'
'set xlab off'
'set csmooth on'
'set gxout shade2'
'set clevs 0'
'set ccols -1 1'
'd coll2gr(3,-u)'

'set t 'i''
'q dim'
it=sublin(result,5)
it=subwrd(it,6)

'printim L:/2014datafiles/div_xp/fnl_divergence_xpou_'it'.png white'
'c'
i=i+1
endwhile
'disable gxprint'
*
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-9-17 21:02:19 | 显示全部楼层
请问,当模式转出来的地形高度只有一层时,是不是就不好使用coll2gr函数了,我试了很多遍都不成功
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-17 22:55:31 | 显示全部楼层
瑾珂 发表于 2020-8-31 11:27
后面能出图了,就是只有第一幅图是按照我想要的样子出图,后面的全变成填色图,好神奇。
'reinit'
'ope ...

你在while (i<=31)后面加一句 'reset' 试试
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2020-9-17 22:57:44 | 显示全部楼层
淡定冷静 发表于 2020-9-17 21:02
请问,当模式转出来的地形高度只有一层时,是不是就不好使用coll2gr函数了,我试了很多遍都不成功

对的,只有一层怎么插值?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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