将 4 维变量转换为 3 维变量 netcdf

问题描述

我有一个 netcdf 数据文件,其中包含以下 ncdump 片段中显示的以下变量:

netcdf elev.0.5-deg {
dimensions:
    lat = 360 ;
    lon = 720 ;
    time = UNLIMITED ; // (1 currently)
variables:
    float lat(lat) ;
        lat:title = "Latitude" ;
        lat:units = "degrees_north" ;
        lat:scale_factor = 1.f ;
        lat:add_offset = 0.f ;
    float lon(lon) ;
        lon:title = "Longitude" ;
        lon:units = "degrees_east" ;
        lon:scale_factor = 1.f ;
        lon:add_offset = 0.f ;
    double time(time) ;
        time:title = "Time" ;
        time:units = "hours since 1-1-1 0:0:0" ;
        time:scale_factor = 1.f ;
        time:add_offset = 0.f ;
    short data(time,lat,lon) ;
        data:long_name = "meters,from 5-min data" ;
        data:add_offset = 0.f ;
        data:scale_factor = 1.f ;
        data:missing_value = 32767s ;
        data:units = "meters,from 5-min data" ;

我试图从这个文件中消除时间坐标变量,以获得一个 3 维 netcdf 数据文件。基本上在 netcdf 文件中第一次拥有数据数据值,仅此而已。我试图用 ncks 来实现这一点,这是他们在进行谷歌搜索显示我应该做的。我用 ncks 尝试了以下命令:

  ncks -x -v time elev.0.5-deg.nc test.nc

但我无法删除时间维度。我应该怎么做才能调整此命令以获得仅显示初始时间步的数据并且在 test.nc 中仅具有维度 lat 和 lon 的预期结果?

解决方法

使用ncwa

ncwa -a time in.nc out.nc
,

您应该可以使用 CDO 做到这一点:

 cdo --reduce_dim -copy elev.0.5-deg.nc test.nc