Взвешенная агрегация растров на основе классов - PullRequest
1 голос
/ 11 июля 2019

Предположим, у меня есть растр, представляющий классы землепользования в определенном разрешении.Я должен агрегировать этот растр с R до более грубого разрешения и подхода модальных значений, чтобы иметь наиболее доминирующее значение ячейки в более грубом растре.Это легко достигается с помощью

m <- aggregate(r, fact = 3, fun = modal, na.rm = TRUE)

Однако я хотел бы взвесить различные классы землепользования - например, класс леса (код 1) имеет вес 4, а класс воды (код 2) имеет вес2, а уличный класс имеет вес 1.

Есть ли функция, которая перебирает растровые ячейки и применяет вес для каждой ячейки?

Спасибо за любую помощь?

1 Ответ

1 голос
/ 11 июля 2019

Вы можете использовать reclassify для наложения весов, но что тогда?Вы все еще хотите вычислить модальное значение после этого?

Я думаю, что вы хотите, чтобы ваша собственная функция, которую вы предоставляете для агрегирования.Возможно, что-то вроде этого

library(raster)
f <- function(x, ...) {
    y <- c(
       rep(x[x==1], 4),
       rep(x[x==2], 2),
       x[x==3]
    )
    modal(y, ...)
}

r <- raster(res=5)
values(r) <- sample(c(1:3,2,3,3), ncell(r), replace=TRUE)

a <- aggregate(r, fact=10, fun=f)
...