2017-09-25 2 views
0
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) ; 

은 내가 치수 mid1 중 하나의 크기를 줄이고 값을 대체 할에 netCDF의 파일이 있습니다netCDF 파일의 크기를 줄이고 데이터를 변경하려면 어떻게해야합니까?

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) 

을하지만이 출력 파일에 저에게 데이터를 제공하지 않습니다.

답변

0

코드를 실행할 수 없습니다. 그래서 나는 그것이 작동하지 않는 이유를 짐작할 수 있습니다.

  1. nc = nc_create (..) 행에 결말이 누락되어 있습니다.
  2. 높이, 온도 및 토양이 정의되지 않았습니다.
  3. nc_create를 사용하면 새 파일을 만들지 만 기존 파일에 데이터를 추가하지 않아도됩니다. 원하는 파일입니까? 새 변수를 추가하려면 사용해야합니다. ncvar_add()
관련 문제