Использование MFDataset для объединения файлов netcdf в Python

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

Итак, я проверил только один файл netcdf, и информация о файле netcdf следующая:

float64 th_ref (u't ',) неограниченные размеры = () текущий размер = (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

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

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


person Isaac    schedule 03.12.2013    source источник


Ответы (1)


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

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

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

person Rich Signell    schedule 16.04.2014