如何从某些区域中提取和计算栅格的平均值?

时间:2013-03-20 11:07:39

标签: r raster

我想在第一个栅格中选择小区域并计算该区域的空间平均值,并对其他11个栅格执行相同的操作。所以最终会获得12个值。

我试过了:

sami<- list.files("C:\\New folder (3)", "*.envi", full.names = TRUE)
saf=stack(sami)
plot(saf, 1)   ## to select a region
e <- drawExtent()## I selected the region
saf_test <- crop(saf, e)

这样做是对的吗?

然后我如何计算所选区域的空间平均值?并对所有其他栅格执行相同操作。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你可以这样做。我使用raster包中的一些示例数据。尝试并使其适应您的栅格堆栈(这应该很容易)。 extract函数将返回一个矩阵。由drawExtent为每个图层选择的区域的一列值,然后您可以使用colMeans作为该区域的平均值:

    #This particular stack has 3 'layers' - one each for the red, green and blue channels of the picture
    saf <- stack(system.file("external/rlogo.grd", package="raster")) 
    plotRGB( saf )
    e <- drawExtent()

enter image description here

    vals <- extract( saf , e , nl = nlayers( saf ) )
    vals <- colMeans( vals )
    vals
#   red    green     blue 
#   185.9368 191.9158 208.7825