爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9517|回复: 11

想问一下王老师,wrfout数据里的500hpa风场要怎么画

[复制链接]

新浪微博达人勋

发表于 2021-6-19 23:50:25 | 显示全部楼层 |阅读模式

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

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

x
之前用python画wrfout,有个wrf-python库可以给u,v插值到500hpa,现在想用meteoinfo画画wrfout图,但是不知道怎么插值画500hpa的风场,有人画过可以教教我吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2021-6-21 00:08:34 | 显示全部楼层
MeteoInfo 发表于 2021-6-20 23:56
wrfout里有些变量输出在交错格点上(stag),为了计算中保持变量维一致,需要去stag。destagger函数第二 ...

王老师您好,我最近使用WRF时也刚好遇到这种问题,如果要绘制标量,例如湿度、位势高度该怎么修改呢
密码修改失败请联系微信:mofangbao
回复 支持 0 反对 1

使用道具 举报

新浪微博达人勋

发表于 2021-6-20 21:49:02 | 显示全部楼层
参考下面的代码:

  1. fn = 'D:/Temp/nc/wrfout_d01_2005-08-28_00-00-00'
  2. f = addfile(fn)

  3. #Calculate pressure array
  4. pp = f['P'][:]
  5. psb = f['PB'][:]
  6. ptop = f['P_TOP'][0]
  7. eta = f['ZNU'][0]
  8. nt,nz,ny,nx = pp.shape
  9. eta = eta.reshape(1,nz,1,1)
  10. pres = (psb * eta + ptop + pp) * 0.01

  11. #Read and de-stagger u and v
  12. u = f['U'][:]
  13. v = f['V'][:]
  14. destag_u = meteo.wrf.destagger(u, -1)
  15. destag_v = meteo.wrf.destagger(v, -2)
  16. y = destag_u.dimvalue(-2)
  17. x = destag_u.dimvalue(-1)

  18. #Interpolate u and v to pressure level
  19. levels = [700, 500]
  20. u1 = meteo.log_interpolate_1d(levels, pres, destag_u, axis=1)
  21. v1 = meteo.log_interpolate_1d(levels, pres, destag_v, axis=1)

  22. #Plot
  23. axesm(projinfo=f.proj)
  24. geoshow('country')
  25. quiver(x[::4], y[::4], u1[0,1,::4,::4], v1[0,1,::4,::4], color='b', proj=f.proj)
  26. title('Pressure 500 hPa')


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-6-20 22:14:11 | 显示全部楼层
MeteoInfo 发表于 2021-6-20 21:49
参考下面的代码:

王老师您好好,我这里还有些问题不懂,我参考了你的代码,uv那个插值完后,quiver绘制流场图那里u1[0,1,::4,::4],v1[0,1,::4,::4],里面的1是什么意思,1是指500hpa吗,uv插值完后还有0这层代表什么


密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-6-20 22:27:07 | 显示全部楼层
James_z 发表于 2021-6-20 22:14
王老师您好好,我这里还有些问题不懂,我参考了你的代码,uv那个插值完后,quiver绘制流场图那里u1[0,1,: ...

levels = [700, 500]
这个脚本插值到了两个等压面。0和1分布是700和500
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-6-20 22:49:11 | 显示全部楼层
MeteoInfo 发表于 2021-6-20 22:27
levels = [700, 500]
这个脚本插值到了两个等压面。0和1分布是700和500

好的弄懂了!谢谢王老师
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-6-20 23:34:43 | 显示全部楼层
James_z 发表于 2021-6-20 22:49
好的弄懂了!谢谢王老师

destag_u = meteo.wrf.destagger(u, -1)
destag_v = meteo.wrf.destagger(v, -2)
老师我还有一点点问题,我在你那本书上找不到关于destagger的说明,那个(u, -1)和(v, -2)后面的-1和-2是啥意思,是跟矢量有关吗,如果我想绘制500hpa温度这种标量变量该怎么用这个函数
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-6-20 23:56:25 | 显示全部楼层
James_z 发表于 2021-6-20 23:34
destag_u = meteo.wrf.destagger(u, -1)
destag_v = meteo.wrf.destagger(v, -2)
老师我还有一点点问题 ...

wrfout里有些变量输出在交错格点上(stag),为了计算中保持变量维一致,需要去stag。destagger函数第二个参数是stag所在的维,-1是倒数第一个维(也就是最后一个维)。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-1-26 11:21:26 | 显示全部楼层
本帖最后由 哈库拉玛塔塔000 于 2022-1-26 11:57 编辑
MeteoInfo 发表于 2021-6-20 21:49
参考下面的代码:

老师,我使用了这个代码,但是得出的风场维度不对

微信图片_20220126115717.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-1-26 11:52:46 | 显示全部楼层
哈库拉玛塔塔000 发表于 2022-1-26 11:21
老师,我使用了这个代码,但是报了这样的错误。

示例程序里 destag_u 变量是4维(time, level, y, x),log_interpolate_1d 函数中 axis=1 就制定了要对 level 维插值。如果你的 destag_u 变量是3维(没有时间维),那么 axis=0 。原则是 axis 参数要指定高度维的序号。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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