2013-12-03 2 views
0

Я пытаюсь объединить файлы netcdf, но он показывает, что «Файл CBL_plot.py», строка 11, в f = MFDataset (fili) Файл «utils.pyx», строка 274, в netCDF4.MFDataset. init (netCDF4.c: 3822) IOError: master dataset THref_11: 00.nc не имеет измерения агрегации. "Использование MFDataset для объединения файлов netcdf в python

Итак, я проверил только один NetCDF файлов и информация о файле NetCDF, как показано ниже:

float64 th_ref (~ и ^») неограниченных размеры =() текущего размера = (30,)

Похоже, что нет агрегационного измерения. Однако я хотел бы объединить эти файлы netcdf, а не просто использовать один за другим. Есть ли способ создать измерение агрегации, чтобы этот набор MFData работал?

Ниже приведен код Python я использовал:

import numpy as np 
    from netCDF4 import MFDataset 
    varn = 'th_ref' 
    fili = THref_*nc' 
    f = MFDataset(fili) 
    Th = f.variables[varn] 
    Th_ref=np.array(Th[:]) 
    print Th.shape 

Я очень признателен за любую помощь, идеи и подсказки.

Спасибо, Исаак

ответ

2

Короткий ответ: MFDataset может только агрегат по самой медленной различной размерности в ваших файлах.

Более длинный ответ:. В netcdf4-python documentation of MFDataset он говорит: «Открытие набора данных, охватывающих несколько файлов, что делает его выглядеть, как если бы это был один файл Переменные в списке файлов, которые разделяют один и тот же размер (указан с aggdim ключевых слов) агрегируются. Если aggdim не указывается, неограниченное агрегируется. В настоящее время aggdim должен быть самым левым (самым медленным изменяющимся) размером каждой из переменных, подлежащих агрегированию ».

Таким образом, MFDataset работает, объединяя самые медленные изменения в существующих файлах. Поэтому, если у вас есть куча файлов, которые являются моментальными снимками одного и того же логического набора данных в разное время, и вы хотите со временем заполнить их, вам нужно иметь измерение времени в каждом из файлов. Если время данных просто закодировано в имени файла, в настоящее время нет способа использовать MFDataset для агрегирования.