给定边界获取 grib 值的替代(更快)方法?

alternative (faster) way to get grib values given boundary?

我使用 pygrib 提取给定边界内特定波段的所有 grib 值。 该函数将 return 一个 Json 对象,其中包含每个分析数据的所有值。

现在我必须为每个 运行 阅读大约 73 个 grib,响应很慢,现在大约需要 3 分钟。

结果应该是这样的: Grid Result

您知道使用其他工具(如 GDAL 或 ECCODES)在 bbox 中提取数据的另一种方法吗?

我无法使用 grib2json,因为它无法识别 GRIB。

提前致谢

你有没有看过cfgrib。它是 xarray 的 grib 引擎。使用 xarray,您将拥有大量用于 grib 数据集的服务和应用程序。 xarray 遵循数据立方体原则。

例如如果您已将数据加载到 xarray.Dataset 中,您可以使用 where 函数将数据切片到您的 bbox:

import xarray

dataset = xarray.open_dataset('path to grib file', engine='cfgrib')

# or for multiple files 
dataset = xarray.open_dataset(['path_to_grib1', 'path_to_grib2', ...], engine='cfgrib')

dataset.where((dataset.latitude > min_lat) & 
              (dataset.latitude < max_lat) & 
              (dataset.longitude > min_lon) &
              (dataset.longitude < max_lon), drop=True)