代码是这个答案确实有效Add a new dimension 但它不能做我想做的事情。
为了进一步说明我的问题 - 我有以下定义 时间(无限制),纬度,经度,水平为四维和一个可变的位势高度。我想要做的是将维度dimz_Z添加到现有的变量位势高度。
现在,上面代码中的答案是netCDF文件与ncdump一样的样子
float hgt(time, level, lat, lon)
但是dimz_Z维度缺失,如下面从ncks的输出中看到的那样。
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。
答案 0 :(得分:1)
你的朋友是对的。 但是,您可以考虑一些选项。在编程方面几乎总有选择。