爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 5902|回复: 9

求助:风场流线图

[复制链接]

新浪微博达人勋

发表于 2014-11-24 07:59:47 | 显示全部楼层 |阅读模式

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

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

x
想画一个县域的地面风场月变化图,下载了U/V 风场两个文件:uwnd.mon.ltm.nc
vwnd.mon.ltm.nc

请问Meteoinfo里是否可以实现用这两个文件作流线图,如何做,有没有教程可以参考?

一般风玫瑰图就可以了,做流线变化图主要目的是想做的更直观一些,试了一下,没有成功,所以在坛子里求助,
先谢谢了

11.jpg 11.jpg












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

新浪微博达人勋

发表于 2014-11-24 09:19:35 | 显示全部楼层
可以利用脚本程序来做。
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-11-24
  4. # Purpose: Read U/V data from two files and plot streamline
  5. # Note: Sample
  6. #-----------------------------------------------------

  7. import os
  8. from org.meteoinfo.data.meteodata import MeteoDataInfo, DrawMeteoData
  9. from org.meteoinfo.legend import LegendManage
  10. from org.meteoinfo.shape import ShapeTypes
  11. from java.awt import Color

  12. #---- Set directories
  13. dataDir = 'D:/Temp/nc'

  14. #---- Open data
  15. print 'Open data...'
  16. DataU = MeteoDataInfo()
  17. DataV = MeteoDataInfo()
  18. ufn = os.path.join(dataDir, 'uwnd.sig995.2010.nc')
  19. vfn = os.path.join(dataDir, 'vwnd.sig995.2010.nc')
  20. DataU.openNetCDFData(ufn)
  21. DataV.openNetCDFData(vfn)

  22. #---- Get grid data
  23. print 'Get grid data...'
  24. uwnd = DataU.getGridData('uwnd')
  25. vwnd = DataV.getGridData('vwnd')

  26. #---- Draw streamline
  27. print 'Draw streamline...'
  28. ls = LegendManage.createSingleSymbolLegendScheme(ShapeTypes.Polyline, Color.blue, 1)
  29. aLayer = DrawMeteoData.createStreamlineLayer(uwnd, vwnd, 4, ls, 'Streamline_UV', True)
  30. miapp.getMapDocument().getActiveMapFrame().addLayer(aLayer)

  31. print 'Finished!'


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

新浪微博达人勋

 楼主| 发表于 2014-11-24 11:15:50 | 显示全部楼层
谢谢群主快速回复,34行的参数 4
aLayer = DrawMeteoData.createStreamlineLayer(uwnd, vwnd, 4, ls, 'Streamline_UV', True)

是指4月吗?

不好意思,不是这个专业,全是基础的问题。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 11:32:42 | 显示全部楼层
geoeco 发表于 2014-11-24 11:15
谢谢群主快速回复,34行的参数 4
aLayer = DrawMeteoData.createStreamlineLayer(uwnd, vwnd, 4, ls, 'Str ...

这个是流线密度的参数
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-11-24 11:36:24 | 显示全部楼层
谢谢,正在看教程六。
如何画出不同月的平均流线呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 12:17:41 | 显示全部楼层
geoeco 发表于 2014-11-24 11:36
谢谢,正在看教程六。
如何画出不同月的平均流线呢?

1. 需要下载最新的MeteoInfo Java 1.1.6R2版本(http://www.meteothinker.com/Downloads.aspx

2. 利用下面的脚本计算一月份的平均风场U/V分量,然后绘制流场图,其它月份可以参考自己改改。
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-11-24
  4. # Purpose: Read Monthly averaged U/V data from two files and plot streamline
  5. # Note: Sample
  6. #-----------------------------------------------------

  7. import os
  8. from org.meteoinfo.data import GridData
  9. from org.meteoinfo.data.meteodata import MeteoDataInfo, DrawMeteoData
  10. from org.meteoinfo.legend import LegendManage
  11. from org.meteoinfo.shape import ShapeTypes
  12. from java.awt import Color
  13. from java.util import Calendar

  14. #---- Set directories
  15. dataDir = 'D:/Temp/nc'

  16. #---- Open data
  17. print 'Open data...'
  18. DataU = MeteoDataInfo()
  19. DataV = MeteoDataInfo()
  20. ufn = os.path.join(dataDir, 'uwnd.sig995.2010.nc')
  21. vfn = os.path.join(dataDir, 'vwnd.sig995.2010.nc')
  22. DataU.openNetCDFData(ufn)
  23. DataV.openNetCDFData(vfn)

  24. #---- Get January average U/V data
  25. print 'Get grid data...'
  26. cal = Calendar.getInstance()
  27. tn = DataU.getDataInfo().getTimeNum()
  28. u_sum = GridData()
  29. v_sum = GridData()
  30. n = 0
  31. i = 0
  32. for t in DataU.getDataInfo().getTimes():
  33.         cal.setTime(t)
  34.         if cal.get(Calendar.MONTH) + 1 == 1:
  35.                 print t
  36.                 DataU.setTimeIndex(i)
  37.                 DataV.setTimeIndex(i)
  38.                 u = DataU.getGridData('uwnd')
  39.                 v = DataV.getGridData('vwnd')
  40.                 if n == 0:
  41.                         u_sum = u
  42.                         v_sum = v
  43.                 else:
  44.                         u_sum = u_sum.add(u)
  45.                         v_sum = v_sum.add(v)
  46.                 n += 1

  47.         i += 1

  48. uwnd = u_sum.div(n)
  49. vwnd = v_sum.div(n)

  50. #---- Draw streamline
  51. print 'Draw streamline...'
  52. layer = DrawMeteoData.createStreamlineLayer(uwnd, vwnd, 'Streamline_January', True)
  53. miapp.getMapDocument().getActiveMapFrame().addLayer(layer)

  54. print 'Finished!'


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

新浪微博达人勋

 楼主| 发表于 2014-11-24 14:23:48 | 显示全部楼层
谢谢群主,已经搞好了。
还有一个和编程无关的问题,就是月风场平均数据每日有多个数据 (6小时间隔),
对于月平均值, 选哪个时段的数据最有代表性?目前我每天只取6:00 的数据做的月平均。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-11-24 14:59:28 | 显示全部楼层
geoeco 发表于 2014-11-24 14:23
谢谢群主,已经搞好了。
还有一个和编程无关的问题,就是月风场平均数据每日有多个数据 (6 ...

这个你根据自己的需求定吧。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-4-11 17:45:43 | 显示全部楼层
感谢分享
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2018-4-11 17:45:50 | 显示全部楼层
感谢分享
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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