打开多个.nc然后写多个栅格

时间:2016-07-20 18:41:01

标签: r netcdf r-raster

我是一名新程序员。最近我获得了1,850个.nc文件,我将其子集化为480个文件。每个文件名都有一个数字来表示月份。我想做的就是:

  1. 打开所有.nc文件
  2. 将所有.nc文件写入栅格格式
  3. 平均12个文件中的所有光栅文件,每月一个。
  4. 我知道这不应该很困难,但我遇到了麻烦。到目前为止,我还没有超越第2步:

    library(RNetCDF)
    library(raster)
    library(rgdal)
    
    files=list.files(pattern='*.nc', full.names=TRUE)
    
    for (i in seq_along(files)){
     nc=open.nc(files[i])}
    
    list(nc) 
    
    for(i in 1:length(nc)){
      rnc<-raster(nc[i])
      writeRaster(rnc, filename=names(rnc), bylayer=TRUE, format="GTiff")}
    

    正如大家所知,我仍然是R的新手/学生,我想我已经迈出了第1步,第2步的for循环似乎不起作用。一旦我完成了1和2,我就可以继续工作3(如果你们都能看到第3步的简单答案,请分享)。

    谢谢。

1 个答案:

答案 0 :(得分:3)

您可以这样做:

library(raster)
library(ncdf4)
files <- list.files(pattern='*.nc', full.names=TRUE)

或者:

s <- stack(files)
rnc <- writeRaster(s, filename="x", bylayer=TRUE, format="GTiff")}

或循环:

for (f in files) {
    r <- raster(f)
    fout <- extension(f, '.tif')
    r <- writeRaster(r, filename=fout, datatype='FLT4S')
}

要获得月平均值,您可以执行以下操作:

months <- stackApply(s, 1:12, mean)

假设文件的顺序正确。