将边界变量添加到 netcdf 文件
Adding bounds variable to netcdf file
我想将纬度范围添加到现有的 netCDF 文件中。有关边界的定义,请参阅 http://www.cgd.ucar.edu/cms/eaton/netcdf/CF-20010629.htm#bnds
。
有没有自动添加边界的命令?我对使用 nco 或 netCDF4 或 cdms 工具包的任何解决方案持开放态度。但是,我更希望它是一个 post 处理解决方案。
像这样向现有坐标添加边界:
ncap2 -O -s 'crd@bounds="crd_bnds";defdim("bnds",2);crd_bnds[$crd,$bnds]=0.0;*crd_dff=0.5*(crd(1)-crd(0));crd_bnds(:,0)=crd-crd_dff;crd_bnds(:,1)=crd+crd_dff;' in.nc out.nc
这会产生
zender@aerosol:~$ ncks --cdl -v crd ~/foo2.nc
netcdf foo2 {
dimensions:
bnds = 2 ;
crd = 10 ;
variables:
int crd(crd) ;
crd:bounds = "crd_bnds" ;
double crd_bnds(crd,bnds) ;
data:
crd = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
crd_bnds = -0.5, 0.5, 0.5, 1.5, 1.5, 2.5, 2.5, 3.5, 3.5, 4.5, 4.5, 5.5, 5.5, 6.5, 6.5, 7.5, 7.5, 8.5, 8.5, 9.5 ;
} // group /
这里坐标命名为"crd",边界命名为"crd_bnds"。当坐标改变一个固定值(如上)时,边界值的公式可以很简单,或者更复杂地考虑可变间距(reader 的练习)。我们将在不久的将来添加一个 ncap2 函数来自动执行此操作。
cz
我想将纬度范围添加到现有的 netCDF 文件中。有关边界的定义,请参阅 http://www.cgd.ucar.edu/cms/eaton/netcdf/CF-20010629.htm#bnds
。
有没有自动添加边界的命令?我对使用 nco 或 netCDF4 或 cdms 工具包的任何解决方案持开放态度。但是,我更希望它是一个 post 处理解决方案。
像这样向现有坐标添加边界:
ncap2 -O -s 'crd@bounds="crd_bnds";defdim("bnds",2);crd_bnds[$crd,$bnds]=0.0;*crd_dff=0.5*(crd(1)-crd(0));crd_bnds(:,0)=crd-crd_dff;crd_bnds(:,1)=crd+crd_dff;' in.nc out.nc
这会产生
zender@aerosol:~$ ncks --cdl -v crd ~/foo2.nc
netcdf foo2 {
dimensions:
bnds = 2 ;
crd = 10 ;
variables:
int crd(crd) ;
crd:bounds = "crd_bnds" ;
double crd_bnds(crd,bnds) ;
data:
crd = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ;
crd_bnds = -0.5, 0.5, 0.5, 1.5, 1.5, 2.5, 2.5, 3.5, 3.5, 4.5, 4.5, 5.5, 5.5, 6.5, 6.5, 7.5, 7.5, 8.5, 8.5, 9.5 ;
} // group /
这里坐标命名为"crd",边界命名为"crd_bnds"。当坐标改变一个固定值(如上)时,边界值的公式可以很简单,或者更复杂地考虑可变间距(reader 的练习)。我们将在不久的将来添加一个 ncap2 函数来自动执行此操作。
cz