【问题标题】:Get the same pixels of two raster获取两个栅格的相同像素
【发布时间】:2022-08-17 23:07:37
【问题描述】:
我有一个关于方法的问题。所以我有两个光栅。一个栅格来自 2018 年,另一个栅格来自 2019 年。现在我想看看 2018 年的相同像素是否也出现在 2019 年。所以我只想找出相同的像素是否在第二年再次可用。
到目前为止,我会通过将 2018 年的值转换为 1 和 NA,然后将 2018 年的栅格乘以 2019 年来做到这一点。所以所有相同的像素将在 2019 年保留,并且与 NA 不同。至少那是我的理论。
我的问题与是否没有包或更优雅的方式来找出这两个栅格的共同点有关?
提前致谢
标签:
r
statistics
raster
pixel
【解决方案1】:
看看?terra::all.equal:
比较两个 SpatRaster 的(接近)相等性。
首先比较对象的属性。如果这些相同,则还比较栅格单元的(可能很小)样本。
可以使用 maxcell 参数增加使用的样本大小。您可以将其设置为 Inf,但对于大型栅格,您的计算机可能没有足够的内存。
例子:
library(terra)
#> terra 1.6.7
x <- sqrt(1:100)
mat <- matrix(x, 10, 10)
r1 <- rast(nrows=10, ncols=10, xmin=0, vals = x)
r2 <- rast(nrows=10, ncols=10, xmin=0, vals = mat)
all.equal(r1, r2)
#> [1] "Component \"lyr.1\": Mean relative difference: 0.3858482"
all.equal(r1, r1*1)
#> [1] TRUE
这听起来像是一种方法,应该适用于您的问题,而无需手动重新分类。
【解决方案2】:
示例数据
library(terra)
s <- rast(system.file("ex/logo.tif", package="terra"))
r1 <- s[[1]]
r2 <- s[[2]]
解决方案
x <- r1 == r2
plot(x)