我有一个多层SpatRaster,想要提取大于200的像元的x、y、层和值信息.我想过使用as.array
或as.data.frame
,但它会影响性能,因为它是一个大型SpatRaster.
这是一个可复制的例子:
library(terra)
f <- system.file("ex/logo.tif", package="terra")
r <- rast(f, f) * * seq(1,2, by = 0.2)
我有一个多层SpatRaster,想要提取大于200的像元的x、y、层和值信息.我想过使用as.array
或as.data.frame
,但它会影响性能,因为它是一个大型SpatRaster.
这是一个可复制的例子:
library(terra)
f <- system.file("ex/logo.tif", package="terra")
r <- rast(f, f) * * seq(1,2, by = 0.2)
为了减少内存需求,您可以首先将不想要的单元格设置为NA
,这里使用terra::clamp
.
x <- clamp(r, 200, values=FALSE)
d <- as.data.frame(x, xy=TRUE)
head(d)
# x y lyr1 lyr2 lyr3 lyr4 lyr5 lyr6
#1 0.5 76.5 255 306 357 408 459 510
#2 1.5 76.5 255 306 357 408 459 510
#3 2.5 76.5 255 306 357 408 459 510
#4 3.5 76.5 255 306 357 408 459 510
#5 4.5 76.5 255 306 357 408 459 510
#6 5.5 76.5 255 306 357 408 459 510