ECMWF软件战略和路线图译注:2.3 数据编解码库
本文为《论文阅读:ECMWF软件战略和路线图2023-2027》的译注
原文
译注段落:2.3 数据编解码库
译注
现状
模式数据主要分为分为模式输入的观测资料数据和模式输出的格点数据两大类。 CEMC 在数据编解码方面开展了持续的研发,模式输出的格点数据已统一编码为 GRIB2 格式,并正在开展观测资料格式统一相关工作。
格点数据
CEMC 格点数据编解码的核心工具是具有十多年开发历史的 GRIB 编解码工具库 grib-util。 该工具库已应用到所有以 GRAPES 模式为核心的业务系统中,用于每天制作 CMA 天气预报模式 GRIB2 格式的数据产品。
grib-util 由 Fotran 编写,提供 Fotran 库、命令行工具。 在早期版本,grib-util 库使用 ECMWF 开发的 GRIB-API 实现对 GRIB2 格式的编解码。 需要使用 GRIB-API 的 definition 表格定义文件,以及一个用于创建 GRIB2 消息的样例文件 cma.grib2。 在 2023 年发布的最新版本 V10.0 中,grib-util 首次摆脱对 GRIB-API 的替代,形成了具有完全自主知识产权的模式产品编解码库。 新版本内置了 JPEG2000 编解码库,也不再依赖 GRIB-API 需要的样例文件和定义文件,更方便使用。 目前,新版 grib-util 已全面应用到新一代超算上部署的业务系统中,并随着超算平台切换而实现业务应用。
GRIB / GRIB2 编解码是气象数据编码的热门领域,诞生了众多的研发成果。
笔者了解到的 GRIB/GRIB2 开源库有三种:
- ECMWF 的 ecCodes / GRIB_API
- NOAA-EMC 的 wgrib2 / g2 / g2c / grib_util 等 [1]
- UCAR UNIDATA 的 NetCDF Java 库
CEMC 业务系统中使用 ecCodes、wgrib2、grib_util 提供的命令行工具处理 GRIB2 数据。
笔者也查阅了一些涉及 GRIB2 编解码的专利,这些专利侧重对现有 GRIB2 格式数据进行二次加工,通常利用上述开源库实现 GRIB2 数据的编解码。
- 中国辐射防护研究院. 一种提取GRIB码数据的方法及系统:CN201811441417.6[P]. 2019-04-19. https://patents.google.com/patent/CN109656712B/zh
- 上海眼控科技股份有限公司. 气象数据处理方法、系统、电子设备及存储介质:CN201911225012.3[P]. 2020-05-05. https://patents.google.com/patent/CN111103635A/zh
- 国家气象信息中心(中国气象局气象数据中心). 一种气象模式数据解码处理方法:CN202310051735.6[P]. 2023-04-25. https://patents.google.com/patent/CN116010525B/zh
- 国家海洋环境预报中心. 一种海洋气象数值预报产品的处理方法、装置及电子设备:CN202310214711.8[P]. 2023-06-09. https://patents.google.com/patent/CN116244265B/zh
目前国内气象领域的 GRIB 数据处理开源库都是对开源库的二次封装,尚未看到成熟的开源 GRIB 编解码库。 不过,CEMC 的 grib_util 库正在通过国省统筹研发渠道进行推广,有望成为行业内的下一个标准 GRIB 数据编解码库。
观测数据
数据编解码层的另一个工具是用于从 CMADaaS 检索观测资料的工具库 get-cmadaasdata。 该工具使用 Fortran 编写,是对 CMADaaS MUSIC 接口 Fortran SDK的封装。 该软件最早通过工程项目由项目承建公司开发,由 CEMC 前身 NWPC 维护,并通过后续工程项目支持进行功能扩展和完善。
在 CEMC 成立后,该工具的维护主体从研发部门逐步转移到译者所在的业务部门,也逐步带来了维护成本的显著上升,也坚定了译者对核心业务软件自研的认识。 软件更新需要首先验证结果的正确性,在缺少自动测试而必须人工验证的情况下,而如果开发者无法独立进行验证,则会因为需要协调专业人员进行验证而导致开发成本显著增加。 部门也尚未找到完善的更新维护方案,当然原因比较复杂,这里仅从译者自身角度出发来尝试说明一些问题。 最重要的一点是我不会 Fortran 编程,工作重点是开发 Python 工具软件,所以缺乏足够的动力仅仅因为维护现有工具类软件而去学习一门全新的编程语言; 另外,我在工程项目的整个周期中都没有参与其中,对该工具的技术路线也完全没有兴趣,也就没有必要在工程项目结束后接手“遗留软件”的后续维护工作。 正如本篇技术报告多次提到的维护成本问题,依赖项目承建方开发的软件一定要考虑后续维护的问题,不能只停留在应该做什么这一层,而需要进一步考虑怎么做的问题。 当然,作为部门承担的任务,get-cmadaasdata 目前也在持续维护中。 不过,部门已经开始使用 Python 重新编写观测资料检索工具库,并计划完全替代 Fortran 版本的 get-cmadaasdata,从而解决这一技术债务。
计划
参考文献
[1] Hartnett E, Ator J, Lei H, et al. NCEPLIBS GRIB and BUFR Libraries: Maintaining and Modernizing NOAA’s Libraries for WMO Data Formats[J]. AGU23, 2023.
