爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 7704|回复: 7

怎么把ERA5的grib转arl

[复制链接]

新浪微博达人勋

发表于 2019-8-27 10:11:58 | 显示全部楼层 |阅读模式

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

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

x
有人试过将ERA5下载的grib文件转hysplit能用的arl吗?
hysplit里面自带的把ECMWF转arl的需要3个文件,在ERA5里我只下载到了3d和2d文件,invariant文件不知道在哪,用不了这个自带的程序。
我又用hysplit论坛上的python程序下载了一个3d文件和一个2d文件,还生成了一个cfg文件,但是后面要怎么转也没搞明白。
meteoinfo里把grib转arl的程序又是用的fnl下载的grib文件,是把3d和2d都放在一个grib里面的,我把程序改成读取两个grib文件的。
#---- Set data folder
datadir = 'E:\ERA5\python'
#---- Set output data file
outfn = os.path.join(datadir, 'test_grib.arl')
#if os.path.exists(outfn):
#    os.remove(outfn)
#---- Read a GRIB data file
infn = os.path.join(datadir, 'ERA5_2019.Jan01.2dpl.all.grib')
infn1 = os.path.join(datadir, 'ERA5_2019.Jan01.3dpl.grib')
print infn
inf = addfile(infn)
print infn1
inf1 = addfile(infn1)
print 'GRIB data file has been opened...'
#---- Set output ARL data file
arlf = addfile(outfn, 'c', dtype='arl')
#---- Set variable and level list
gvar2d = ['Pressure_surface','Temperature_surface','u-component_of_wind_height_above_ground',\
    'v-component_of_wind_height_above_ground']
gvar3d = ['Geopotential_isobaric','Temperature_isobaric','Pressure_Vertical_velocity_isobaric',\
    'u-component_of_wind_isobaric','v-component_of_wind_isobaric','Specific_humidity_isobaric']
avar2d = ['PRSS','T02M','U10M','V10M']
avar3d = ['HGTS','TEMP','WWND','UWND','VWND','SPHU']
gv = inf1['Geopotential_isobaric']
nx = gv.dimlen(gv.ndim - 1)
ny = gv.dimlen(gv.ndim - 2)
levels = gv.dimvalue(gv.ndim - 3)[::-1]
nz = len(levels)
arlf.setlevels(levels)
arlf.set2dvar(avar2d)
for l in levels:
    arlf.set3dvar(avar3d)

#---- Write ARL data file
arlf.setx(gv.dimvalue(gv.ndim - 1))
arlf.sety(gv.dimvalue(gv.ndim - 2))
tNum = inf1.timenum()
fhour = 0
for t in range(0, tNum):
    print 'Time index: ' + str(t)
    atime = inf1.gettime(t)
    print atime.strftime('%Y-%m-%d %H:00')
    dhead = arlf.getdatahead(inf1.proj, 'RSMC', 2, fhour)
    #Pre-write index record without checksum - will be over-write latter
    arlf.writeindexrec(atime, dhead)
    #Checksum list
    ksumlist = []
    # Write 2d variables
    ksums = []
    for avname,gvname in zip(avar2d, gvar2d):
        print avname + ' ' + gvname
        if avname == 'U10M' or avname == 'V10M':
            gdata = inf[gvname][t,0,:,:]
        else:
            gdata = inf[gvname][t,:,:]
        if avname == 'PRSS':
            gdata = gdata * 0.01
        ksum = arlf.writedatarec(atime, 0, avname, fhour, 99, gdata)
        ksums.append(ksum)
    ksumlist.append(ksums)
    # Write 3d variables
    for lidx in range(0, nz):
        ksums = []
        llidx = nz - lidx - 1
        print lidx
        print llidx
        for avname,gvname in zip(avar3d, gvar3d):
            print avname + ' ' + gvname
            gdata = inf1[gvname][t,llidx,:,:]
            if avname == 'WWND':
                gdata = gdata * 0.01
            elif avname == 'SPHU':
                gdata = gdata * 1000.
            ksum = arlf.writedatarec(atime, lidx + 1, avname, fhour, 99, gdata)
            ksums.append(ksum)
        ksumlist.append(ksums)
    #Re-write index record with checksum
    arlf.writeindexrec(atime, dhead, ksumlist)
    fhour += 1
arlf.close()
print 'Finished!'
显示的错误
Traceback (most recent call last):
  File "<iostream>", line 55, in <module>
  File "D:\software\MeteoInfo\pylib\mipylib\dataset\dimdatafile.py", line 45, in __getitem__
    raise ValueError()
ValueError
45行是标红那里,不知道是什么原因。
有哪位大佬转过这个吗?能教一教我吗?

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

新浪微博达人勋

发表于 2021-3-1 13:55:35 | 显示全部楼层
hisplit最新版本里面有个era52arl,看上去还挺简洁的,我这边还没来得及研究,有时间我也看看
程序存放在C:\hysplit\data2arl\era52arl
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-8-29 21:09:22 | 显示全部楼层

王老师,您好,请问我用meteoinfo转化来的arl数据。能跑前向轨迹了。但是用来跑hysplit的concentration可以run起来,就是画不了图,请问concentration所要求的元素和前向不同吗?如果是,还请教王老师,这个是用到哪些呀。搞了好几天,还是没弄明白
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2019-8-27 13:18:17 | 显示全部楼层
提示55行报错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2019-8-27 15:17:27 | 显示全部楼层
王老师,我把代码改好,然后跑了一个arl文件出来,但是用hysplit里面的check file检查后它报错了
Snipaste_2019-08-27_14-56-58.png
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-2-17 21:44:10 | 显示全部楼层
你好,请问代码是哪里错了,我也遇到了同样的问题
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2020-9-25 21:07:15 | 显示全部楼层

王老师,您好,era52alr使用的era5文件只能是pressure level么?另外,grib2文件是否也可以用装arl呢?(用于hysplit)。多谢!
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2022-2-25 19:34:16 | 显示全部楼层
龍_彳亍_天_下 发表于 2021-3-1 13:55
hisplit最新版本里面有个era52arl,看上去还挺简洁的,我这边还没来得及研究,有时间我也看看
程序存放在C ...

请问这个PC版的或者Mac版的能正常编译吗?我编译的时候少了hysplit库(/hysplit/Library)这个文件夹,请问有什么办法编译吗?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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