python - 如何通过 OpenDAP 使用 xarray 打开多个 NetCDF 文件?

标签 python netcdf python-xarray opendap

我尝试使用 xarray.open_mfdataset() 打开 THREDDS 服务器上 OpenDAP 上托管的多个 NetCDF 文件,但出现错误。如果我只打开一个文件(但仍然使用 open_mfdataset()),它可以工作,如果我打开两个文件,它就不行。

例如,这很好用:

import xarray as xr
chunks = {'time' : 1, 'depth' : 1}
paths  = [
    'http://thredds.met.no/thredds/dodsC/fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022000.nc',
    ]
d = xr.open_mfdataset(paths, chunks = chunks)

虽然这不是:

import xarray as xr
chunks = {'time' : 1, 'depth' : 1}
paths  = [
    'http://thredds.met.no/thredds/dodsC/fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022000.nc',
    'http://thredds.met.no/thredds/dodsC/fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022100.nc',
    ]
d = xr.open_mfdataset(paths, chunks = chunks)

我在 jupyter 笔记本中运行它,我在笔记本中没有得到任何输出,它只是继续运行,而在终端中它打印以下内容

CURL Error: Failed initialization
curl error details:
CURL Error: Failed initialization
CURL Error: Failed initialization
CURL Error: Failed initialization
syntax error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or SCAN_ERROR
context: !�zF^@L������@L�Ы�J�@L�y@L�G`Lp@L�X�ڭ@L�/��a@L���@L��{�:@@L�Hl�D@L���i@L�f���@L�>����@L�x��f@L��DA�h@L�����@L��ڭ�M@L�u���@M
CURL Error: Failed initialization
curl error details:
CURL Error: Failed initialization
CURL Error: Failed initialization
syntax error, unexpected WORD_WORD, expecting $end
context: Dataset { Structure { Float64 lon[Y = 902][X = 2602]; } lon;} fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022100.nc;Data^:
CURL Error: Failed initialization
CURL Error: Failed initialization
CURL Error: Failed initialization
syntax error, unexpected WORD_WORD, expecting SCAN_ATTR or SCAN_DATASET or SCAN_ERROR
context: �@��&��D^@�h�N�{@��I$�@B�

从那时起,它只会退化为打印更多垃圾。

这不是应该可以正常工作吗?

编辑:

我之前没有意识到这一点,但事实证明 netCDF4 库还支持将多个路径作为一个数据集打开。我不确定这是否相关,因为我不知道 xarray 和 netCDF4 是否使用相同的后端,但无论如何,以下内容都可以正常工作。至少这表明问题不在服务器端。

import netCDF4 as nc
d = nc.MFDataset([
    'http://thredds.met.no/thredds/dodsC/fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022000.nc',
    'http://thredds.met.no/thredds/dodsC/fou-hi/norkyst800m-1h/NorKyst-800m_ZDEPTHS_his.an.2017022100.nc',
])

最佳答案

对我来说,这看起来像是某种错误——您正在正确使用 API,并且没有任何内在原因说明它不起作用。但我不知道哪个系统出了问题——很可能是 netCDF-C OpenDAP 阅读器或远程 OpenDAP 服务器。

关于python - 如何通过 OpenDAP 使用 xarray 打开多个 NetCDF 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42651863/

相关文章:

Python:如何将 2.7 模块导入 3.4 程序?

python - 削减成本算法优化

linux - 错误 : undefined reference to NetCDF functions

python - 给定一个大小为 N 的列表 A,如何创建一个列表 B,使 B 的每个元素都是 A 和 B 的前一个元素之和?

python - 有没有办法在 Sublime Text 中同时查看同一文件中的两个代码块?

java - 使用netcdf-java库或java中的其他方法访问OPeNDAP数据

python - 使用 xarray 从 netcdf 中提取最近的经纬度和时间值

python - 如何使用Dask.Array.From_Zarr在Dask上打开zarr文件?

python - 具有无量纲坐标的 Xarray plot.line

python - Xarray 查找每个时间步长的最大/最小值的纬度/经度坐标