Estoy tratando de crear un archivo NetCDF multidimensional utilizando el paquete R ncdf. Estoy trabajando con observaciones climáticas diarias para un conjunto de 1500 puntos, el número de observaciones es ~ 18250 para cada punto. El problema es que la estructura del archivo de NetCDF (create.ncdf) ocupa 4 Gb y cada punto hace que el tamaño de la ampliación de archivo por más de 3 Gb (put.var.ncdf)Creación de NetCDF multidimensional en R
Este es el código que estoy utilizando:
# Make a few dimensions we can use
dimX <- dim.def.ncdf("Long", "degrees", Longvector)
dimY <- dim.def.ncdf("LAT", "degrees", Latvector)
dimT <- dim.def.ncdf("Time", "days", 1:18250, unlim=FALSE)
# Make varables of various dimensionality, for illustration purposes
mv <- -9999 # missing value to use
var1d <- var.def.ncdf("var1d", "units", dimX, mv,prec="double")
var2d <- var.def.ncdf("var2d", "units", list(dimX,dimY), mv,prec="double")
var3d <- var.def.ncdf("var3d", "units", list(dimX,dimY,dimT), mv,prec="double")
# Create the test file
nc <- create.ncdf("writevals.nc", list(var1d,var2d,var3d))
# !!Creates a nc file with + 4 Gb
# Adding the complete time series for one point (the first point in the list of the dataset)
put.var.ncdf(nc, var3d,dataset[[1]], start=c(Longvector[1],Latvector[1],1), count=c(1,1,-1))
Longvector y Latvector son vectores tomadas de la matriz con la larga y Lat para cada punto. El conjunto de datos es un formato de lista y para cada punto tengo una lista de valores numéricos.
dataset[[1]]=c(0,0,0,9.7,0,7.5,3.6,2.9,0,0.5,....)
¿Falta algo o debo probar otros paquetes?
¿Cuáles son las longitudes de Longvector y Latvector? ¿Puede proporcionarlos, tal vez con una llamada a seq() o simplemente volcar código para recrearlos con dput(). – mdsumner
Por favor, edite la pregunta para incluir la información que falta – mdsumner
sugeriría mover la solución aceptada de respuesta ncdf4 como ncdf ahora se está volviendo obsoleta - la mayoría del software usa las convenciones de netcdf4 ahora. –