访问SpatRaster中的单元格值,了解列、行和图层

问题描述 投票:0回答:1

下午好,

我一直在使用 R 的 terra 包,并且一直在寻找一种访问单个单元格值的方法。

例如,我希望

raster_1[1, 2, 1]
返回一个数值,告诉我位于第一层第二列第一行的单元格有哪个值,但我得到了

      mean
1 2.106639

这种行为是预期的吗?无论如何,这个平均值是多少,[行,列,层]不应该返回一个数值而不是矩阵吗?

非常感谢您的宝贵时间!

r indexing raster terra
1个回答
0
投票

正如@margusl提到的,你的结果显示了你的预期值,但它用图层的名称命名了该值。根据 Terra help doc,语法为

x[i, j, k]
,其中
i
是行,
j
是列,
k
是层。我们可以确保通过可重现的示例返回预期结果。

library(terra)
#> terra 1.7.39
r <- c(
  rast(matrix(1:100, nrow=10, ncol=10)),
  rast(matrix(201:300, nrow=10, ncol=10)),
  rast(matrix(301:400, nrow=10, ncol=10))
) |> 
  setNames(c("layer1", "layer2", "layer3"))

r[1, 2, 1]
#>   layer1
#> 1     11

r <- setNames(r, c("mean", "a", "b"))
r[1, 2, 1]
#>   mean
#> 1   11

就像在您的示例中一样,“mean”不是指函数名称,而是指图层名称。

© www.soinside.com 2019 - 2024. All rights reserved.