代码是这个答案确实有效添加了一个新维度,但它没有做我想要它做的事情。
为了进一步说明我的问题 - 我将时间(无限)、纬度、经度、水平定义为四个维度和一个可变的位势高度。我想要做的是将尺寸 dimz_Z 添加到现有的变量位势高度。
现在,上面代码中的答案是 netCDF 文件在 ncdump 中的样子
float hgt(time, level, lat, lon)
但是从 ncks 的输出如下所示,缺少 dimz_Z 维度。
hgt dimension 0: time, size = 1 NC_DOUBLE, chunksize = 1 (Record coordinate is time)
hgt dimension 1: level, size = 1 NC_FLOAT, chunksize = 1 (Coordinate is level)
hgt dimension 2: lat, size = 23 NC_FLOAT, chunksize = 23 (Coordinate is lat)
hgt dimension 3: lon, size = 21 NC_FLOAT, chunksize = 21 (Coordinate is lon)
它确实出现在定义中,但作为独立维度而不是hgt 维度的一部分
dimz_Z: type NC_FLOAT, 1 dimension, 0 attributes, compressed? no, chunked? no, packed? no
dimz_Z size (RAM) = 483*sizeof(NC_FLOAT) = 483*4 = 1932 bytes
dimz_Z dimension 0: dimz_Z, size = 483 NC_FLOAT (Coordinate is dimz_Z)
这是文件的输出
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 hgt[1]=55 m
我想要的是以下
time[0]=1879032 level[0]=1000 lat[0]=60 lon[0]=50 dimz_Z[0]=0 hgt[0]=53 m
time[0]=1879032 level[0]=1000 lat[0]=60 lon[1]=52.5 dimz_Z[0]=0 hgt[1]=55 m
一位朋友告诉我,我无法将此维度添加到现有变量中。相反,在 fortran 中,我必须将变量 hgt 重新定义为五维变量,然后重新输入值。这是正确的还是有替代方案?我正在使用 Fortran 77 netcdf API。