2017-03-07 176 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

相關問題