R中的三维数组为netCDF

时间:2018-03-01 09:33:53

标签: arrays r multidimensional-array raster ncdf4

我需要在R中创建一个三维数组,其中包含分辨率为538x907像素的栅格数据。我在一个月内每小时都有这个光栅,因此1月份有744个光栅文件。我必须用R更改一些值,然后想要将它们汇总回一个可以由包ncdf4处理的数组。因此,我需要创建一个看起来像prectdata[1:538, 1:907, 1:744]的三维数组(第一个和第二个用于栅格的x和y维度,第三个用于时间维度)。如何将744栅格矩阵连接到包ncdf4的三维数组?

1 个答案:

答案 0 :(得分:1)

raster包有一个名为as.array的函数,它应该可以满足您的需求:

library(raster)

# single raster
r <- raster(matrix(runif(538*907),nrow =538))

# stack them
rstack <- do.call(stack,lapply(1:744,function(x) r))

# structure
> rstack
class       : RasterStack 
dimensions  : 538, 907, 487966, 744  (nrow, ncol, ncell, nlayers)
resolution  : 0.001102536, 0.001858736  (x, y)
extent      : 0, 1, 0, 1  (xmin, xmax, ymin, ymax)
coord. ref. : NA 


# convert to array

arr <- as.array(rstack)

# check dimensions
> dim(arr)
[1] 538 907 744