爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9777|回复: 10

MeteoInfoLab示例:三维等值线填色切片

[复制链接]

新浪微博达人勋

发表于 2021-8-21 15:34:04 | 显示全部楼层 |阅读模式

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

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

x
contourfslice 函数可以绘制三维数组在 x, y, z 方向的多个等值线填色切片。

  1. fn = os.path.join(migl.get_sample_folder(), 'GrADS', 'model.ctl')
  2. f = addfile(fn)
  3. data = f['U'][0,:,:,'0:180']
  4. pres = data.dimvalue(0)
  5. z = meteolib.pressure_to_height_std(pres)
  6. y = data.dimvalue(1)
  7. x = data.dimvalue(2)

  8. #Plot
  9. ax = axes3d()
  10. geoshow('continent', facecolor=[255,231,177], edgecolor='b')
  11. levs = arange(-16, 57, 8)
  12. contourfslice(x, y, z, data, levs, edgecolor='lightgray', alpha=0.8,
  13.     xslice=[120], yslice=[40], zslice=[z[3]])
  14. colorbar()
  15. xlim(0, 180)
  16. title('contourfslice example')


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

新浪微博达人勋

发表于 2021-8-21 15:56:32 | 显示全部楼层
{:eb502:}
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2021-8-21 16:52:15 | 显示全部楼层
最近在学习剖切  真不错~~感谢分享
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-8-21 21:31:21 | 显示全部楼层
感谢楼主,怎么运行提示NameError: name 'contourfslice' is not defined。如何解决,谢谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-8-22 10:58:32 | 显示全部楼层
dlxieyr 发表于 2021-8-21 21:31
感谢楼主,怎么运行提示NameError: name 'contourfslice' is not defined。如何解决,谢谢!

使用MeteoInfo最新版本
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-8-24 08:40:43 | 显示全部楼层
求助各位大神提供MeteoInfo调用MICAPS数据的具体实例PPT更好,若提供本人将不胜感激。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-9-3 15:10:13 | 显示全部楼层
王老师好!可以斜剖面吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-9-3 16:57:34 | 显示全部楼层
freekiller 发表于 2021-9-3 15:10
王老师好!可以斜剖面吗?

可以,比较麻烦一些,有空了可以考虑做些简化。
  1. fn = os.path.join(migl.get_sample_folder(), 'GrADS', 'model.ctl')
  2. f = addfile(fn)
  3. u = f['U'][0,:,'20','0']
  4. lev1 = meteo.pressure_to_height_std(u.dimvalue(0)) / 1000

  5. lon1 = 0.
  6. lon2 = 180.
  7. lat1 = -50.
  8. lat2 = 50.
  9. lon = lon1
  10. lat_c = []
  11. tdata = []
  12. #tdata_terrain = []
  13. while lon <= lon2:
  14.     lat = lat1 + (lat2 - lat1) * (lon - lon1) / (lon2 - lon1)
  15.     lat_c.append(lat)
  16.     print lon
  17.     tdata.append(f['U'][0,:,'%f'%lat,'%f'%lon])
  18.     lon = lon + 2.5
  19.    
  20. alldata = concatenate(tdata, axis=0)
  21. alldata = reshape(alldata, (len(tdata), len(lev1)))   
  22. alldata = alldata.T
  23. x = arange(lon1, lon2 + 1, 2.5)

  24. #Plot
  25. ax = axes3d(tickfontsize=14)
  26. geoshow('continent', color='c', edgecolor='b')
  27. ls = ax.contourf(x, lev1, alldata, 10, edgecolor='k', zdir='xy', alpha=0.8, \
  28.     sepoint=[lon1,lat1,lon2,lat2])
  29. colorbar(ls)
  30. xlabel('Longitude (degrees)', fontsize=16)
  31. ylabel('Latitude (degrees)', fontsize=16)
  32. zlabel('Altitude (km)', fontsize=16)
  33. xlim(0, 180)
  34. title('vertical slice plot example')


contourf_3d_vertical_1.png

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

使用道具 举报

新浪微博达人勋

发表于 2021-9-3 21:29:10 | 显示全部楼层
MeteoInfo 发表于 2021-9-3 16:57
可以,比较麻烦一些,有空了可以考虑做些简化。

谢谢王老师!这下就灵活多了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-9-7 12:18:12 | 显示全部楼层
请问下王老师这个三维剖面可以叠加地形数据吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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