问题标签 [eccodes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
57 浏览

c++ - ecCodes(grib 阅读库)不会释放内存

我在我的项目中使用ecCodes 库,我遇到了一个问题,即在读取文件之间没有释放内存。

代表问题的最小示例是这样的(并且基本上是这两个库 API 使用示例 [ 1 ](https://confluence.ecmwf.int/display/ECC/grib_get_keys[2]的组合:

在示例中,程序读取 4 个相同的 ERA5 文件,每个文件大小为 1.5GB。在打开新文件之前,使用codes_handle_delete() 和fclose() 关闭前一个文件。因此,预期的行为是内存使用量保持在 1.5GB 左右。然而,实际上内存使用量稳步增加到大约 6.5GB,并在程序关闭时被释放(见下面的截图)。

显示内存使用情况的屏幕截图

这个特定的示例已经使用 CMake(发布配置)在 CLion 上运行,但问题发生在所有其他配置以及我的其他使用 FFI 调用 ecCodes 的 Rust 项目中。

该库似乎经过良好测试和支持,因此它似乎不太可能是库错误。因此,这是预期的行为还是我的代码错误?如果是后者,我该如何纠正?

我正在使用安装了 apt 的 Ubuntu 21.04 和 ecCodes 2.20.0

0 投票
0 回答
34 浏览

grib - 由于 paramId = 0,GRIB1 到 GRIB2 eccodes 转换失败

所以我正在尝试将 GRIB1 文件转换为主要包含风数据的 GRIB2。通常您可以将版本更改为 2,而 eccodes 库会执行其他所有操作。

现在的问题是我的 GRIB1 文件只有 paramId=0 和 shortName=unknown 消息。我该怎么办?当我将它加载到查看器(例如 PredictWind Offshore)时,它显示得很好。关于如何在不知道消息的情况下将其转换为 GRIB2 的任何想法?我错过了什么吗?

我已经尝试过的:

我的 GRIB1 (e1.grib) 是什么样的:

编辑:

对于未来的读者:

我最终根本没有使用 eccodes。我的解决方案现在涉及使用对我非常有用的 PyNIO。它能够读取 GRIB1。欲了解更多信息,请直接与我联系。

0 投票
0 回答
61 浏览

python-3.x - 在 windows 上使用 anaconda 安装 Cfgrib 和 eccodes

世界上有什么办法可以让 Conda 在 Windows 上安装 cfgrib/ecCodes?我正在尝试 pip3;点;康达,康达力量……</p>

0 投票
0 回答
90 浏览

python - 使用 xarray 和 cfgrib 打开 grib 文件

使用 xarray 和 cfgrib 可以用命令打开 grib 文件ds=xr.open_dataset('a.grib',engine='cfgrib')

但是,ds 的尺寸有时与从官方获得的尺寸不同。

例如,ds 的维度应该是[time(31),step(16),lon(2576),lat(1280)],但是从 xarray 和 cfgrib 得到的结果是[time(31),step(16),value(1661440)]

有没有办法解决这个问题?提前致谢。

0 投票
1 回答
45 浏览

netcdf - 无法导入 cfgrib

每当我尝试导入 cfgrib 时,它都会给我运行时错误,即它无法加载 ecCodes 库

这是完整的错误消息

我已经通过 pip 安装了 cfgrib 和 ecCodes

0 投票
0 回答
9 浏览

python - Python:无法在路径上加载包

我正在尝试使用以下命令使用 pip 安装 cfgrib:

这将沿以下路径安装 eccodes 包:

当我尝试运行我的 python 脚本(见下文)时,我收到一条错误消息告诉我:

有谁知道如何解决这个问题?