Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过OpenDAP使用xarray打开多个NetCDF文件?_Python_Netcdf_Python Xarray_Opendap - Fatal编程技术网

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

Python 如何通过OpenDAP使用xarray打开多个NetCDF文件?,python,netcdf,python-xarray,opendap,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/nork

我正在尝试使用
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',
])

对我来说,这看起来像是某种bug——您正确地使用了API,没有内在的原因说明这不应该工作。但我不知道哪个系统出了故障——很可能是netCDF-C OpenDAP阅读器或远程OpenDAP服务器。

我在发布之前没有意识到这一点,但我刚刚发现netCDF4 python库有一个名为
MFDataset()
的函数。用它打开相同的两个路径效果很好(我将编辑我的问题以包含此信息)。很难用对话框调试StackOverflow上的某些内容。你能在xarray github页面上打开一个问题吗?当然可以。谢谢