【发布时间】:2014-02-13 23:11:12
【问题描述】:
我正在尝试使用具有尺寸的 3d 矩阵 m3d 编写 NetCDF 文件
73 (LON) x 36 (LAT) x 12 (TIME)
由 12 个暗淡矩阵创建
73 (LON) x 36 (LAT)
这是我的代码
#Setting dimensions
space <- 5
Longvector = seq(-180, 180, by = space)
Latvector = seq(-90, 90, by = space)
dimMATR <- 73
dimMATC <- 36
dimX <- dim.def.ncdf("Long", "degrees", Longvector)
dimY <- dim.def.ncdf("LAT", "degrees", Latvector)
dimT <- dim.def.ncdf("Time", "days", 1:12, unlim = FALSE)
#Create 3d Matrix
m3d <- array(0, dim = c(dimMATR,dimMATC,12))
for (i in 1:12){
m <- as.matrix(do.call(rbind,myfilesContent[i]))
m3d[,,i]<-t(m)
remove(m)
}
#Create NetCDF
mv <- -9999 # missing value to use
L <- prod(dimMATR,dimMATC,12)
var3d <- var.def.ncdf( "monthlyav_sst", "units", list(dimX,dimY,dimT), mv,prec="double")
nc <- create.ncdf( "monthlyav_sst.nc", var3d)
put.var.ncdf(nc, var3d, m3d, start = c(1, 1, 1), count = c(1, 1, L))
close.ncdf(nc)
无论如何,我得到这个错误的输出
Error in R_nc_put_vara_double: NetCDF: Start+count exceeds dimension bound
Error in put.var.ncdf(nc, var3d, m3d, start = c(1, 1, 1), count = c(1, :
C function R_nc_put_var_double returned error
【问题讨论】:
-
你可以试试
count = c(-1, -1, -1),计数应该会自动确定。顺便说一句:你的意思是Longvector = seq(-180, 180, by = space)?