爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9089|回复: 19

求助,如何利用NECP FNL资料、MetoInfo里的插件TrajStat,绘制气流轨迹,聚类分析?

[复制链接]

新浪微博达人勋

发表于 2014-12-23 10:16:08 | 显示全部楼层 |阅读模式

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

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

x
已经下载了NECP FNL资料,grib2格式的,安装好了MeteoInfo Java 版和TrajStat插件,已经看了TrajStat的帮助文档,没找着该怎么生成第一步的气流轨迹,困在第一步,恳请知道的老师、同学帮忙解答一下,不胜感激啊~刚接触,确实啥也不懂,看了半天也没明白

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

新浪微博达人勋

发表于 2014-12-23 10:44:38 | 显示全部楼层
HYSPLIT模式需要专门格式的气象数据(ARL格式),grib2格式的气象数据需要先转换。建议你直接下载ARL格式的气象数据来做轨迹,详见此贴:http://bbs.06climate.com/forum.p ... mp;page=3#pid307656

如果一定要用其它格式气象数据,也可以通过写MeteoInfo脚本程序进行格式转换。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-23 11:53:49 | 显示全部楼层
老师,格式转换麻烦吗?刚才试了一下下载ARL格式的,想分析一年的,下载速度好像太慢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-23 11:56:48 | 显示全部楼层
MeteoInfo 发表于 2014-12-23 10:44
HYSPLIT模式需要专门格式的气象数据(ARL格式),grib2格式的气象数据需要先转换。建议你直接下载ARL格式的 ...

老师,转换格式麻烦吗? 刚才试了一下ARL格式的,我想分析全年的,下载速度好像太慢了点
1.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-23 13:46:16 | 显示全部楼层
驴小杏 发表于 2014-12-23 11:56
老师,转换格式麻烦吗? 刚才试了一下ARL格式的,我想分析全年的,下载速度好像太慢了点,


之前写过的一个脚本程序,根据你自己的需要修改:

  1. #--------------------------------------------------------        
  2. # Author: Yaqiang Wang                                          
  3. # Date: 2013-10-324                                               
  4. # Purpose: Convert GRIB data to ARL data  
  5. # Note: Sample                                                   
  6. #-----------------------------------------------------------
  7. from org.meteoinfo.data.meteodata import MeteoDataInfo
  8. from org.meteoinfo.data.meteodata.arl import ARLDataInfo
  9. from org.meteoinfo.data.meteodata.arl import DataLabel
  10. import os

  11. #---- Set directories
  12. dataDir = "D:/Temp"

  13. #---- Set output data file
  14. outFile = os.path.join(dataDir, 'arl/test2.arl')

  15. #---- Read a GRIB data file
  16. mydata = MeteoDataInfo()
  17. infile = os.path.join(dataDir, 'grib/201001011800.pgbh06.gdas.20100101-20100105.grb2')
  18. print infile
  19. mydata.openNetCDFData(infile)
  20. print 'GRIB file has been opened...'

  21. #---- Set output ARL data info
  22. arlDI = ARLDataInfo()

  23. #---- Set variable and level list
  24. gvars = ['Pressure_surface','Temperature_height_above_ground',\
  25.   'u-component_of_wind_height_above_ground','v-component_of_wind_height_above_ground',\
  26.   'Geopotential_height_isobaric','Temperature_isobaric',\
  27.   'u-component_of_wind_isobaric','v-component_of_wind_isobaric','Vertical_velocity_pressure_isobaric',\
  28.   'Relative_humidity_isobaric']
  29. avars = ['PRSS','T02M','U10M','V10M','HGTS','TEMP','UWND','VWND','WWND','RELH']
  30. levels = [0,1000,975,950,925,900,875,850,825,800,775,750,700,\
  31.   650,600,550,500,450,400,350,300,250,225,200,175,150,\
  32.   125,100,70,50,30,20,10,7,5,3,2,1]
  33. for l in levels:
  34.   arlDI.levels.add(l)
  35.   if l == 0:
  36.     arlDI.LevelVarList.add(['PRSS','T02M','U10M','V10M'])
  37.   else:
  38.     arlDI.LevelVarList.add(['HGTS','TEMP','UWND','VWND','WWND','RELH'])

  39. #---- Write ARL data file
  40. dataInfo = mydata.getDataInfo()
  41. arlDI.createDataFile(outFile)
  42. arlDI.X = dataInfo.getXDimension().getValues()
  43. arlDI.Y = dataInfo.getYDimension().getValues()
  44. variables = dataInfo.getVariables()
  45. tNum = dataInfo.getTimeNum()
  46. for t in range(0, tNum):
  47.   mydata.setTimeIndex(t)
  48.   atime = dataInfo.getTimes().get(t)
  49.   aDH = arlDI.getDataHead(mydata.getProjectionInfo(), 'FNL1', 2)
  50.   arlDI.writeIndexRecord(atime, aDH)
  51.   lidx = 0
  52.   for l in arlDI.levels:
  53.     print l
  54.     for v in arlDI.LevelVarList[lidx]:
  55.       vName = gvars[avars.index(v)]
  56.       print vName
  57.       if lidx == 0:
  58.         mydata.setLevelIndex(lidx)
  59.       else:
  60.         variable = dataInfo.getVariable(vName)
  61.         nlidx = variable.getZDimension().getDimValue().indexOf(l*100.0)
  62.         mydata.setLevelIndex(nlidx)
  63.       gData = mydata.getGridData(vName)
  64.       if v == 'PRSS' or v == 'WWND':
  65.         gData = gData.divide(100)      
  66.       aDL = DataLabel(atime)
  67.       aDL.setLevel(lidx)
  68.       aDL.setVarName(v)
  69.       aDL.setGrid(99)
  70.       aDL.setForecast(0)
  71.       arlDI.writeGridData(aDL, gData)
  72.     lidx += 1

  73. arlDI.closeDataFile()

  74. print 'Finished!'


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

新浪微博达人勋

 楼主| 发表于 2014-12-23 14:19:48 | 显示全部楼层
MeteoInfo 发表于 2014-12-23 13:46
之前写过的一个脚本程序,根据你自己的需要修改:

好的,谢谢老师!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-23 14:24:50 | 显示全部楼层
MeteoInfo 发表于 2014-12-23 13:46
之前写过的一个脚本程序,根据你自己的需要修改:

老师,看不明白,
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-23 14:49:54 | 显示全部楼层
驴小杏 发表于 2014-12-23 14:24
老师,看不明白,

如果你一点Python的基础也没有,看不明白很正常。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-12-23 14:58:08 | 显示全部楼层
MeteoInfo 发表于 2014-12-23 14:49
如果你一点Python的基础也没有,看不明白很正常。

真没接触过Python,先下载数据看看了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-12-25 10:37:06 | 显示全部楼层
好高端,帮顶
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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