私は土地被覆のラスター ファイルを持っており、樹木被覆セルだけを含むように縮小しました。私はclump
ラスター パッケージで使用して、隣接する森林の領域をまとめて clump() しました。これにより、互いに接触しているすべてのセルが同じパッチの一部であるため、同じ ID が与えられます。
次に、クランプ ラスターを as.matrix に変換して、各クランプの PatchStat() を計算します。PatchStat() を取得してラスターに対してこれを実行しようとしましたが、マトリックス内にある場合にのみ機能します。
ここで、パッチ統計出力、つまり「perim.area.ratio」を使用してラスターを作成したいと考えています。したがって、クランプ 1 に対応する各セルは、クランプ 1 に対応する perim.area.ratio 値を取得します。これを行うために、クランプ ラスターから data.frame() を作成しましたlon, lat, layer(clumpID), cellID
。layerとpatchID
を使用して、クランプ ラスター data.frame を PatchStat 出力とマージしようとしました。ただし、エラーが発生します。
fix.by(by.x, x) のエラー:「by」は有効な列を指定する必要があります。
これを別の方法で行う方法、またはこれらの列が有効でない理由はありますか? 以下のコード。
clump <- raster(file.choose())
library(SDMTools)
clumpval <- rasterToPoints(clump)
clumpcell <- cellFromXY(clump, clumpval[, c('x', 'y')] )
clumpdf <- data.frame(clumpval, clumpcell)
ps.data <- PatchStat(as.matrix(clump))
merged.data.all <- merge(clumpdf, ps.data1, by=c("layer", "patchID"))