0

我想在第一个栅格中选择小区域并计算该区域的空间平均值,并对其他 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)

这是这样做的权利吗?

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

4

1 回答 1

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()

在此处输入图像描述

    vals <- extract( saf , e , nl = nlayers( saf ) )
    vals <- colMeans( vals )
    vals
#   red    green     blue 
#   185.9368 191.9158 208.7825 
于 2013-03-20T11:32:48.273 回答