Python接口到ecCodes GRIB和BUFR解码器/编码器
项目描述
Python 3接口,通过ECMWF ecCodes库解码和编码GRIB和BUFR文件。
功能
读取和写入GRIB 1和2文件,
读取和写入BUFR 3和4文件,
支持所有现代版本的Python和PyPy3,
在大多数Linux发行版和MacOS上运行,ecCodes C库是唯一的系统依赖。
PyPI包可以不进行编译安装,但速度比原始的ecCodes模块慢两倍。
可选的编译步骤可以使代码速度与原始模块一样快,但需要推荐(最新)版本的ecCodes。
限制
Microsoft Windows支持尚未测试。
安装
从版本2.37.0开始,ecCodes Python绑定还提供了ecCodes二进制库,并遵循ecCodes二进制库的版本号。下面将详细介绍。
可以使用以下方式从PyPI安装此包
$ pip install eccodes
默认情况下,此安装将包含ecCodes二进制库(自版本2.37.0起),这意味着不需要外部ecCodes二进制库。如果您想使用外部ecCodes二进制库,在导入eccodes之前设置以下环境变量
$ export ECCODES_PYTHON_USE_FINDLIBS=1
如果设置了此变量,ecCodes的Python绑定将使用findlibs包来定位二进制库(findlibs是2.37.0版本之前使用的唯一机制)。
为了了解二进制库的搜索过程,在导入eccodes之前设置以下环境变量
$ export ECCODES_PYTHON_TRACE_LIB_SEARCH=1
您还可以安装一个不包含二进制库的ecCodes Python接口版本,在这种情况下,将像以前一样使用findlibs机制
$ pip install eccodes --no-binary eccodes
系统依赖性
Python模块依赖于ECMWF的ecCodes库。从版本2.37.0开始,该库与Python模块一起提供。如果您想安装和使用单独的二进制库(见上文),它必须在系统上安装,并作为共享库可用。
在MacOS上使用HomeBrew
$ brew install eccodes
或者如果您使用Conda管理二进制包
$ conda install -c conda-forge eccodes
作为替代方案,您可以按照以下https://confluence.ecmwf.int/display/ECC/ecCodes+installation中的说明安装官方源分发版
您可以通过运行简单的selfcheck命令来确保系统设置正确
$ python -m eccodes selfcheck Found: ecCodes v2.37.0. Your system is ready.
用法
有关用法,请参阅ecCodes的文档页面。
实验特性
快速绑定
要测试更快的CFFI API级别,出线模式,您需要ecCodes头文件。然后您需要将仓库克隆到与ecCodes源树相同的文件夹中,进行pip开发安装,并自定义编译二进制绑定
$ git clone https://github.com/ecmwf/eccodes-python $ cd eccodes-python $ pip install -e . $ python builder.py
要恢复到ABI级别,内联模式,只需删除编译后的绑定
$ rm gribapi/_bindings.*
项目资源
开发 |
|
下载 |
贡献
主仓库托管在GitHub上,测试、错误报告和贡献受到高度欢迎和赞赏
https://github.com/ecmwf/eccodes-python
请参阅CONTRIBUTING.rst文档以获取最佳帮助方式。
维护者
贡献者
请参阅参与此项目的贡献者列表。
许可协议
© 版权所有 2017- ECMWF。
此软件根据Apache许可证版本2.0许可,可在https://apache.ac.cn/licenses/LICENSE-2.0获得。
在应用此许可证时,ECMWF不会放弃因其作为政府间组织而享有的特权和豁免权,也不会服从任何司法管辖权。
eccodes-python的变更日志
2.38.1 (2024-09-26)
ECC-1923: ecCodes二进制轮次可能影响Python中的浮点计算
2.38.0 (2024-09-25)
ECC-1790: 添加 codes_get_offset
ECC-1899: 允许设置调试级别的 API 函数
查询库功能的函数
2.37.0 (2024-09-09)
将 ecCodes 二进制库捆绑到 PyPi 发行版中,适用于 Linux 和 MacOS
1.7.1 (2024-06-19)
np.Infinity 在 NumPy 2.0 版本中已被移除
1.7.0 (2024-02-26)
ECC-1761: 添加提取消息偏移量和大小的函数
ECC-1742: 添加仅克隆消息元数据的函数
1.6.1 (2023-10-02)
ECC-1693: 更新最低推荐版本
修复 flake8 警告 E721
1.6.0 (2023-07-11)
ECC-1630: 将 API 版本作为整数获取
ECC-1622: 删除 Python 3.7 版本
ECC-1601: GRIB: 支持单精度解码的数据值数组
ECC-1611: 添加确定 BUFR 键是否为坐标描述符的函数
1.5.2 (2023-04-04)
添加对 Python 3.10 和 3.11 版本的支持
ECC-1555: 错误处理 2D numpy 数组
ECC-1539: 使用 'warnings' 库进行自检
ECC-1538: 添加对 CODES_TYPE_BYTES 的支持
ECC-1524: 在 High-level Message.set 函数中检查值应根据值类型检索
ECC-1527: 处理 High-level Message.set 函数检查值中的浮点数
1.5.1 (2023-01-25)
ECC-1446: 数据文件 era5-levels-members.grib 未包含在发布的 tar 文件中
ECC-1460: 在 M1 MacBook Pro 上无法导入 eccodes
ECC-1505: High-level Message.set 函数应允许字典并检查结果
1.5.0 (2022-08-25)
ECC-1404: 添加 grib_get_gaussian_latitudes() 函数
ECC-1405: 添加新函数:codes_any_new_from_samples
ECC-1415: 实现更高层的 Python 接口(仍为实验性)
ECC-1429: 删除文件 'eccodes/messages.py'
GitHub pull request #62: 添加 pypi 徽标
1.4.2 (2022-05-20)
ECC-1389: 删除 Python 3.5 和 3.6 版本
ECC-1390: NameError: 'GribInternalError' 未定义
添加对 GRIB 位图的测试
1.4.1 (2022-03-03)
ECC-1351: 在 codes_set() 和 codes_set_long() 中支持 numpy.int64
ECC-1317: 数据文件 tiggelam_cnmc_sfc.grib2 未包含在发布的 tar 文件中
1.4.0 (2021-12-03)
ECC-1234: 删除实验性高级接口
ECC-1282: 添加 codes_dump()
1.3.4 (2021-08-27)
更新文档
1.3.3 (2021-06-21)
ECC-1246: 解析 BUFR 文件时出现 UnicodeDecodeError
1.3.2 (2021-04-16)
恢复实验性高级接口
1.3.1 (2021-04-16)
修复推荐版本
1.3.0 (2021-04-09)
ECC-1231: 删除实验性高级接口
添加了 "findlibs" 模块
修复 MEMFS 启用时 tests/test_high_level_api.py 的测试
ECC-1226: Python3 绑定:打字错误导致调用 codes_index_get_double 时出现 AttributeError
1.2.0 (2021-03-23)
添加了对多字段 GRIB 的测试
修复弃用警告:np.float 是内建 float 的弃用别名
实验性功能:grib_nearest_find
1.1.0 (2021-01-20)
ECC-1171: 性能:Python 绑定:删除 assert 语句
ECC-1161: Python3 绑定:不要在第一次失败尝试时引发异常
ECC-1176: Python3 绑定:float32 被识别为 int 而不是 float
GitHub pull request #41: 删除对 Python 2 的明显支持
GitHub pull request #44: 修复 Windows 上的 CFFI 崩溃
GitHub pull request #42: 使用 GitHub actions 添加单元测试(Linux、macos 和 windows)
1.0.0 (2020-10-14)
ECC-1143: CMake:迁移到 ecbuild v3.4
ECC-1133: C API:为 codes_index_new_from_file 和 codes_index_select_string 传播 const char*
0.9.9 (2020-08-04)
支持 ecmwflibs。寻找 ECMWF 库的另一种方法(如果可用)
ECC-1140:在 grib_set_double_array() 中从无效指针引用导致的段错误
0.9.8 (2020-06-26)
ECC-1110:已移除过时的函数 codes_close_file()
为异常提供缺失的参数
修复 codes_set_definitions_path() 中的打字错误
修复 grib_get_double_element()。缺少最后一个参数
添加更多测试以提高覆盖率
GitHub pull request #15:向 eccodes.CodesFile 类添加 .__next__() 方法
ECC-1113:Windows 下的 Python3 绑定:codes_get_long_array 返回不正确的值
ECC-1108:Windows 下的 Python3 绑定:使用句柄导致崩溃
ECC-1121:如果手动关闭消息,则关闭 GribFile 时发生段错误
0.9.6 (2020-03-10)
更新版权声明
函数参数类型检查:改进错误信息
修复 codes_gribex_mode_on/codes_gribex_mode_off 的 C 函数调用
0.9.5 (2020-01-15)
- ECC-1029:默认情况下应禁用函数参数类型检查。
要启用这些检查,请导出 ECCODES_PYTHON_ENABLE_TYPE_CHECKS=1
ECC-1032: 添加了 codes_samples_path() 和 codes_definition_path() 函数
ECC-1042: Python3 接口错误地写入整数数组
ECC-794: Python3 接口:公开 grib_get_data 函数
0.9.4 (2019-11-27)
添加了新函数:codes_get_version_info
ECC-753: 在 Python 中公开 codes_grib_nearest_find_multiple 函数
ECC-1007: Python3 接口 eccodes 无法写入大数组
0.9.3 (2019-10-04)
新增异常:FunctionalityNotEnabledError
BUFR 解码:支持多元素常量数组(ECC-428)
0.9.2 (2019-07-09)
所有 ecCodes 测试现在均通过
简化 xx_new_from_file 调用
修复 grib_set_string_array
使用 ECCODES_DIR 定位库
移除新的高级接口。它仍在 cfgrib 中可用。
0.9.1 (2019-06-06)
codes_get_long_array 和 codes_get_double_array 现在返回一个 np.ndarray。请参阅: #3。
0.9.0 (2019-05-07)
将项目声明为 Beta 版。
0.8.0 (2019-04-08)
首次公开发布。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
构建的分发
eccodes-2.38.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90a76a0e26b1a0bae299c15bf7b0bfd885f07ab717a9a738ac81493a11c240c6 |
|
MD5 | aea72b8fbd1d4c356d1f466bafda2f95 |
|
BLAKE2b-256 | a98f1d96697778aaf06ece2e2dd08e43527e4d5ec554c9cfd20d834353107cef |
哈希值 for eccodes-2.38.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fc44671fc8d311013d1ab73f712f2a1c945c7b78ebe144b9ad6be6e741cb5932 |
|
MD5 | 292206d23f1a21cc3a79c666b63ffa47 |
|
BLAKE2b-256 | f6f43c9c6ac965fb40d40dcc6ae9090864cbfad30b18909a1ac314fe28be0b58 |
哈希值 for eccodes-2.38.1-cp312-cp312-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 10f260fc49805bfad6db27ba69e386f524296cde6512dd9e5c8dc2d5b5eca67a |
|
MD5 | dc8b25feaf94b8c175f5556a7c2b8981 |
|
BLAKE2b-256 | 76829a08f0d607375f3b2167b0da30268e90d0a66bf2c3492d7cae1553e82ce9 |
哈希值 for eccodes-2.38.1-cp312-cp312-macosx_13_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 2c54fb5712b4b864d9e300797ee1c139feaf733c0fb937b8e8da8555c7256667 |
|
MD5 | 48fd14ce71e06298f4219aeb52dde5ea |
|
BLAKE2b-256 | af3fe97f7c7427ae14bbee5cfc5001e64b44d7e0c2e05de7ea8e0aedf895166f |
哈希值 for eccodes-2.38.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e3c6e52cf120a7cce274c3c1463fe79cc0c26ec5446b539fa650cfa815845deb |
|
MD5 | 56a2a0a6c83b52db84711ec2f5d95ea8 |
|
BLAKE2b-256 | 28062d0712da23291875cdc6faba2dadb21bd5a032f1bf557b51c5f323f9b8e3 |
哈希值 for eccodes-2.38.1-cp311-cp311-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a0391e72557a4f2b6131e075d687882ae7acc02fbebbefc8ec1805f20ec258e8 |
|
MD5 | f352242dd0b2327fc4a833414f138cb9 |
|
BLAKE2b-256 | c2513473e6af0e1191cf6814c96b223776b3f2d5c997275417fde1a45f0dd238 |
哈希值 for eccodes-2.38.1-cp311-cp311-macosx_13_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c284f23f2e60a6b3d1250bd2f2555947e16a6c91d6cdb7136d34d2dc9ee67e0b |
|
MD5 | 6f310caccf29c4639313d726c215a041 |
|
BLAKE2b-256 | ee3134bd3417e2caa4faf0b663523b43cc992fecec2d9bbf3a6aeef09a56669e |
哈希值 for eccodes-2.38.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7e72cbe8460976368ea629bc8fb00b20db26c943e2428b7eb534ab3521f63046 |
|
MD5 | 26de0afbf1d23e85c91f858d073521e6 |
|
BLAKE2b-256 | 72ee55dc9ebf7e7a1514c416cf9a9f5483b51a3b282346d6954bb10766a82b81 |
哈希值 for eccodes-2.38.1-cp310-cp310-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3e55bf2a7b08dd0146921be460439b9d2c95b791a261a0d1c25d979a58c33515 |
|
MD5 | 761ab62dd1cbca4fea010a4a4eddcf9f |
|
BLAKE2b-256 | c3ddd44375a4ded8e11211a93a5b25f29442d7d076b29e70096ecdacbd561ad6 |
哈希值 for eccodes-2.38.1-cp310-cp310-macosx_13_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3b510f26c5c405d936eab8443c953023647deb5dd5c7d034cac9f6f7c13bdbaa |
|
MD5 | 83449e2a480cf70734e48fcba3216bad |
|
BLAKE2b-256 | 552aa33b5da35f57391315e153f6647d9384e517bb011bb817449d7748d94579 |
哈希值 for eccodes-2.38.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f7a2a44b5758054de934de275ec71b6c83c59281b83d1da57d913b6705ee0d3b |
|
MD5 | 603c19ecb20352b55ae6af0dd5e8731d |
|
BLAKE2b-256 | 5acbbdaffe6fa8c9879aafb53b0f76db4063e20176a0ff7a9447d1317b4b719e |
哈希值 for eccodes-2.38.1-cp39-cp39-macosx_13_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 31ec8bd5c2a716d0ca93d4a7dd02942ecee2582a97c92603f85358ff7da3aa42 |
|
MD5 | 1ec438d86554aeff2e2301855e4a1829 |
|
BLAKE2b-256 | 58e64e1a48d52fc30ff35d118342592e4265ad630fa6af34d9c634a997150efe |
哈希值 for eccodes-2.38.1-cp39-cp39-macosx_13_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 582aae37c6b80a96f26fb94fc42906151d5f370414b468efe3d8e3fceeba75f0 |
|
MD5 | 738376ac184b12fb14a9c944467ea158 |
|
BLAKE2b-256 | 8cfee2b786cec651a49206ddefda250356a3cb857c9806ebf2cc9b0874d19c0d |
哈希值 用于 eccodes-2.38.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cbdc65001d2a60925cb074ed49d14d52fbe89862ac39d5628aafc553f84c3c10 |
|
MD5 | 02ff7a2dea89c3c291daab1cdd3ce68b |
|
BLAKE2b-256 | d5dac5b2493016b31e0dd44d9a46d725e0865f05055adb1bb0de2cf3e4e0b0c4 |