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です。
希望は意味があります。 事前に感謝します
多くのおかげでjoberlin!あなたがそれをしているなら、最後の1つのQ。 私のラスタは、明らかに、例のシナリオよりも少し複雑で、機能を破るNAsを持っています。私は自分自身で(不成功に終わって)、あなたのコードを微調整して、NAを使って作業していましたが、問題を抱えていました。 r [12,8] < - NA – ThrushJacket
タイムアウトしました 最初のif節の後に余分なものを追加して、NAをスキップしてみました。 太いb/cを感じるような感じです。私はこの1ビットを修正できません... – ThrushJacket
私の答えを編集して、機能にNA値の処理が含まれ、NA値をサンプルラスタに追加するようにしました。 – joberlin