这是我经过长时间潜伏后第一次在stackoverflow上发布的内容,因此请轻柔:)
我在R中使用大型气候数据集,该数据集分散在许多文件中,一次对这些文件进行分析。每个文件具有完全相同的数据,只是时间不同(每个文件大约6个月的数据)。对每个文件进行分析之后,我在坐标(长,纬度,高度,时间)处输出压力值的多维数组。
然后,我想将这些数组保存到一个netCDF文件中,但是由于每个文件中的数据都是相同的,但时间上是分开的,所以我最终希望将输出的数组连接到netCDF中的一个大数组中,即为每个文件添加netCDF文件中已存在的数组的新数据。
虽然我可以对第一个文件执行此分析,但是请创建netCDF文件并将数组写入其中,当我尝试将后续文件中的数据追加到netCDF文件时,它将返回
R_nc_inq_varndims中的错误:NetCDF:不是有效的ID
varndims.ncdf(nc,varid)中的错误:C调用返回错误
最初创建netCDF文件时,我使用了
t <- dim.def.ncdf("Time","Hours since January 1st 1901",seq(time[1],time[ntime],24),unlim=TRUE)
latitude <- dim.def.ncdf("Latitude","Degrees",seq(90,-90,-3))
longitude <- dim.def.ncdf("Longitude","Degrees",seq(0,359.25,3))
h <- dim.def.ncdf("Geopotential Height",'km',seq(1,30))
定义变量本身
pressvar <- var.def.ncdf("Pressure", "hPa", list(longitude,latitude,h,t), longname="Pressure at set geopotential heights", missval=-999,prec="double")
然后创建文件并添加数据
ncnew <- create.ncdf(new.name, pressvar)
starting <- c(1,1,1,1)
ending <- c(nlon, nlat, 30, ntime)
put.var.ncdf(ncnew, pressvar, pressure, start = starting, count = ending)
close.ncdf(ncnew)
正如我所说的,一切正常。然后,我打开下一个文件,重复分析并生成压力数组,打开原始的netCDF文件,然后
put.var.ncdf(ncnew, pressvar, pressure, start = c(1,1,1,time[1]), count = c(nlon,nlat,30,time[ntime]))
从第二个文件中读取了变量time和ntime。我认为问题出在我使用开始和计数功能,或者尝试使用无限制的时间维度,甚至可能是认为这是可能的。是否需要为每个文件重新定义尺寸t和变量pressvar?还是会导致将另一个同名变量保存到netCDF文件中?如您所知,我被这个问题所困扰。
任何帮助表示赞赏。谢谢!
似乎put.var.ncdf
无法在NetCDF文件中找到变量。尝试将最后一行更改为:
put.var.ncdf(nc = ncnew, varid = 'Pressure', vals = pressure, start = c(1,1,1,time[1]), count = c(nlon,nlat,30,time[ntime]))
现在,varid
正确地引用NetCDF文件中的变量名,而不是引用由创建的对象var.def.ncdf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句