基于几种条件的栅格特定层的特定层的Na细胞

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

I有一个带有三层的栅格:A,B和C。在每一层中,有几个带有NAS的单元。 我想用Na替换某些单元,为此我在每一层中都以-999的值来检索ID号。 在下面的我可重复的示例中,应替换为-999的Na单元的ID数是由“测试”变量定义的,对应于8、4和20.

但是当我这样做时:

r[c(8, 4, 20)] <- -250

,a,b和c层中的细胞8,a,b和c层中的细胞4,以及A层A,B和C中的细胞20均由-999代替-999。我只希望在A层中的单元8,B层中的细胞4和C层中的Cell 20替换为-999(请参阅下图中的红色圆圈)。

我认为应该应用两个条件:1)细胞8、4和20,以及2)具有NA的细胞。
但是,我不知道如何基于两种条件选择单元格。
## Build the raster df <- data.frame(x = c(1, 2, 3, 4, 5, 6, 7, 8, 9), y = c(1, 2, 3, 4, 5, 6, 7, 8, 9), var1 = c(1, 9, 5, 9, 4, 2, 2, 7, 6), var2 = c(3, 3, 7, 8, 9, 5, 6, 7, 3), var3 = c(1, 1, 8, 8, 4, 4, 4, 1, 2)) r <- tidyterra::as_spatraster(df, xycols = c(1, 2), crs = "EPSG:4326") terra::plot(r) m1 <- matrix(1:25, nrow=5, ncol=5) m1[2, 3] <- NA r1 <- terra::rast(m1) m2 <- matrix(1:25, nrow=5, ncol=5) m2[1, 4] <- NA r2 <- terra::rast(m2) m3 <- matrix(1:25, nrow=5, ncol=5) m3[4, 5] <- NA r3 <- terra::rast(m3) r <- c(r1, r2, r3) names(r) <- c("A", "B", "C") terra::plot(r) ## ID numbers of the NA cells test <- c(8, 4, 20) ## Test r[c(8, 4, 20)] <- -250 terra::plot(r)

enter image description here 您可以使用

is.na()
r gis
1个回答
0
投票

values(r)[is.na(values(r))] <- -250 terra::plot(r)

enter image description here

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.