Реклассифицировать пятнистый растр в последовательно пронумерованные регионы - PullRequest
0 голосов
/ 25 апреля 2019

Представьте себе растр:

library(raster)

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

Как я могу реклассифицировать смежные патчи (не по диагонали) в порядке возрастания?В этом примере трехэлементный патч в левой части графика реклассифицируется как «1», верхний правый патч - как «2», а нижний правый - как «3».

ФактическийПереклассифицированные значения (и порядок их появления в растре) не имеют значения.Важно то, что каждый «остров» связанных (или отдельных ячеек) представлен новым уникальным номером.

1 Ответ

1 голос
/ 25 апреля 2019

Вы можете использовать raster::clump с аргументом directions=4, чтобы не соединяться по диагонали (с данными этого примера это не имеет значения, поскольку такого случая нет).

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 одинаковы, и, таким образом, ячейки первого и последнего столбцов фактически связаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...