如何在 xarray 的后端添加 fsspec.open_local

Posted

技术标签:

【中文标题】如何在 xarray 的后端添加 fsspec.open_local【英文标题】:how to add fsspec.open_local in backend of xarray 【发布时间】:2021-03-07 03:43:08 【问题描述】:

在此处关注 Q xarray read remote grib file on s3 using cfgrib

如何将以下代码转换为在 xarray 的 open_datasetbackend_kwargs 中使用。

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'

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于如何在 xarray 的后端添加 fsspec.open_local的主要内容,如果未能解决你的问题,请参考以下文章

从谷歌地图的后端获取数据

如何将点击的卡片按钮 id 传递给 vue.js 中的后端 URL 路径?

如何从 joomla 的后端菜单中删除/隐藏某些组件?

如何使用Curl在没有前端的格子api的后端生成公共令牌?

如何实现一个网站多个域名:目的是为了一个共同的前端+多个多语言实现的后端

如何在“新内容元素”向导的后端对 FCE 进行排序/排序