爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: MeteoInfo

MeteoInfo脚本示例 - 从再分析数据中提取站点数据

[复制链接]

新浪微博达人勋

发表于 2016-7-21 09:53:30 | 显示全部楼层
好东西!学习了!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-21 11:26:45 | 显示全部楼层
zhangyanlin 发表于 2015-5-30 16:25
代码改了一下可以了,缩进之前有点问题。

为什么报错
>>> run script...
E:\meteodata\2007\gdas1.Nov07.w1
56
Traceback (most recent call last):
  File "<iostream>", line 50, in <module>
AttributeError: 'org.meteoinfo.data.meteodata.Dimension' object has no attribute 'getDimLength'
>>>
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-7-21 11:29:52 | 显示全部楼层
提取边界层高度报错

>>> run script...
  File "<iostream>", line 44
    print inFile
    ^
IndentationError: unindent does not match any outer indentation level
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2016-7-21 11:54:28 | 显示全部楼层
dtlyr 发表于 2016-7-21 11:29
提取边界层高度报错

>>> run script...

1、使用最新版本的MeteoInfo
2、注意代码缩进的问题,具体上网看Python的语法要求。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-26 17:54:10 | 显示全部楼层
#--------------------------------------------------------        
# Author: Yaqiang Wang                                          
# Date: 2014-9-11                                                
# Purpose: Extract station PBL data from ARL meteorological data  
# Note: Sample                                                   
#-----------------------------------------------------------
from org.meteoinfo.data.meteodata import MeteoDataInfo
import os.path
from java.util import Date
from java.util import Calendar
from java.util import Locale
from java.text import SimpleDateFormat
#---- Set directories
dataDir = 'F:\\20160826\\meteodata\\2006'
#---- Set times - this case show seasonal variation
cal = Calendar.getInstance()
cal.set(2006, 10, 1)
sTime = cal.getTime()
cal.set(2006, 11, 1)
eTime = cal.getTime()
aTime = sTime
format = SimpleDateFormat('MMMyy', Locale.ENGLISH)
format1 = SimpleDateFormat('yyyy-MM-dd HH:00')
format2 = SimpleDateFormat('yyyyMMddHH')
cal.setTime(sTime)
#---- Create a MeteoDataInfo object
mydata = MeteoDataInfo()
#---- Set lon/lat of the location
lon = 116.30
lat = 39.99
#---- Set output text file
outpath = os.path.join(dataDir, 'PBL_data-1.txt')
outf = open(outpath, 'w')
outf.write('Time,PBLH')
#---- Loop
i = 0
sum = 0.0
while aTime <= eTime:
     for w in range(5):
        inFile = dataDir + 'gdas1.' + format.format(aTime) + '.w' + str(w + 1)
        print inFile
        if os.path.isfile(inFile):
         mydata.openARLData(inFile)  #Open ARL data file
         tNum = mydata.getDataInfo().getTimeNum()   
         print tNum
         for t in range(tNum):
            dTime = mydata.getDataInfo().getTimes().get(t)
            print format1.format(dTime)
            mydata.setTimeIndex(t)   #Set time index
            gData = mydata.getGridData("PBLH")  #Get PBLH grid data
            pblh = gData.toStation(lon, lat)  #Intepolate PBLH data to the location
            print 'PBLH = %10.2f' %pblh
            outf.write(os.linesep)
            outf.write(format2.format(dTime) + ',%-7.2f ' %pblh)
            sum += pblh
            i += 1
                          
     cal.add(Calendar.MONTH, 1)
     aTime = cal.getTime()
outf.close()
#---- Calculate seasonal average PBLH value
ave = sum / i        
print 'Average PBLH: %10.2f' %ave
print 'Finished!'


改写提取PBLH数据代码后,为什么提示下面的错误?
F:\20160826\meteodata\2006gdas1.Dec06.w3
F:\20160826\meteodata\2006gdas1.Dec06.w4
F:\20160826\meteodata\2006gdas1.Dec06.w5
Traceback (most recent call last):
  File "<iostream>", line 62, in <module>
ZeroDivisionError: float division

line 62 为:ave = sum / i        


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

新浪微博达人勋

 楼主| 发表于 2016-9-26 18:06:07 | 显示全部楼层
本帖最后由 MeteoInfo 于 2016-9-26 18:08 编辑
dtlyr 发表于 2016-9-26 17:54
#--------------------------------------------------------        
# Author: Yaqiang Wang            ...

i  为 0 会导致这个错误信息,应该是文件都不存在。

inFile = dataDir + 'gdas1.' + format.format(aTime) + '.w' + str(w + 1)
改为:
inFile = dataDir + '\\gdas1.' + format.format(aTime) + '.w' + str(w + 1)
试试
格点数据插值到站点数据你可以参考MeteoInfoLab的例子(http://bbs.06climate.com/forum.php?mod=viewthread&tid=35191),更简单方便。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-9-26 18:16:05 | 显示全部楼层
MeteoInfo 发表于 2016-9-26 18:06
i  为 0 会导致这个错误信息,应该是文件都不存在。

inFile = dataDir + 'gdas1.' + format.format(aT ...

太赞了,王老师,多谢多谢{:eb511:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-10-1 21:13:15 | 显示全部楼层
原来功能这么强大。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-14 10:26:35 | 显示全部楼层
这个提取的是地面的数据吗?如何提取不同高度的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-5-15 00:22:09 来自手机 | 显示全部楼层
感谢分享。
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

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

本版积分规则

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

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

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