将斑块栅格重新分类为按顺序编号的区域

Reclassify patchy raster into sequentially numbered regions

想象一个光栅:

library(raster)

r = raster(nrow=3, ncol=3)
r[] = c(1,NA,1,1,NA,NA,1,NA,1)
plot(r)

如何按升序重新分类 连续 块(不在对角线上)?在此示例中,图左侧的三单元格块被重新分类为“1”,右上角块被重新分类为“2”,右下角块被重新分类为“3”。

实际的重分类值(以及它们在栅格中出现的顺序)并不重要。重要的是每个 'island' 连接的(或单个单元格)都由一个新的、唯一的数字表示。

您可以使用带有参数 directions=4raster::clump 来不在对角线上连接(对于此示例数据并不重要,因为没有这种情况)。

library(raster)
r <- raster(nrow=3, ncol=3, xmx=0)
values(r) <- c(1,NA,1,1,NA,NA,1,NA,1)
x <- clump(r, directions=4)
plot(x)

请注意,我添加了 xmx=0 以避免全局栅格。没有它,只有一个补丁,因为经度 -180 和 180 相同,因此第一列和最后一列的单元格实际上是连接的。