为什么 terra 中的 buffer 的输出不能用作 mask?

问题描述 投票:0回答:1
library(terra)

r <- rast(ncols=36, nrows=18)
r[500] <- 1
b <- buffer(r, width=5000000) 
plot(b)

s <- rast(ncols=36, nrows=18)
values(s) <- runif(ncell(s))

tst <- mask(s, b)


plot(tst)

有谁知道为什么这里的 tst 和 s 完全一样吗?我可以使用缓冲区的输出作为掩码吗?

r raster terra
1个回答
0
投票

被屏蔽的内容由

maskvalues
配置,默认情况下是
NA

因此,要么将
b
缓冲区之外的值更改为
NA
,要么使用
mask(s, b, maskvalues = FALSE)
:

library(terra)
#> terra 1.7.39
par(mfrow = c(2, 1))

r <- rast(ncols=36, nrows=18)
r[500] <- 1
b <- buffer(r, width=5000000) 
plot(b)

s <- rast(ncols=36, nrows=18)
values(s) <- runif(ncell(s))

# set FALSE values to NA
# b[!b] <- NA
# or change maskvalues arg to match the mask raster:
tst <- mask(s, b, maskvalues = FALSE)
plot(tst)

创建于 2023-08-03,使用 reprex v2.0.2

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