使用MFDataset在python中组合netcdf文件

时间:2013-12-03 01:10:39

标签: python netcdf

我正在尝试组合netcdf文件,但它会连续显示 “文件”CBL_plot.py“,第11行,f = MFDataset(fili)文件”utils.pyx“,第274行,在netCDF4.MFDataset中。 init (netCDF4.c:3822)IOError:主数据集THref_11:00.nc没有聚合维度。“

所以,我只检查了一个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

我将非常感谢任何帮助,想法和暗示。

谢谢你, 艾萨克

1 个答案:

答案 0 :(得分:3)

简短回答:MFDataset只能汇总文件中最慢的变化维度。

更长的答案:在netcdf4-python documentation of MFDataset中说出"打开跨多个文件的数据集,使其看起来好像是一个文件。共享相同维度(使用关键字aggdim指定)的文件列表中的变量将被聚合。如果未指定aggdim,则会聚合无限制。目前,aggdim必须是要聚合的每个变量的最左边(最慢变化)维度。"

因此,MFDataset通过聚合现有文件中最慢的变化维度来工作。因此,如果您有一堆文件在不同时间是同一逻辑数据集的快照,并且您想要及时聚合,则需要在每个文件中都有时间维度。如果数据的时间只是在文件名中编码,则目前无法使用MFDataset进行聚合。