我有一个土地覆盖栅格文件,我已将其缩减为仅包含树木覆盖单元格。我clump
在 raster 包中使用了 clump() 将森林的连续区域聚集在一起。这使所有相互接触的单元格都具有相同的 ID,因为它们是同一个补丁的一部分。
然后我想找出每个丛的 PatchStat(),我通过将丛栅格转换为 as.matrix 来做到这一点。我试图让 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"))