Я хочу проанализировать стек растра и определить первый слой в стеке, который удовлетворяет условию для каждого пикселя.
# Generate stack of random values
library(raster)
r1 <- r2 <- r3 <- r4 <-r5 <- r6 <- r7 <- raster(ncol=10, nrow=10)
r1[] <- rpois(ncell(r1), 1)
r2[] <- rpois(ncell(r2), 1)
r3[] <- rpois(ncell(r3), 1)
r4[] <- rpois(ncell(r4), 1)
r5[] <- rpois(ncell(r5), 1)
r6[] <- rpois(ncell(r6), 1)
r7[] <- rpois(ncell(r7), 1)
# stack them
s <- stack(r1,r2,r3,r4,r5,r6,r7)
Я хочу взять этот стек и определить, что первый слой удовлетворяет условию, например: «Значение = 1 для 3 последовательных слоев» или «2 из последних 3-х слоев имеют значение = 1».
Вы можете придумать какую-нибудь функцию для этого?
Если я запускаю rasterToPoints, я могу преобразовать стек в фрейм данных со столбцами, представляющими каждое значение слоя. Это может упростить задачу.
values<-as.data.frame(rasterToPoints(s))
values<-values[,3:ncol(values)] #eliminates two columns at the beginning
values$first<-NA
На этом этапе я думаю, что мне нужно пройти цикл и заполнить значения $ first столбец первым столбцом, отвечающим моему условию.
Как только я определю правильный слой для каждого пикселя, мне понадобится выходной растр с правильным номером слоя в качестве значения для каждого пикселя.
Буду признателен за любую помощь!
В чем-то похожий вопрос размещен здесь, хотя здесь подсчитывается количество слоев, удовлетворяющих определенному условию.