NCO:我们可以在不修改坐标属性的情况下删除维度吗?

NCO: can we remove dimension without modifying coordinates attribute?

我有一个 netcdf 文件:

dimensions:
  y = 453 ;
  x = 453 ;
  plev = 1 ;
  time = UNLIMITED ; // (1460 currently)
variables:
  double plev(plev) ;
    plev:name = "plev" ;
    plev:standard_name = "air_pressure" ;
    plev:long_name = "pressure" ;
    plev:units = "Pa" ;
    plev:axis = "Z" ;
    plev:positive = "down" ;
  float va925(time, plev, y, x) ;
    va925:_FillValue = 1.e+20f ;
    va925:missing_value = 1.e+20f ;
    va925:coordinates = "lon lat plev" ;
    va925:grid_mapping = "Lambert_Conformal" ;

我想删除 plev 维度,但保留 plev 变量并且不修改 va925 坐标属性。

所以我想:

dimensions:
  y = 453 ;
  x = 453 ;
  time = UNLIMITED ; // (1460 currently)
variables:
  double plev;
    plev:name = "plev" ;
    plev:standard_name = "air_pressure" ;
    plev:long_name = "pressure" ;
    plev:units = "Pa" ;
    plev:axis = "Z" ;
    plev:positive = "down" ;
  float va925(time, y, x) ;
    va925:_FillValue = 1.e+20f ;
    va925:missing_value = 1.e+20f ;
    va925:coordinates = "lon lat plev" ;
    va925:grid_mapping = "Lambert_Conformal" ;

我试过: ncwa -a plev in.nc out.nc 但它修改了 va925 坐标,例如: va925:coordinates = "lon lat ";

我可以再次更改它: ncatted -h -O -a 坐标,va925,m,c,"lon lat plev" out.nc 但这意味着我必须在变量名上循环,这太长了!

提前谢谢你,

萝拉

如您所见,ncwa 会自动从 coordinates 属性中删除平均维度。没有开关可以关闭它。包含此功能需要做很多工作,所以具有讽刺意味的是,有些用户想要禁用它 :) 您已经发现并拒绝了 ncatted 的明显解决方法。一个更长的解决方法是在使用 ncwa 之前重命名所有坐标属性,然后再重命名,例如

ncrename -a .coordinates,impeachment in.nc
ncwa -a lon in.nc out.nc
ncrename -a .impeachment,coordinates out.nc