爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7122|回复: 11

发布MeteoInfo Java 0.9.8.5

[复制链接]

新浪微博达人勋

发表于 2014-5-4 20:53:00 | 显示全部楼层 |阅读模式

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

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

x
主要是一些功能的完善和bug修正。

应HYSPLIT论坛上一些用户的需求,增加了下列功能:

给MeteoDataInfo类增加了getArrivalTimeData(String varName, double threshold)方法用了获取变量达到某个临界值所需的时间(距起始时间的小时数),两个参数分别是变量名和临界值。目前只能用于脚本,以后再看有没有必要加入GUI界面中。示例脚本程序:
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-5-3
  4. # Purpose: Get time of arrival data and plot
  5. # Note: Sample
  6. #-----------------------------------------------------
  7. print 'Loading classes...'
  8. from org.meteoinfo.plot import MapLayoutPlot
  9. from org.meteoinfo.data import GridData
  10. from org.meteoinfo.data.meteodata import MeteoDataInfo
  11. from org.meteoinfo.data.meteodata import DrawMeteoData
  12. from org.meteoinfo.legend import LegendScheme
  13. from org.meteoinfo.legend import LegendManage
  14. from org.meteoinfo.legend import LegendType
  15. from org.meteoinfo.shape import ShapeTypes
  16. import os.path

  17. #Set directory
  18. dataDir = 'D:/Temp/HYSPLIT'
  19. infn = os.path.join(dataDir, 'HYSPLIT_cdump')

  20. #Open data
  21. print 'Open data...'
  22. mdi = MeteoDataInfo()
  23. mdi.openHYSPLITConcData(infn)
  24. tData = mdi.getArrivalTimeData('DUST', 0.001)
  25. #Plot data
  26. print 'Plot data...'
  27. aLS = LegendManage.createLegendSchemeFromGridData(tData, LegendType.GraduatedColor, ShapeTypes.Polygon)
  28. #aLayer = DrawMeteoData.createShadedLayer(tData, aLS, 'TimeOfArrial_DUST', 'Hour', True)
  29. aLayer = DrawMeteoData.createRasterLayer(tData, 'TimeOfArrial_DUST', aLS)
  30. aLayer.setProjInfo(mdi.getProjectionInfo())
  31. mf = miapp.getMapDocument().getActiveMapFrame()
  32. mf.addLayer(aLayer)
  33. mf.moveLayer(aLayer, 0)
  34. miapp.getMapDocument().getMapLayout().paintGraphics()

  35. print 'Finished'



Image00580.png


给MeteoDataInfo类增加了toStation方法,有几个重载,用来获取任意时空轨迹上的气象数据(线性差值)。示例脚本程序:
  1. #-----------------------------------------------------
  2. # Author: Yaqiang Wang
  3. # Date: 2014-5-4
  4. # Purpose: Get meteorological data along trajectory
  5. # Note: Sample
  6. #-----------------------------------------------------
  7. import os
  8. from org.meteoinfo.data.meteodata import MeteoDataInfo
  9. from org.meteoinfo.global.table import DataTypes
  10. from java.text import SimpleDateFormat

  11. # Set working directory
  12. trajDir = 'D:/Trajectory/bj'
  13. meteoDir = 'P:/MetData/MetData/2011'

  14. # Open trjactory data file
  15. print 'Open trajectory data file ...'
  16. # Create a MeteoDataInfo object
  17. mdi_traj = MeteoDataInfo()
  18. # Open trajectory data file
  19. trajFile = '11033120'
  20. trajfn = os.path.join(trajDir, trajFile)
  21. print 'Trajectory file: ' + trajfn
  22. mdi_traj.openHYSPLITTrajData(trajfn)
  23. # Create trajectory layer
  24. trajLayer = mdi_traj.getDataInfo().createTrajPointLayer()
  25. trajLayer.setLayerName('Trajectorie' + '_' + trajFile)

  26. # Open meteorological data file
  27. print 'Open meteorological data file...'
  28. # Create a MeteoDataInfo object
  29. mdi_meteo = MeteoDataInfo()
  30. # Open meteorological data file
  31. meteoFile = 'gdas1.mar11.w5'
  32. meteofn = os.path.join(meteoDir, meteoFile)
  33. print 'Meteorological file: ' + meteofn
  34. mdi_meteo.openARLData(meteofn)

  35. # Get meteorological data along trajectory
  36. print 'Get meteorological data along trajectory...'
  37. varName = 'UWND'
  38. trajLayer.editAddField(varName, DataTypes.Float)
  39. dformat = SimpleDateFormat('yyyyMMddHH')
  40. idx = 0
  41. for ps in trajLayer.getShapes():
  42.   lon = ps.getPoint().X
  43.   lat = ps.getPoint().Y
  44.   pres = trajLayer.getCellValue('Pressure', idx)
  45.   t = dformat.parse(trajLayer.getCellValue('Date', idx))
  46.   v = mdi_meteo.toStation(varName, lon, lat, pres, t)
  47.   trajLayer.editCellValue(varName, idx, v)
  48.   idx += 1

  49. # Add the layer into the MeteoInfo application (miapp)
  50. print 'Add trajectory layer...'
  51. mf = miapp.getMapDocument().getActiveMapFrame()
  52. mf.addLayer(trajLayer)

  53. print 'Finish...'



Image00577.png
Image00578.png

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

新浪微博达人勋

发表于 2014-5-4 21:20:37 | 显示全部楼层
看上去很便捷好用的样子~~~
是不是比较适合用于对气候预测模型的分析呢?最近在分析CMIP5的模型的模拟效果,各种软件弄得头疼~~
不知道这个是不是会比较直观一些呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-4 21:43:36 | 显示全部楼层
veronicasyd 发表于 2014-5-4 21:20
看上去很便捷好用的样子~~~
是不是比较适合用于对气候预测模型的分析呢?最近在分析CMIP5的模型的模拟效果 ...

这个要看你具体想做什么了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-4 22:05:52 | 显示全部楼层
谢谢楼主,学习了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-5-5 10:30:45 | 显示全部楼层
MeteoInfo 发表于 2014-5-4 21:43
这个要看你具体想做什么了

我想要利用CMIP5的各个模式来预测东北的气候变化状况(主要是降水和温度)。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-5-5 11:23:37 | 显示全部楼层
veronicasyd 发表于 2014-5-5 10:30
我想要利用CMIP5的各个模式来预测东北的气候变化状况(主要是降水和温度)。

这个主要是要转好模式,后期分析和绘图也要看具体想分析什么了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-9-4 10:23:21 | 显示全部楼层
学习了,多谢楼主
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-9-29 20:24:47 | 显示全部楼层
要写脚本,刚装软件还不知道怎么用,在哪里输入。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-9-29 21:17:41 | 显示全部楼层
fzghui 发表于 2014-9-29 20:24
要写脚本,刚装软件还不知道怎么用,在哪里输入。。。。

“工具” -> “脚本”菜单
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-10-1 23:53:54 | 显示全部楼层
MeteoInfo 发表于 2014-9-29 21:17
“工具” -> “脚本”菜单

嗯,会了,谢拉
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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