视界:从GRIB1迁移到GRIB2-面向未来准备ECMWF模式输出

目录

本文翻译自 ECMWF 在 2023 年 4 月发表的一篇通讯文章,介绍 ECMWF 正在开展的从 GRIB1 迁移到 GRIB2 的相关工作。 这一篇非常好的 GRIB2 数据文件格式入门介绍材料。

Migration from GRIB1 to GRIB2: preparing ECMWF model output for the future by Robert Osinski Matthew Griffith Sébastien Villaume in ECMWF Newsletter Number 175 - Spring 2023 (Published in April 2023)

正文

2022 年,ECMWF 开始一项多年任务,将其日常业务数据输出从文件格式 GRIB 第 1 版 (GRIB1) 迁移到 GRIB 第 2 版 (GRIB2)。 该项目是对 ECMWF 十年战略 2021-2030 中规定的对流尺度分辨率全球数值天气预报 (NWP) 呼吁的响应的一部分。 由于 GRIB1 网格定义的限制,此类分辨率需要 GRIB2 而不是 GRIB1。 几年来,ECMWF 已经使用 GRIB2 格式生成综合预报系统 (Integrated Forecasting System, IFS)的垂直模式层次输出。 本文概述了所有输出从 GRIB1 到 GRIB2 的过渡过程。

背景

GRIB1 创建于 1985 年,并在 20 世纪 90 年代初普遍使用。 它的设计目的并不是为了适应解决对流尺度现象(1-4公里)所需的水平网格分辨率,而对流尺度分辨率是十年战略中所要求的,并将在ECMWF 参与的欧盟“Destination Earth”倡议的数字孪生中使用。

GRIB1 还有其它局限和缺点。 最重要的是,世界气象组织 (WMO) 已在十多年前弃用 GRIB1,转而采用 GRIB2,而且自 2016 年以来,WMO 代码手册 (WMO Manual on Codes) 中就不再引用 GRIB1 (WMO,2022)。

GRIB1 的其它局限包括:

  • 最大垂直分辨率为127层;ECMWF 在 2011 年达到该限制,这就是为什么在实施 Cycle 37r2 (137 垂直层次)期间将垂直模式层次的数据迁移到 GRIB2 的原因。
  • GRIB1 仅允许定义 128 个不同要素,并且没有描述现代 NWP 输出所需的元数据,例如集合和概率。
  • GRIB1 没有官方的内置机制来扩展其元数据。 多年来,ECMWF 通过 section 1 中允许的本地部分扩展了有限的 GRIB1 元数据,并引入引入集合成员和集合大小。 这些扩展的缺点是它们没有得到 WMO 的认可,因此不是官方数据格式的一部分。

GRIB2 解决了这些限制,并带来重要新功能:

  • 支持垂直分辨率超过 127 层:如上所述,当模型升级到使用 137 个垂直层次时,这是一个关键功能
  • 支持亚公里尺度的水平分辨率 :ECMWF 十年战略中计划的分辨率提升完全在这个范围内
  • 支持数百万种不同的参数:现在可以更加自由地对 NWP 要素进行编码
  • 支持集合、再分析和后处理产品:这解决了描述带有上下文的产品时最常见的元信息限制
  • 支持多种压缩方法:对于在更高模型分辨率下增加数据量至关重要
  • 支持丰富的元数据:可以实现更具规范性的变量描述并提高可发现性和索引
  • 模板的引入:允许在需要附加元数据时持续集成新模板

以上各条描述了 GRIB2 格式中已实施的一些基本设计变更,其中一些如图 1 所示。 我们将在下面更详细地讨论这些内容。

图1 GRIB1 和 GRIB2 文件格式的一些不同点,图片来自原文

GRIB2 设计哲学

GRIB2 的新功能和改进的设计允许提供更具自我描述性的数据格式,并改善用户体验。 在以上几点基础上,GRIB2 包含以下内容:

  • 水平分辨率:以前仅限于毫度 (millidegree),现在可以编码到微度 (microdegree),从而允许分辨率低于公里级。 足以支持 ECMWF 根据计划在未来十年提高分辨率对数据进行编码。
  • 要素:实际上可以定义的要素总数是无限的。 在GRIB2中,要素不再简单地由代码表中的单个条目表示,而是由各种代码表中的条目的组合表示。 因此,元数据键的最小数量现在是一个三元组:discipline,parameter category,parameter number。 层次结构的顶层给出了定义参数的学科,例如气象学 (meteorology)、水文学 (hydrology) 或海洋学 (oceanography)。 然后,在每个学科内,要素被组织成类别。 例如,在“气象学”学科中,人们可以找到“动量 (momentum)”、“温度 (temperatures)”或“短波辐射 (short-wave radiation)”等类别。 最后,在类别中选择一个变量。 对于复杂的参数,需要额外的键。 GRIB2 section 2 称为 local section,保留用于编码变量的中心特定的本地元数据。 ECMWF 使用 local section 保存用于气象档案和检索系统 (Meteorological Archival and Retrieval System, MARS) 的键,例如 class 和 stream。 它的优点是消息本身一定符合 GRIB2 数据格式的标准。
  • 压缩:数据表示部分 (data representation section) 提供了多种压缩方法。 随着模型分辨率的提高,存档数据的大小将显着增加,压缩有助于减少存档数据的大小。 近日,空间数据系统咨询委员会 (Consultative Committee for Space Data Systems, CCSDS) 开发的一种高压缩比的快速无损压缩算法已在 ECMWF IFS 的 GRIB2 中实现,该功能将在 2023 年后续 IFS Cycle 48r1 的实现中启用 (Betke et al., 2022)。
  • 丰富的元数据:描述给定参数的元数据集很丰富,可以根据 FAIR 数据原则实现更好的变量描述并提高可发现性和索引。 在迁移到 GRIB2 项目中,我们已经并将开发新的模板来扩展元数据,以实现对我们所有产品的编码。
  • 模板:GRIB2 消息的网格部分 (grid section)、产品部分 (product section) 和数据表示部分 (data representation section) 现在可以进行模板化,从而支持在需要其他元数据时持续集成新模板。 每年可以通过代码手册的修订程序(称为“Fast Track procedure”)向 WMO 请求两次模板扩展。 随后,WMO 将在大约六个月的时间内处理该请求,之后 WMO 将发布修正案并准备投入业务应用。

为了帮助理解 GRIB2 背后的方法,最好看一个示例。 我们将比较“过去 24 小时内 2 米最高温度”的 GRIB1 和 GRIB2 要素编码的元数据,如表 1 所示。

表1 GRIB1 和 GRIB2 中描述气象要素的元数据比较。键的名称与 ecCodes 中使用的名称相对应。ecCodes 是一个用于解码和编码 WMO 格式消息的 ECMWF 包。键所取的值后面括号中的解释是引用的表中的条目。 例如,表中表示 “Fixed surface types and units” 的条目 103 对应于 “height above ground in metres”。表格来自原文

GRIB2 元数据遵循的策略可以概括为 “what, where, when, and how” 方法。 表 1 中使用颜色标注键对此进行说明,可以这样理解:

  • “正在编码什么?” 这是变量的基础或核心,并且始终由三个键定义(红色):discipline,parameterCategory,parameterNumber。 在本例中,我们有学科 0(气象 meteorology)、要素类别 0(温度 temperatures)和要素编号 0(温度 temperature)。 如果要素不需要更多元数据,我们可以到此为止。 然而,在绝大多数情况下,我们会使用额外的键来扩展参数的范围:
  • “要素在哪里定义的?” 这是指要素有效的垂直空间范围或空间位置(紫色)。 在本例中,它位于一个特定的固定高度 —— 离地表 2 米。
  • “要素何时定义?” 这是指要素有效或被处理的时间范围或时间点(绿色)。 在本例中,要素在 24 小时内执行处理。 它与 “how” 键相结合来指示我们执行的处理类型。
  • “要素在时间上是如何处理的?” 这个键告诉我们如何在时间上统计处理要素(橙色)。 在本例中是 “maximum”,与 “when” 键相结合,提供过去 24 小时内的最大值。

这种键值类型设计非常强大和灵活,可以直接直观地映射到 MARS 中使用的关键字。

挑战

迁移到 GRIB2 带来了一些挑战。

历史数据。GRIB 格式与中心的数据流紧密耦合,我们的许多工具都旨在利用 GRIB 数据格式。 虽然大多数工具以瞬时方式使用 GRIB 数据并且只需要迁移一次,但 MARS 归档必须在未来几十年内继续正确处理 GRIB1 数据。 截至本文撰写时,MARS 在磁带上存储了超过 200 PB 的 GRIB1 数据。 ECMWF 将此数据转换为 GRIB2 以完全弃用 GRIB1 是不现实的,因为这需要大量的时间和资源。 相反,我们计划继续按原样提供这些数据,但将提供一个即时转换为 GRIB2 的工具。

业务实施。迁移的另一个具有挑战性的方面是在业务中实施迁移。 这将需要上游的准备,并应以技术周期的形式实施(尽管尚未决定)。 GRIB2 格式测试数据将在至少在实施前六个月发布,以便我们的成员国和合作国以及其他用户能够相应地调整其工作流程。

此次迁移的最大挑战将是处理 GRIB1 生命周期中积累的遗留数据格式标准。 MARS 语言和 GRIB1 自 20 世纪 90 年代初就已存在。 多年来,两者都得到了扩展,以适应在设计阶段无法预见和计划的新型数据。 这些是 ECMWF 现在常见的数据类型,例如集合、季节性预报、后报、概率、波浪、海洋学、水文学和陆面模式。 可以理解的是,这些造成了多年来积累的技术债务,使得迁移的某些方面变得非常棘手。

在某些情况下,直接迁移是不可能的,需要进行一些重新设计。 例如,GRIB2 将参数的单位规定为特定的 SI 单位,并且不允许替代的等效单位。 一个很好的例子是 IFS 生成的降水参数以“meters of water”为单位,而 GRIB2 期望参数以 kg m-2 为单位表示。 如果我们改用 WMO 标准单位生成降水数据,则将在归档中造成不连续性:尝试检索过渡期间数据的用户将收到部分旧单位数据和部分新单位数据。 为解决这个问题,我们必须定义两组降水参数,一组使用标准 WMO 单位,另一组使用传统单位。 缺点是第二组是本地定义的,没有得到 WMO 的认可。 然后,为了方便起见,我们可以生成并归档这两组参数,或者我们只归档本地参数并提供到 WMO 参数的即时转换。

时间线

迁移路线图已经起草(见图 2)。 工作量和变更规模不允许一次性迁移所有内容。 确定优先事项并制定工作计划时考虑了几个因素:

  • 任何具有新数据类型 (GRIB1 中不存在) 的新数据集应完全使用 GRIB2 格式生成。 海洋再分析 ORAS6 和实时 OCEAN6 就是这种情况。 2018 年至 2022 年间,EFAS (European Flood Awareness System)、GloFAS (Global Flood Awareness System) 和 CEMS-Fire (Fire Copernicus Emergency Management System) 均按照这一原则发布作为 GRIB2 数据集。
  • 任何替换现有数据集 (使用 GRIB1 生成) 的新数据集也应完全使用 GRIB2 生成。 我们指的是具有明确定义的开始和结束的任何数据集。 大气成分再分析 EAC5 (取代 EAC4)、下一个全球再分析 ERA6 (取代 ERA5) 和新的季节性预报系统 SEAS6 (取代 SEAS5) 都属于此类。
  • 任何新参数只能在 GRIB2 中定义。这是过去五年的常见做法,也是除了垂直模式层次参数之外,一些地面参数或非模式层次的参数使用 GRIB2 编码的主要原因。 这是可以接受的,因为参数是新的,因此不会在工作流或 MARS 归档中引入行为变更或不连续性。 最近添加参数的一个示例是新的热舒适指数,例如 UTCI (通用热气候指数)。
  • 我们现有的由业务系统生成的 IFS GRIB1 参数将最后迁移到 GRIB2,并在实施之前进行长时间的测试。

图2 该迁移路线图表明何时将 GRIB2 引入 ECMWF 的所有天气预报业务 (从 IFS Cycle 51r1 开始),以及何时将使用 GRIB2 的各种其他服务投入业务。图片来自原文

未来迁移过程

本工作发布的下一个 GRIB2 数据集是海洋再分析 ORAS6。 该数据集和 OCEAN6 的工作于几年前开始,独立于本迁移项目,这是因为模式使用了非结构化海洋网格(ORCA 网格),无法在 GRIB1 中表示。 这使该数据集自然而然地选择 GRIB2 数据格式。 海洋网格现已在 GRIB2 中实现,并得到 ecCodes 2.20.0 及更高版本以及 ECMWF’s Meteorological Interpolation and Regridding (MIR) 软件包的全面支持。 ORAS6 和 OCEAN6 计划于 2023 年下半年业务运行。

下一个主要里程碑涉及基于 IFS Cycle 49r1 的数据集,即 ERA6、SEAS6 和 EAC5。 去年年初,我们对这些项目 GRIB2 所需的所有参数和概念列出了详尽的清单。 由于两个主要因素,EAC5将需要数百个新参数:

  • 引入许多新的化学物质和气溶胶。 对于每类物质,我们需要一套完整的物理可观测值:<species> 的湿沉积、<species> 的干沉积、<species> 的质量混合比等。
  • 现在,排放量由排放部门解决,从而产生更多参数:<sector> 的 <species> 排放。 典型行业包括农业、工业、道路和火山。

幸运的是,我们可以使用 GRIB2 中丰富的元数据,通过新模板灵活地扩展元数据。 现在可以通过单独的元数据键指定化学物质或气溶胶以及排放源。 这一新方案在 IFS-COMPO (IFS composition) 中的实现正在顺利进行。

ERA6 还需要几个新的实现来支持其以 GRIB2 格式发布。 这将是 GRIB2 中第一个包含波浪参数的数据集,包括 2D 波谱(方向和频率)。 这些光谱无法用现有模板在 GRIB2 中表示。 对于波谱和波浪参数,我们于 2022 年 11 月向 WMO 提交了 6 个新模板。 此外,ERA6 还将提供许多新参数,例如新的水和能源预算参数。 这些参数与 ERA5 中已使用的参数一起,已按照 WMO 审批流程进行审查。 ERA6 的模板和参数刚刚被接受,并将于 2023 年 5 月在 WMO 代码手册中发布。

我们还致力于迁移元数据模型的其他方面。 最近的发展也将用于“Destination Earth”计划,包括新的雪、土壤和海冰多层方案。 多层雪方案和相应的多层 GRIB2 输出已引入到 IFS Cycle 48r1 中。 我们还研究了如何对极端预报指数 (EFI)、尾移 (SOT) 和基于气候分布的异常对元数据进行编码,创建了 4 个新模板来对它们进行编码。 最后,我们研究了一种对与波长相关的光学参数的元数据进行编码的方法,并提出了 4 个新模板来实现这一目标。 这些模板对于与模拟卫星图像相关参数以及用于生成 IFS 输出 “space view” 图像的辐射参数非常有用。

未来开发

我们目前正在设计模板,以实现基于图块的参数 (tile-based parameters) 编码。 陆面模式的最新发展利用了将网格划分为具有自己的属性和模式物理过程的“图块”或“块”。 典型的图块类别包括高植被、低植被、海洋、湖泊、城市土地和裸地。 然而,图块方案在所选图块的粒度方面也可以更加详细,包括 20 多种不同类型的切片,涵盖全球不同的植被类型。 这种划分对于 2 米温度等参数特别有用,因为根据测量的表面,该参数有很大的变化。 例如,通过对与之相关图块上的温度进行编码,可以将城市地区、湖泊、海洋和森林的影响全部考虑在内。 我们正在积极与欧洲各个气象部门的模式团队合作,起草可供所有主要欧洲陆面模式使用的模板。

最后,用于编码新型水平网格的模板,即 HEALPix (Hierarchical Equal Area isoLatitude Pixelization) 网格,也正在开发中。 这种网格最初是为宇宙学应用而设计的,最近由于其有吸引力和多功能的特性而受到广泛关注。 该模板连同图块模板将在下一个 WMO 快速通道程序中提交给 WMO 进行验证。

期望的用户影响

从 GRIB1 到 GRIB2 的迁移类似于从 Python 2 到 Python 3 编程语言的迁移:需要变更工作流,从修改脚本到改变现有实践。 某些功能或参数也将需要被弃用。 然而,重要的是,这不需要完全重写应用程序和工具。 与 Python 2 和 Python 3 的情况一样,我们预计这两个数据流生态系统将共存数年。 将于明年实施的 IFS Cycle 49r1 可能是最相关的例子。 对于 ERA6 和 Destination Earth,该版本应该能够在传统模式下运行,但也应该能够在仅 GRIB2 模式下运行。 我们正在积极研究允许这种切换的技术解决方案,而不是维护 ecCode 的并行发布版本。

用户通过 ecCodes 与 GRIB2 消息的交互将与 GRIB1 中的相同,即主要通过设置/访问与版本无关的键:dataDate、dataTime、paramId、typeOfLevel 等。 但是,对于某些参数,GRIB2 中使用的表示形式和访问方法将会发生变化。 以下是此类更改的最常见示例:

  • 有些参数在 GRIB2 中会获得不同的 paramId。 “soil temperatures level 1/2/3/4” 就是一个很好的例子。 在 GRIB1 中使用四个单独的 paramId 表示,全部位于称为“surface”的唯一层次上。 在 GRIB2 中将使用 4 个离散土壤层次上的唯一 paramId 表示。
  • GRIB2 中的 paramId 可能需要补充额外的键,例如光学参数的波长或指定化学物质/气溶胶的 chemId。
  • 某个参数的预先存在 GRIB2 表示可能会被弃用。 这可能是因为表示错误、不完整或由于其他技术原因。 在这种情况下,仍然可以读取和解码此类参数,但 ecCodes 在将参数写入文件时将使用新的表示形式。

迄今为止,开发的重点是对用户影响有限的变更。 然而,我们现在正进入项目的新阶段,我们正在处理对用户影响更明显的更大变更。 这些将在 ecCodes 发行说明中并通过其他适当的沟通渠道明确发布(见下文)。 因此,建议始终使用最新版本的 ecCodes,以避免工作流迁移中出现问题并从最新功能中受益。

MARS 对业务数据的请求也将受到迁移 GRIB2 的影响,因为迁移在实施时不可避免地会造成不连续性。 想要检索与转换期间数据的用户可能需要根据感兴趣的参数使用单独的检索请求。

我们仍在研究处理这一转换的最佳方法,选项包括:

  • 对用户端的影响最小,但代价是增加应用程序端更多的技术债务;
  • 双方妥协的平衡做法;
  • 采用颠覆性方法,清除尽可能多的技术债务,并为 MARS 的长期发展做好准备。

表 2 列出了 MARS 请求的几个具体示例。

表 2 迁移 GRIB2 之前和之后 MARS 请求的一些示例。图片来自原文

保持通知

我们鼓励用户关注迁移 GRIB2 的进度。 为此,建立了一个邮件列表:mtg2@lists.ecmwf.int。 此列表旨在用于通知用户迁移的进度和更改。 还邀请用户继续查看 ecCodes 发行说明,以大致了解变更和错误修复,因为许多变更和错误修复可能与迁移无关。 如需订阅,请发送电子邮件至 sympa@lists.ecmwf.int,主题为 “SUBSCRIBE mtg2@lists.ecmwf.int”。 要报告与迁移 GRIB2 相关的问题或对此有疑问,请按照正常程序并通过服务台联系用户支持。

将通过邮件列表分发的信息以及更多详细信息、数据和代码示例也可以在 MTG2 Confluence 网页 (https://confluence.ecmwf.int/display/MTG2US/Migration+to+Grib+2+-+User+Space+Home) 上找到。 您可以通过单击该页面上的关注按钮来了解任何更新和变更。

结论

迁移到 GRIB2 是实现 ECMWF 十年战略中设定目标的重要一步。 当然,迁移需要对用户和各种 ECMWF 工作流内部进行调整。 然而,我们必须做出这一改变来支持 ECMWF 未来的数据需求。 此外,迁移还将带来许多优势,例如更详细的元数据、更有效的数据压缩以及更一致的参数编码。 我们邀请用户通过上一节中提到的电子邮件列表和网页随时了解迁移 GRIB2 的情况。

进一步阅读

Betke, E., T. Quintino, S. Smart & T. Wilhelmsson, 2022: Impact of GRIB compression on weather forecast data and data-handling applications. ECMWF Technical Memorandum, No. 900. https://www.ecmwf.int/en/elibrary/81320-impact-grib-compression-weather-forecast-data-and-data-handling-applications.

World Meteorological Organization (WMO), 2022: Manual on Codes – International Codes, Volume I.2, Annex II to the WMO Technical Regulations: Part B – Binary Codes, Part C – Common Features to Binary and Alphanumeric Codes, WMO No. 306. https://library.wmo.int/?lvl=notice_display&id=10684#.

注意:正文结束,以下部分为译者自行添加。

讨论

笔者之前一直很疑惑 ECMWF 明明在 GRIB2 格式编解码上几乎成为业界标准,为什么下载 ERA5 等数据都是 GRIB1 格式的。 看了这篇文章后只能感叹 ECMWF 在保持业务产品连贯性上的良苦用心。 对于 CEMC 来说,好消息是 GRAPES 系列模式从业务化运行伊始就提供 GRIB2 格式的产品,坏消息是如果未来需要从 GRIB2 升级到 GRIB3 格式,也同样需要经历相似的过程。 CEMC 模式业务产品的另一个特点是没有类似 MARS 的数据归档系统,产品全部通过文件的形式对外提供,同时 CEMC 不负责直接对 CMA 外部用户提供服务,所以更新产品格式前仅需要确保有限几个用户的系统对接正常就可以。 当然,目前 CMADaaS 从一定程度上扮演了 MARS 的角色,未来也一定会建立基于要素的数据归档系统,在后续业务系统升级过程中可以借鉴 ECMWF 的做法,提高对模式产品用户的支持力度。

笔者关注本文的另一个点就是 ECMWF 对 WMO 标准的重视,积极向 WMO 推广自己对 GRIB2 格式的扩展定义。 ECMWF 对 GRIB1 格式进行了一定的“魔改”,但这些扩展没有成为 WMO 官方的认可。 不符合标准的数据格式很难具有普适性,应用范围有限。即使作为业务 GRIB 编解码工具重要开发者的 ECMWF,也在借助 WMO 渠道推动自定义的参数、模板进入到 GRIB2 标准中。 CMA 在 2017 年发布的气预函〔2017〕39号文件附件中提供了关于 GRIB 格式的应用指南,但后续没有随着模式升级而进一步更新。 CEMC 在每次业务系统升级时都会提供 GRIB2 产品的要素清单,但尚未对外提供要素编码表,CMA 也缺乏统一的 GRIB 格式要素编码规范。 比如等压面层温度名称在 CEMC 内部使用与 ecCodes 一致的 t,在 CEMC 要素清单中使用与 wgrib2 一致的 TMP,而在 CMADaaS 中使用与行标《气象资料分类与编码(QX/T 102-2009)》相同的 TEM。 同时,CEMC 也缺乏对 WMO GRIB2 格式标准的影响力,自定义的部分变量无法被 ecCodes、wgrib2 等开源 GRIB 格式编解码库自动识别。 不过笔者观察到最近几年 CMA 明显加强对标准工作的重视程度。

  • 2022 年 6 月发布《气象标准化改革工作方案》(气发〔2022〕62号,[2]),强调“管业务必须抓标准,管行业必须用标准”,强化气象标准的制度属性,探索建立气象标准国际化工作机制,促进气象领域国内标准与国际标准的对接 [1]。
  • 2023 年 4 月发文调整国家级气象标准化主要工作职责分工,细化规定了政策法规司、分管职能司、直属单位和干部培训学院的职责分工,体现了气象标准化管理向中国气象局政策法规司统筹协调、中国气象局各职能司分头负责的转变 [3]。
  • 2023 年 10 月发布新修订的《气象标准制修订管理细则》(气办发〔2023〕51号,[4])。
  • 2024 年 1 月发布《支撑气象高质量发展标准体系建设指导意见》(气发〔2024〕11号,[6]),在气象信息标准子体系中制定包括数据格式在内的数据资源标准,提出“到2027年,…,标准实施应用和制度属性得到进一步强化”,“强调各级气象主管机构要加强组织领导,…,压实多方协同推动责任” ,“加强对标准化任务落实情况的动态评估” [5]。

随着对标准化工作的逐步重视,未来数值预报模式 GRIB 格式产品数据必定会进一步标准化和规范化。

最后一个关注点则与笔者一贯鼓吹的工具软件开源思想有关,即一款广泛使用的开源软件工具能极大提高在社区内的话语权。 ECMWF 开发了用于 GRIB 和 BURF 格式编解码开源工具 ecCodes,提供了 eccodes-python 和 cfgrib 等 Python 接口。 ecCodes 可以极大降低格式切换带来的技术对接需求,用户可以利用 ecCodes 提供的兼容性来轻松应对 ECMWF 产品的变更,只需要少量代码能对接新格式的数据。 当用户使用了 ecCodes 后,也更容易接受 ECMWF 对 GRIB 格式的自定义扩展,从而进一步增强在 GRIB 标准制定方面的话语权。 一个类似的示例是 ecCodes 2.4.0 版本增加了对 GRIB3 格式的试验性支持,在发布说明中写到该功能是“为了加速向 WMO 提出标准的开发”。 CEMC 的业务系统中也使用了 ecCodes 及其前身 GRIB_API 来处理 GRIB2 数据,模式 GRIB2 产品使用基于 GRIB_API 开发的 grib_util 包生成。 在 2024 年度升级中,CEMC 即将使用具有自主知识产权的全新版本 grib_util 替代现有版本,重新实现底层编解码部分而不再依赖 GRIB_API,在 GRIB2 数据编解码方卖弄彻底摆脱对 ECMWF 的依赖。 grib_util 通过国省统筹研发机制和科创平台可以在行业内部分享,如果感兴趣欢迎咨询 CEMC 相关部门。 笔者也基于 ecCodes 的 Python API 接口封装了从 GRIB2 加载要素场的 Pyhton 接口库 cemc-oper/reki,并通过 GitHub 开源发布。 未来一个可行的方向是开发基于 grib_util 库的 Python 接口,使其成为支持多种编程语言的 GRIB 编解码工具。

参考

原文链接:

Migration from GRIB1 to GRIB2: preparing ECMWF model output for the future

Migration to GRIB edition 2 Information page

参考文献:

[1] 中国气象报社. 气象标准化改革工作方案印发 推动构建气象高质量发展标准体系. 2022-06-06. https://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/202206/t20220606_4883414.html

[2] 中国气象局. 中国气象局关于印发《气象标准化改革工作方案》的通知. 气发〔2022〕62号. 2022-06-01. https://www.cma.gov.cn/zfxxgk/gknr/wjgk/qtwj/202206/t20220606_4884554.html

[3] 中国气象报社. 中国气象局发文调整国家级气象标准化主要工作职责分工. 2023-04-03. https://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/202304/t20230403_5417498.html

[4] 中国气象局办公室. 中国气象局办公室关于印发《气象标准制修订管理细则》的通知. 气办发〔2023〕51号. 2023-10-09. https://www.cma.gov.cn/zfxxgk/gknr/wjgk/qtwj/202310/t20231011_5820244.html

[5] 中国气象报社. 中国气象局印发指导意见 加快构建支撑保障气象高质量发展标准体系. 2024-02-02. https://www.cma.gov.cn/2011xwzx/2011xqxxw/2011xqxyw/202402/t20240202_6053324.html

[6] 中国气象局. 中国气象局关于印发《支撑气象高质量发展标准体系建设指导意见》的通知. 气发〔2024〕11号. 2024-01-18. https://www.cma.gov.cn/zfxxgk/gknr/wjgk/qtwj/202401/t20240119_6014810.html