2017-03-07 177 views
1

我想在一个THREDDS服务器上使用xarray.open_mfdataset()在OpenDAP上托管多个NetCDF文件,但出现错误。如果我只打开一个文件(但仍然使用open_mfdataset()),它会起作用,如果我打开两个文件,则不会。如何通过OpenDAP使用xarray打开多个NetCDF文件?

例如,这工作得很好:

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�[email protected]�G`[email protected]�X�ڭ@L�/��[email protected]���@L��{�:@@L�Hl�[email protected]���[email protected]�f���@L�>����@L�x��[email protected]��DA�[email protected]�����@L��ڭ�[email protected]�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', 
]) 

回答

0

这看起来像是某种对我的错误 - 您正在正确使用API​​,并且没有固有的原因,为什么这不应该工作。但我不知道哪个系统存在问题 - 很可能是netCDF-C OpenDAP阅读器或远程OpenDAP服务器。

+0

我在发布之前并没有意识到这一点,但我刚刚发现python的netCDF4库有一个名为'MFDataset()'的函数。用这种方式打开相同的两条路径就好了(我将编辑我的问题以包含此信息)。 – Tor

+0

很难有一个对话框来调试StackOverflow上的某些东西。你能否在xarray github页面上打开一个问题呢? – shoyer

+0

当然。谢谢。 – Tor

相关问题