0
큰 래스터를 필터링하고 싶지만 윈도우의 가운데 셀이 특정 값일 경우에만 필터를 실행하고 싶습니다. 기본적으로 나는 이미지에서 약간의 반점 (잘못된 반응)을 제거하고 싶습니다 (0의 픽셀을 1)하지만, 윈도우 센터 1R 초점 (래스터) - 조건부 필터 (윈도우 중심 값 1 인 경우에만 실행)
# create some raster data
library(raster)
r <- raster(ncols=12, nrows=12)
set.seed(0)
r[] <- round(runif(ncell(r))*0.7)
plot(r)
# custom filter
w=matrix(1,5,5)
gameOfLife <- function(x) {
f <- focal(x, w=w, pad=TRUE, padValue=0)
# window with with less than 5 cells die
x[f < 5] <- 0
# window with 5 or more cells live
x[f >= 5] <- 1
x
}
plot(gameOfLife(r))
위의 2 개의 동그라미가있는 셀은 기준 (최소 5 개의 값이 주위에 있습니다)을 충족하지만 초기에는 0이었고 0으로 유지되기를 원합니다. 따라서 필터는 중심 값 이미 1입니다.
희망이 맞습니다. 미리 감사드립니다.
많은 감사합니다. 마지막 Q 한가지. 내 래스터는 분명히 예제 시나리오보다 조금 복잡하고 기능을 해치는 NAs가 있습니다. 나 자신의 (unsuccessfuly) NA를 통해 작동하지만 문제가 코드를 조정할려고 노력했습니다. r [12,8] <- NA – ThrushJacket
시간 초과되었습니다. 초기 if 절 뒤에 추가로 추가하면 NA를 건너 뜁니다. 두꺼운 느낌의 b/c 디프 느낌 ... – ThrushJacket
기능이 이제 NA 값 처리를 포함하고 예제 래스터에 NA 값을 추가하도록 내 대답을 편집했습니다. – joberlin