如何减少netCDF文件的维度并更改数据?

时间:2017-09-25 17:48:09

标签: r netcdf netcdf4

dimensions:
    i1 = 3 ;
    x = 11 ;
    s1 = 1 ;
    mid1 = 8 ;
    mid2 = 8 ;
variables:
    double Height(i1,x) ;
    double Temp(s1, x) ;
    short Soil(s1, x) ;
    double Liq(mid1, x) ;

我有一个netCDF文件,我希望在其中减少其中一个维度mid1的大小并替换值:

icond <- ncdf4::nc_open('dat.nc)

#New dimensions for new file
idim <- icond$dim[['i1']]
xdim <- icond$dim[['x']]
s1dim <- icond$dim[['s1']]
mid1dim <- ncdim_def("mid1", "", 1:3) #3 layers
mid2dim <- icond$dim[['mid2']]

mv <- -9999

#Get variable data
Liqxdat <- ncvar_get(icond, 'Liq')[,1:3] #3 Layers 

#Define new variable
Liqx = ncvar_def( "Liq", "units", list(mid1dim, i1), mv, prec="double")

#Create netCDF file
nc =  nc_create("test.nc", list(Height, Temp, Soil, Liqx)

#Write data to the NetCDF file
ncvar_put(nc, Liqx, Liqxdat)

但这并没有在输出文件中提供任何数据。

1 个答案:

答案 0 :(得分:0)

不幸的是我无法运行你的代码。所以我只能猜到它为什么不起作用。

  1. nc = nc_create(..)。
  2. 行上缺少一个右括号
  3. 未定义高度,温度和土壤。
  4. 使用nc_create创建一个新文件,但是你没有将数据添加到现有文件中,这是你想要的吗?如果要添加新变量,则必须使用ncvar_add()