一招搞定各大机构数值预报产品下载,包括EC最新公开预报数据

2022-09-23 15:27:22 浏览数 (1)

不知不觉停更了一个多月,除了写论文之外,还参加了上海气象学会主办的 第二届人工智能天气预报创新大赛,主要是对数值模式预报的2m气温和降水进行订正。

这是第二次参加上海气象学会主办的比赛,第一届的短临预报比赛和小伙伴一起最后获得了二等奖。这一次只有我一个人,最后因为各种原因只参加了前半程,提交了大概3次结果,从最初的双赛道第一最后定格到第四。

这几年国内外和气象相关的AI大赛比较多,改天再细聊一下AI 气象大赛

刚好近两天ECMWF开放了预报数据,那就来看一下如何获取到全球各大气象机构发布的数值预报产品吧

全球有不少机构对外发布了数值预报产品,但是大多都比较分散,通常需要自己去寻找再写不少代码来下载这些产品。前几天发现了一个工具,可以非常方便的下载常用的数值预报产品。ECMWF刚对外发布预报数据,开发者就更新了下载接口,非常给力了哈哈!

废话不多说了,下面就来介绍一下这个工具。

Herbie 属于 NOAA 的大数据项目,旨在更方便的从各云存储中获取数值天气预报结果。最初,是在 Brian K.Blaylock 博士期间开发用来获取 HRRR数据的。2020年此工具成为 NOAA 大数据项目的一部分,于是开始开发适用更多的数据源,目前支持获取如下数据:

  • High Resolution Rapid Refresh (HRRR)
  • Rapid Refresh (RAP)
  • Global Forecast System (GFS)
  • National Blend of Models (NBM)
  • Rapid Refresh Forecast System - Prototype (RRFS)
  • ECMWF Open Data Forecast Prodducts (✨ new in Herbie 0.0.8)

其数值天气预报结果的数据源包括:

  • NOMADS
  • Big Data Program Partners (AWS, Google, Azure)
  • ECMWF Open Data Azure storage
  • University of Utah CHPC Pando archive

安装

最好使用 Python3.8 版本,安装方式如下:

代码语言:javascript复制
pip install herbie-data

代码语言:javascript复制
pip install git https://github.com/blaylockbk/Herbie.git

食用方法

Herbie 目前具有如下功能:

  • 从不同数据源搜索模式输出
  • 下载完整的GRIB2文件
  • 从GRIB2文件中提取子集并下载
  • 使用 xarray 读取数据
  • 使用 Cartopy 绘图

总的来说,Herbie 使用方便,而且兼容目前常用的工具。

代码语言:javascript复制
from herbie.archive import Herbie

# Herbie object for the HRRR model 6-hr surface forecast product
H = Herbie('2021-01-01 12:00',
           model='hrrr',
           product='sfc',
           fxx=6)

# Download the full GRIB2 file
H.download()

# Download a subset, like all fields at 500 mb
H.download(":500 mb")

# Read subset with xarray, like 2-m temperature.
H.xarray("TMP:2 m")

有时可能需要下载大量的数据, Herbie 也提供了非常方便的工具函数:

代码语言:javascript复制
from herbie.tools import bulk_download
import pandas as pd

# Download HRRR analysis for every hour of a day
DATES = pd.date_range('2021-01-01 00:00', '2021-01-01 06:00', freq='1H')
bulk_download(DATES, model='hrrr', product='sfc', fxx=0, searchString='TMP:2 m')

可以通过如下命令下载ECMWF最新公开的数据集:

代码语言:javascript复制
from datetime import datetime
from herbie.archive import Herbie

now = datetime.now()
today = datetime(now.year, now.month, now.day)

H = Herbie(today, model="ecmwf", product="oper", save_dir="./")

H.download() # 下载所有文件

H.download(":t:") # 下载所有层的温度

就是下载速度有点慢,好了就介绍到这,感兴趣的可以去 GitHub (https://github.com/blaylockbk/Herbie) 网页查看。目前主要是获取数值预报产品,数据处理和绘图部分正处于开发中,如果有什么问题也可以去反馈。

0 人点赞