我想在第一个栅格中选择小区域并计算该区域的空间平均值,并对其他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)
这样做是对的吗?
然后我如何计算所选区域的空间平均值?并对所有其他栅格执行相同操作。 提前谢谢。
答案 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()
vals <- extract( saf , e , nl = nlayers( saf ) )
vals <- colMeans( vals )
vals
# red green blue
# 185.9368 191.9158 208.7825