【问题标题】:convert all the variables and dimensions from int/float to double in netcdf file在 netcdf 文件中将所有变量和维度从 int/float 转换为 double
【发布时间】:2016-08-13 11:41:55
【问题描述】:

我有一个带有以下内容的 netCDF 文件。 ncdump:

netcdf nc_data {
dimensions:
    lon = 1440 ;
    bounds = 2 ;
    lat = 720 ;
    time = UNLIMITED ; // (6 currently)
variables:
    double lon_bounds(lon, bounds) ;
    double lat_bounds(lat, bounds) ;
    int time(time) ;
        time:units = "year as %Y.%f" ;
        time:calendar = "proleptic_gregorian" ;
        time:long_name = "time" ;
        time:standard_name = "time" ;
        time:axis = "T" ;
    float lat(lat) ;
        lat:units = "degrees_north" ;
        lat:long_name = "latitude" ;
        lat:standard_name = "latitude" ;
        lat:axis = "Y" ;
        lat:bounds = "lat_bounds" ;
    float lon(lon) ;
        lon:units = "degrees_east" ;
        lon:long_name = "longitude" ;
        lon:standard_name = "longitude" ;
        lon:axis = "X" ;
        lon:bounds = "lon_bounds" ;
    float valf(time, lat, lon) ;
        valf: standard_name = “area_fraction”
        valf:missing_value = -9999.f ;
        valf:_fillvalue = -9999.f ;
        valf:long_name = "val fraction" ;
        valf:units = "fraction of grid cell" ;
}

是否有 nco 命令将所有变量和维度从 int/float 转换为 double ?

我发现了这个:

ncap2 -s 'valf=double(valf)' nc_data.nc nc_data.nc

但是,这一次只能使用一个变量,我的文件中有大约 30 个变量

【问题讨论】:

    标签: python netcdf nco


    【解决方案1】:

    ncap2 可以优雅地做到这一点,尽管它需要当前的快照(很快就会变成 4.6.0)。请注意,自 NCO 版本 4.5.3 以来,您上面使用的命令不会更改输出文件中变量的类型,并且当前快照确实允许它工作。 (ncap2 的临时版本要求输出变量具有与输入不同的名称才能更改其类型,例如,val_dbl=double(valf)

    重要的是,ncap2 的 当前快照 理解变量列表。因此,您可以使用此脚本创建具有更改名称的某些变量的输出文件:

    @all=get_vars_in();
    *sz=@all.size();
    
    for(idx=0;idx<sz;idx++){
    
      @var_nm=sprint(@all(idx));
    
      if( *@var_nm.type() == NC_INT || *@var_nm.type() == NC_FLOAT )
       *@var_nm=*@var_nm.double();
    
    }
    

    不需要重命名变量。

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2012-09-02
      • 1970-01-01
      • 2021-11-24
      • 2020-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多