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

时间:2017-03-07 15:14:49

标签: 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',
])

1 个答案:

答案 0 :(得分:1)

对我来说,这看起来像某种错误 - 你正在使用API​​,并没有固有的理由说明为什么它不起作用。但我不知道哪个系统有问题 - 很可能是netCDF-C OpenDAP阅读器或远程OpenDAP服务器。