扩展你的气象数据源:Herbie自定义模型模板插件开发完整教程

发布时间:2026/8/23 14:44:14
扩展你的气象数据源:Herbie自定义模型模板插件开发完整教程 扩展你的气象数据源Herbie自定义模型模板插件开发完整教程【免费下载链接】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 气象数据下载工具专门用于从 NOMADS、亚马逊/谷歌/微软大计划、ECMWF 开放数据与犹他大学 Pando 档案系统等数据源下载 HRRR、RAP、GFS 等数值天气预报数据集。内置模板找不到你的数据源本教程将带你用「模型模板插件」一步扩展 Herbie 的气象数据源支持私有内网 GRIB2 数据与本地模型输出。一、什么场景需要自定义模型模板Herbie 内置了 20 多个主流模型模板HRRR、RAP、GFS、IFS、RAP 等源码集中在 src/herbie/models/ 目录。以下情况你就需要一个自己的模板 本地有 WRF/MPAS 等模型输出的 GRIB2 文件想用 Herbie 统一读取 私有网络上有 GRIB2 数据服务希望按需取子集⚙️ 想覆盖或微调某个现有模型模板的行为 新模板还在试验阶段先自用再考虑回馈社区官方对扩展的说明可参考 docs/user_guide/tutorial/extend.md。二、模板类解剖5 个必需属性一个 Herbie 模型模板就是一个 Python 类template()方法中必须定义 5 个属性属性说明DESCRIPTION字符串模板描述DETAILS字典产品文档等补充信息PRODUCTS字典{产品代码: 说明}SOURCES字典{数据源名: URL 模板}LOCALFILE保存时的本地文件名通常是f{self.get_remoteFileName}可选属性IDX_SUFFIX索引文件后缀默认[.grib2.idx]与IDX_STYLEwgrib2或eccodes。以 RAP 模板 src/herbie/models/rap.py 为例一个多数据源模板长这样class rap: For NOMADS and Big Data Program RAP archive def template(self): self.DESCRIPTION Rapid Refresh (RAP) from NOMADS and Big Data Program self.PRODUCTS { awp130pgrb: CONUS Pressure levels; 13-km resolution, wrfprs: Full domain Pressure Levels; 13-km, } self.SOURCES { aws: fhttps://noaa-rap-pds.s3.amazonaws.com/rap.{self.date:%Y%m%d}/rap.t{self.date:%H}z.{self.product}f{self.fxx:02d}.grib2, nomads: fhttps://nomads.ncep.noaa.gov/pub/data/nccf/com/rap/prod/rap.{self.date:%Y%m%d}/rap.t{self.date:%H}z.{self.product}f{self.fxx:02d}.grib2, } self.LOCALFILE f{self.get_remoteFileName}关键点URL 用 f-string 编写可引用self.date、self.product、self.fxx等参数Herbie 会自动填充生成最终下载地址。下载时 Herbie 会按数据源URL.idx寻找 wgrib2 风格的索引文件来取子集索引文件的字段结构如下取子集正是靠它编写前请满足三个前提数据在 HTTP 服务器上可访问、文件名规则可预测日期/模型名/时效/产品编码规律一致、有 ASCII 索引文件支持子集下载。三、两种扩展路线怎么选路线 1插件模板推荐 ⭐插件是一个独立 Python 包。Herbie 启动时会自动扫描所有已安装插件的入口点并加载模板核心逻辑在 src/herbie/models/init.pyfor ep in entry_points(groupherbie.plugins): cls ep.load() globals()[cls.__name__] cls这意味着只要你的包声明了herbie.plugins入口点并暴露模板类安装后import herbie即可自动注册导入时终端还会打印Herbie: Added model 你的模板名提示。适合本地数据、私有数据源也方便独立发布。路线 2公开模板贡献上游把模板类文件加进herbie/models目录并在herbie/models/__init__.py中导入再向项目提交合并请求让所有用户都能用上你的模板。四、实战接入本地 WRF 数据的最小模板官方提供了专门的本地数据模板参考文件 src/herbie/models/local.py它展示了如何用路径模板接入本地 GRIB2 文件class model1: def template(self): self.DESCRIPTION Local GRIB Files for model1 self.PRODUCTS { prs: 3D pressure level fields, sfc: Surface level fields, } self.SOURCES { local_main: f/path/to/your/model1/templated/with/{self.model}/gribfiles/{self.date:%Y%m%d%H}/the_file.t{self.date:%H}z.{self.product}.f{self.fxx:02d}.grib2, } self.LOCALFILE f{self.get_remoteFileName}注意SOURCES的键名以local开头Herbie 会识别为本地路径而不是远程 URL。索引文件默认与数据文件同目录、后缀.idx没有索引也没关系只要 PATH 中安装了 wgrib2Herbie 可以即时生成。之后像使用内置模型一样调用即可import herbie H herbie.Herbie(2021-09-21, modelmodel1, fxx6) H.download(fxx6) print(H)五、避坑清单类名不要重复模型模板类名全局唯一Herbie(modelxxx)就是按类名查找模板的索引后缀要配齐非标准命名时修改IDX_SUFFIX例如 src/herbie/models/rap.py 中历史数据用了[.inv, .grb2.inv, grb.inv]参数要传递URL 中用到的自定义变量如self.nest记得作为参数传给Herbie(...)数据源优先级SOURCES中多个键会按顺序尝试第一个命中的地址即被使用废弃方式警告把模板放在~/.config/herbie/custom_template.py的旧方式已被弃用官方明确建议迁移到插件方案六、总结自定义模型模板插件是扩展 Herbie 气象数据源的标准方式模板类只需写对DESCRIPTION、PRODUCTS、SOURCES等 5 个属性打包声明herbie.plugins入口点后Herbie 自动发现并加载。无论是私有内网数据还是本地 WRF 输出一套模板即可接入。模板设计思路可继续研读官方扩展文档 docs/user_guide/tutorial/extend.md 与 src/herbie/models/README.md动手之后你的 Herbie 数据源版图就会大不一样【免费下载链接】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),仅供参考