1

我想将数据集中的“切片”映射保存到新的 netcdf 文件中。有问题的代码如下:

library(ncdf)
ncfname <- “cru10min30_tmp.nc”
crutmp <- open.ncdf(ncfname)

tmp.array <- get.var.ncdf(crutmp,"tmp")
close.ncdf(crutmp)
month <- 1
tmp.slice <- tmp.array[,,month]

该数据集可在http://geography.uoregon.edu/GeogR/data/raster/cru10min30_tmp.nc获得,此代码片段取自http://geography.uoregon.edu/GeogR/topics上的示例/raster01.htm。如何将“tmp.slice”二维数组保存为新的 netcdf 文件?

谢谢,如果需要更多信息来帮助您分析问题,请告诉我。

4

1 回答 1

1

您需要先创建一个新的 NetCDF 文件,然后将切片添加到新创建的文件中。

从源文件中获取维度值:

lat <- get.var.ncdf(crutmp,"lat")
lon <- get.var.ncdf(crutmp,"lon")

使用这些数组来定义您的维度:

Lat <- dim.def.ncdf(name = "lat", units = "m", vals = lat)
Lon <- dim.def.ncdf(name = "lon", units = "m", vals = lon)

沿这些维度定义一个变量:

mv <- -9999 # missing value
z <- var.def.ncdf(name = "z", units = "m", dim = list(Lat, Lon), prec="double", missval = mv)

现在创建一个包含变量 z 的新 NetCDF 文件:

newnc <- create.ncdf(filename = "tmp_slice.nc", vars = list(z))         

将您的时间片值 (tmp.slice) 放入变量 z 中:

put.var.ncdf(nc = newnc, varid = "z", vals = tmp.slice, start = c(1,1), count = c(-1,-1))

关闭新创建的 NetCDF 文件以将其写入磁盘:

close.ncdf(newnc)
于 2013-09-17T10:53:35.570 回答