0

遵循 Q here xarray 使用 cfgrib 读取 s3 上的远程 grib 文件

我将如何转换以下代码以在backend_kwargsxarray 的open_dataset.

import fsspec
import xarray as xr

uri = "simplecache::s3://mf-nwp-models/arpege-world/v2/2021-02-16/00/UGRD/10m/0h.grib2"

file = fsspec.open_local(uri, s3={'anon': True}, filecache={'cache_storage':'/tmp/files'})

ds = xr.open_dataset(file, engine="cfgrib")

ds = xr.open_dataset(
    uri,
    engine="cfgrib",
    backend_kwargs=dict(s3={"anon": True}, filecache={"cache_storage": "/tmp/files"}),
)

但得到ERROR:cfgrib.messages:Can't create file 'simplecache::s3://mf-nwp-models/arpege-world/v2/2021-02-16/00/UGRD/10m/0h.grib2.90c91.idx'

4

1 回答 1

1

抱歉,就目前情况而言,这是不可能的。xr.open_dataset期望 fsspec 可以变成打开的类似文件的对象的 URL,或本地路径。open_local的任务是处理 URL 并将字符串返回到本地副本 - 所以它不太适合。fcgrib 通过尝试从中提取本地路径并(重新)打开它来处理打开的类似文件的对象。

在 fsspec 中有一个可以做的事情是合理的open_local,但是交还一个打开的文件。请参阅 fsspec-reference-maker 上的讨论,了解有关我们如何通过在本地临时复制(许多)远程 grib2 来处理它们的打开的想法。

于 2021-03-07T18:53:32.043 回答