给定边界获取 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)
我使用 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)