向现有 netcdf 文件添加无限维度

Adding unlimited dimension to existing netcdf file

我目前有几个 netCDF4 文件,其中的变量 "pp" 具有三个维度:pp(时间、纬度、经度)。每个单独的文件都有一年的月度土壤水分数据,时间维度代表一年中的每个月。 这是 p04 文件中 pp 变量的示例,它存储 2004 年的日期:

p04.variables['pp']
Out[56]: 
<class 'netCDF4._netCDF4.Variable'>
int16 pp(time, lat, lon)
    _FillValue: -999.9
    units: mm
    long_name: Total precipitation
    add_offset: 19.0333409628
    scale_factor: -0.000580886924338
unlimited dimensions: 
current shape = (12, 8520, 7320)
filling on

我想添加第四个无限维度,以便变量的形状为 pp(unl, time, lat, lon) 并且我可以使用 MFDataset 聚合来自不同年份的多个文件。我曾尝试使用 createDimension,但它会删除数据中的所有信息。

我一直在寻找一种无需重写所有文件即可添加此额外维度的方法。我该怎么做?谢谢!

NCO 的 ncecat 通过创建新的无限 "glue" 维度来连接文件:

ncecat -u unl in*.nc out.nc

回答可能有点晚,您是否使用 'w' 模式编辑您的文件? 'w' 模式会覆盖所有内容并创建新值,这就是所有现有信息都被删除的原因。请使用 'r+' 模式 - 这将读取和写入现有值/文件信息 - 并且不会创建一个全新的文件。

而不是 ds = nc.Dataset(file,mode='w')

使用 ds = nc.Dataset(file,mode='r+')