Herbie 完全教程Python 气象数据下载的终极解决方案【免费下载链接】HerbieDownload numerical weather prediction datasets (HRRR, RAP, GFS, IFS, etc.) from NOMADS, NODD partners (Amazon, Google, Microsoft), ECMWF open data, and the University of Utah Pando Archive System.项目地址: https://gitcode.com/gh_mirrors/her/HerbieHerbie 是一个强大的 Python 包专门用于从多个云存档源下载数值天气预报NWP模型数据。无论你是气象研究人员、数据科学家还是天气爱好者Herbie 都能让你轻松访问 NOAA、ECMWF 等机构的气象数据。这个工具的核心优势在于其智能化的数据检索机制能够自动从多个数据源中寻找最佳下载路径大大简化了气象数据获取的复杂性。项目亮点为什么选择 HerbieHerbie 的设计理念是让气象数据下载变得简单高效。以下是它的主要亮点多源智能搜索自动从 AWS、Google Cloud、NOMADS、Azure 等多个数据源中寻找可用文件子集下载优化支持按变量筛选只下载你需要的数据节省带宽和存储空间无缝 xarray 集成直接读取 GRIB2 文件为 xarray 数据集便于后续分析广泛模型支持覆盖 HRRR、GFS、RAP、ECMWF、GEFS 等 15 主流气象模型双界面操作提供 Python API 和命令行接口满足不同使用场景核心功能深度解析智能数据源优先级管理Herbie 最强大的功能之一是它的智能数据源搜索机制。当你请求数据时它会按照配置的优先级顺序检查多个数据源from herbie import Herbie # Herbie 会自动检查以下数据源按默认优先级 # 1. AWS S3 (亚马逊云) # 2. Google Cloud Storage (谷歌云) # 3. NOMADS (NOAA 官方服务器) # 4. 犹他大学 Pando 存档系统 # 5. 本地文件系统 H Herbie(2024-01-01 12:00, modelhrrr, productsfc, fxx6)灵活的数据子集下载传统的气象数据下载需要获取整个 GRIB2 文件但 Herbie 允许你只下载需要的变量这在处理大文件时特别有用# 下载完整文件 H.download() # 只下载 500mb 高度的所有变量 H.download(:500 mb) # 只下载 2米温度 H.download(:TMP:2 m) # 下载特定区域的子集 H.download(:TMP:2 m, region[-120, -110, 35, 45])内置数据可视化支持Herbie 集成了 Cartopy 地图库让你能够快速可视化气象数据import matplotlib.pyplot as plt import cartopy.crs as ccrs # 获取数据并创建地图 ds H.xarray(TMP:2 m) ax plt.axes(projectionccrs.PlateCarree()) ds.t2m.plot(axax, transformccrs.PlateCarree()) ax.coastlines() plt.show()安装部署三种方式任选方式一Conda/Mamba 安装推荐# 使用 Conda conda install -c conda-forge herbie-data # 或使用更快的 Mamba mamba install -c conda-forge herbie-data方式二Pip 安装pip install herbie-data方式三Uv 安装uv add herbie-data注意wgrib2 工具是可选的但推荐安装以获得完整功能# Ubuntu/Debian sudo apt-get install wgrib2 # macOS brew install wgrib2 # Conda conda install -c conda-forge wgrib2实战应用从入门到精通案例 1下载 HRRR 模型数据HRRR高分辨率快速更新是美国最常用的高分辨率区域预报模型之一。以下是获取 HRRR 数据的完整流程from herbie import Herbie import xarray as xr # 1. 创建 Herbie 对象 H Herbie( 2024-03-15 12:00, # 日期时间 modelhrrr, # 模型名称 productsfc, # 产品类型地面场 fxx6 # 预报时效6小时 ) # 2. 查看文件内容 print(H.inventory()) # 3. 下载并读取 2米温度数据 temp_data H.xarray(TMP:2 m) # 4. 数据分析和可视化 print(f温度范围: {temp_data.t2m.min().values:.1f}°C 到 {temp_data.t2m.max().values:.1f}°C)案例 2批量下载多时段数据对于需要历史数据的研究Herbie 提供了批量处理功能from herbie import FastHerbie import pandas as pd # 定义时间范围 dates pd.date_range(2024-03-01, 2024-03-07, freqD) # 创建 FastHerbie 对象进行批量下载 FH FastHerbie( dates, modelhrrr, productsfc, fxx6, save_dir./hrrr_data ) # 批量下载 2米温度数据 FH.download(TMP:2 m, verboseTrue) # 批量读取所有数据 datasets FH.xarray(TMP:2 m)案例 3命令行快速操作Herbie 提供了强大的命令行接口适合自动化脚本和快速查询# 查看 HRRR 模型变量清单 herbie inventory -m hrrr -d 2024-03-15T12:00 -f 0 # 下载 GFS 模型 850mb 温度 herbie download -m gfs --product 0p25 -d 2024-03-15 -f 24 --subset :TMP:850 mb: # 指定数据源优先级只检查谷歌云 herbie data -m hrrr -d 2024-03-15 -f 0 -p google支持的气象模型大全Herbie 支持众多气象模型覆盖全球和区域尺度美国 NOAA 模型HRRR3公里高分辨率快速更新模型RAP13公里快速更新模型GFS全球预报系统GEFS全球集合预报系统NAM北美中尺度模型NBM国家模型融合产品其他国际模型ECMWF IFS欧洲中期天气预报中心综合预报系统HRDPS加拿大高分辨率确定性预报系统NAVGEM美国海军全球环境模型生态集成与其他工具无缝协作与 xarray 深度集成Herbie 返回的是标准的 xarray 数据集这意味着你可以直接使用 xarray 的强大功能# 使用 xarray 进行高级分析 ds H.xarray(:500 mb) # 计算垂直速度梯度 ds[dwdp] ds[w].differentiate(isobaricInhPa) # 时间序列分析 monthly_mean ds.groupby(time.month).mean() # 空间统计分析 spatial_mean ds.mean(dim[latitude, longitude])Cartopy 地理可视化结合 CartopyHerbie 数据可以轻松绘制专业气象图import cartopy.feature as cfeature fig plt.figure(figsize(12, 8)) ax plt.axes(projectionccrs.PlateCarree()) # 添加地理特征 ax.add_feature(cfeature.COASTLINE) ax.add_feature(cfeature.BORDERS, linestyle:) ax.add_feature(cfeature.STATES, linewidth0.5) # 绘制气象数据 ds.t2m.plot(axax, transformccrs.PlateCarree(), cbar_kwargs{label: Temperature (°C)}) plt.title(2m Temperature from HRRR Model) plt.show()与机器学习框架结合Herbie 数据可以直接用于机器学习模型训练import torch from torch.utils.data import Dataset class WeatherDataset(Dataset): def __init__(self, dates, modelhrrr, variableTMP:2 m): self.data [] for date in dates: H Herbie(date, modelmodel, productsfc, fxx0) ds H.xarray(variable) self.data.append(ds[variable].values) def __len__(self): return len(self.data) def __getitem__(self, idx): return torch.tensor(self.data[idx], dtypetorch.float32)进阶技巧提升工作效率1. 配置文件优化Herbie 使用 TOML 格式的配置文件你可以自定义默认设置# ~/.config/herbie/config.toml [default] model hrrr fxx 0 save_dir ~/weather_data overwrite false verbose true # 自定义数据源优先级 priority [aws, google, nomads, pando]2. 缓存机制利用Herbie 会自动缓存已下载的文件避免重复下载# 检查文件是否已存在 if H.local_exists(): print(文件已存在跳过下载) ds H.xarray(TMP:2 m) else: ds H.xarray(TMP:2 m, downloadTrue)3. 自定义模型模板如果你有私有数据源可以创建自定义模板# 在 ~/.config/herbie/custom_template.py 中添加 class my_custom_model: def template(self): self.DESCRIPTION My Custom Weather Model self.SOURCES { my_server: fhttp://myserver.com/{self.date:%Y%m%d}/model_output.grib2 }4. 错误处理和重试Herbie 内置了错误处理机制但你可以进一步优化from tenacity import retry, stop_after_attempt, wait_exponential retry(stopstop_after_attempt(3), waitwait_exponential(multiplier1, min4, max10)) def download_with_retry(date, modelhrrr): try: H Herbie(date, modelmodel) return H.xarray(TMP:2 m) except Exception as e: print(f下载失败: {e}) raise性能优化建议网络优化使用离你最近的云服务商AWS、Google、Azure设置合适的优先级顺序减少连接时间考虑使用本地镜像如果可用存储优化使用子集下载只获取需要的变量定期清理缓存文件考虑使用 Zarr 格式存储长期数据计算优化使用 FastHerbie 进行批量处理并行化多个时间步的下载使用 Dask 处理大型数据集常见问题解答Q: Herbie 支持哪些数据格式A: 主要支持 GRIB2 格式这是气象领域最常用的二进制数据格式。通过 xarray 和 cfgrib 后端数据会自动转换为 NetCDF-like 的 xarray 数据集。Q: 如何处理大型数据集A: 推荐使用子集下载功能只获取需要的变量和区域。对于超大型数据集可以使用 FastHerbie 的批量处理功能并结合 Dask 进行分布式计算。Q: Herbie 与直接使用 wget 或 rclone 有何不同A: Herbie 提供了更高级的抽象层包括智能数据源选择、子集下载、自动格式转换等功能。虽然 rclone 也是强大的工具但 Herbie 专门为气象数据优化提供了更便捷的 API。Q: 如何贡献代码A: Herbie 是开源项目欢迎通过 GitHub 提交问题报告、功能请求或拉取请求。项目的主要开发在 核心源码 目录下进行。总结Herbie 彻底改变了气象数据获取的方式将复杂的数据下载流程简化为几行 Python 代码。无论你是进行学术研究、业务预报还是个人项目Herbie 都能提供稳定、高效的数据访问服务。它的主要优势包括智能化数据源管理自动从多个云服务商寻找最佳数据源灵活的数据获取支持完整文件或变量子集下载无缝的数据处理直接输出 xarray 数据集便于后续分析广泛的模型支持覆盖主流气象预报模型活跃的社区支持持续更新和维护开始你的气象数据分析之旅吧安装 Herbie探索丰富的气象数据世界让你的研究和工作更加高效。专业提示对于生产环境建议结合使用 Herbie 的 Python API 和命令行接口创建自动化的数据管道确保数据的及时更新和处理。【免费下载链接】HerbieDownload numerical weather prediction datasets (HRRR, RAP, GFS, IFS, etc.) from NOMADS, NODD partners (Amazon, Google, Microsoft), ECMWF open data, and the University of Utah Pando Archive System.项目地址: https://gitcode.com/gh_mirrors/her/Herbie创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考