我发现使用 Pygrib 访问 grb2 文件非常慢且耗时,对所有人都一样吗?

问题描述 投票:0回答:2

我对两个数据集使用相同的Python代码, 1)我尝试从netcdf文件访问数据 2)我尝试使用 pygrib 访问 grb2 文件中的数据。 除此之外,代码是相同的(步骤数、循环数、总操作数 - 全部相同)。看来 pygrib 太慢了。还有其他选择吗?

python netcdf
2个回答
1
投票

您没有提供很多信息,但从根本上说,GRIB 的构建方式与 NetCDF 不同。 GRIB 文件通常由 1 个或多个 GRIB 消息组成 - 每个 GRIB 消息都是一个层,并且独立于所有其他层。这意味着您可以获取一个 GRIB 并将其连接到另一个 GRIB 的末尾,最后您将得到一个 GRIB 文件,其中包含两个原始文件中的所有消息。这不适用于 NetCDF。因此,如果您的数据由许多不同的层(或 GRIB 术语中的消息)组成,即使您没有读取数据有效负载,您也会通过文件进行大量查找。

替代软件例如ECMWF 发布了GRIB API。它快速且可靠,但 Python API(至少目前)非常类似于 C。新的 Python API 即将推出。但如果不提供更多信息,这个问题就太笼统了,很难回答。


0
投票
您现在可以使用

xarraycfgrib 引擎相当有效地完成此操作。

import xarray as xr ds = xr.tutorial.load_dataset("era5-2mt-2019-03-uk.grib", engine="cfgrib")
它读取所有消息的速度比使用 pygrib 迭代消息要快得多。

© www.soinside.com 2019 - 2024. All rights reserved.