爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 10007|回复: 23

MeteoInfo脚本示例:从MICAPS第一类数据中提取数据

[复制链接]

新浪微博达人勋

发表于 2015-1-15 12:42:37 | 显示全部楼层 |阅读模式

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

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

x
MICAPS第一类数据是地面全要素观测数据,每个文件一个时次,包含很多站点和要素。这个脚本程序是要解决从多个MICAPS第一类数据文件中提取某些站点、某些要素的数据,并保存为文本文件。应该对业务科研工作比较有用。

示例脚本程序如下(需要MeteoInfo Java最新版本1.1.9R3的支持):

  1. #--------------------------------------------------------        
  2. # Author: Yaqiang Wang                                          
  3. # Date: 2015-1-14                                               
  4. # Purpose: Extract station data from micaps1 data
  5. # Note: Sample                                                   
  6. #-----------------------------------------------------------
  7. from org.meteoinfo.data.meteodata import MeteoDataInfo
  8. from org.meteoinfo.table import DataTable
  9. import os
  10. import datetime

  11. #---- Set data directories
  12. print 'Start script...'
  13. mdir = 'U:/data/micaps/2014/plot'
  14. outdir = 'D:/Temp/test'

  15. #---- Set stations
  16. stations = ['54511', '58362']

  17. #---- Set variables
  18. # Avialable variables in MICAPS 1 data:
  19. #  "Altitude", "Grade", "CloudCover", "WindDirection", "WindSpeed", "Pressure",
  20. #  "PressVar3h", "WeatherPast1", "WeatherPast2", "Precipitation6h", "LowCloudShape",
  21. #  "LowCloudAmount", "LowCloudHeight", "DewPoint", "Visibility", "WeatherNow",
  22. #  "Temperature", "MiddleCloudShape", "HighCloudShape"
  23. variables = ['WindDirection','WindSpeed']

  24. #---- Set start/end times
  25. stime = datetime.datetime.now()
  26. sdate = datetime.datetime(2014, 10, 1, 2)
  27. edate = datetime.datetime(2014, 10, 10, 3)
  28. #edate = datetime.datetime(2014, 12, 31, 24)

  29. #---- Extract data
  30. mdi = MeteoDataInfo()
  31. rTable = DataTable()
  32. n = 0
  33. while sdate < edate:
  34.     mfn = os.path.join(mdir, sdate.strftime('%y%m%d%H') + '.000')
  35.     if os.path.exists(mfn):
  36.         print mfn
  37.         mdi.openMICAPSData(mfn)
  38.         stdata = mdi.getStationInfoData()
  39.         t = mdi.getDataInfo().getTime(0)
  40.         result = stdata.extractStationData(stations, variables, t)
  41.         print result.toString()
  42.         if n == 0:
  43.             rTable = result
  44.         else:
  45.             for row in result.getRows():
  46.                 rTable.appendRow(row)
  47.         n += 1

  48.     sdate = sdate + datetime.timedelta(hours=3)

  49. #---- Output result
  50. print '**********************************'
  51. #print rTable.toString()
  52. #outfn = os.path.join(outdir, 'stdata_test.csv')
  53. #rTable.saveAsCSVFile(outfn)
  54. outfn = os.path.join(outdir, 'stdata_test.txt')
  55. rTable.saveAsASCIIFile(outfn)

  56. print 'Run time: %s'%(datetime.datetime.now() - stime)
  57. print 'Finished!'

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

新浪微博达人勋

发表于 2015-1-26 17:19:37 | 显示全部楼层
对于编程一窍不通的,这就是捷径哇。。感谢大神。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-2-6 20:46:17 | 显示全部楼层
顶起来顶起来!!王老师辛苦咯
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-16 17:47:31 | 显示全部楼层
今天刚接到任务需要这个,太感谢了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-16 22:12:43 | 显示全部楼层
试了一下,搞定!
非常感谢分享!!!!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-11-17 23:04:57 | 显示全部楼层
你好
不知道有没有能提取分钟级别micaps第一类数据的脚本呢?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-18 23:05:41 | 显示全部楼层
香草拿铁 发表于 2015-4-16 17:47
今天刚接到任务需要这个,太感谢了!

我的没有成功,出现了这种错误,是什么原因>>> run script...
  File "<iostream>", line 39
    &Acirc;&nbsp; &Acirc;&nbsp; mfn = os.path.join(mdir, sdate.strftime('%y%m%d%H') + '.000')
    ^
SyntaxError: no viable alternative at character '&nbsp;'
>>>
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-12-19 18:03:22 | 显示全部楼层
老师,我试着用这个脚本提取数据,出现了这样的提示,是为什么>>> run script...
Start script...
D:\MeteoInfo\sample\MICAPS\plot\14100102.000
Traceback (most recent call last):
  File "<iostream>", line 46, in <module>
        at java.text.SimpleDateFormat.<init>(Unknown Source)
        at java.text.SimpleDateFormat.<init>(Unknown Source)
        at org.meteoinfo.table.DataTable.toString(DataTable.java:749)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)

java.lang.NullPointerException: java.lang.NullPointerException
>>>
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-12-19 20:31:43 | 显示全部楼层
悠然一梦123 发表于 2015-12-19 18:03
老师,我试着用这个脚本提取数据,出现了这样的提示,是为什么>>> run script...
Start script...
D:\Met ...

这是软件的bug,你重新下载最新版本的MeteoInfo 1.2.9R1试试:http://www.meteothinker.com/
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-3-25 15:53:42 | 显示全部楼层
今天用上了,很给力
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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