我有一个土地覆盖的栅格文件,我已经减少到仅包含树木覆盖单元。我在栅格包中使用了clump
来聚集()一起连续的森林区域。这使得所有单元格相互接触相同的ID,因为它们是同一个补丁的一部分。
然后我想找出每个丛块的PatchStat(),我通过将我的丛块栅格转换为as.matrix来完成。我试图让PatchStat()对栅格执行此操作,但只有在矩阵中才有效。使用R中的SDMTools的PatchStat值创建栅格
我现在想用补丁stat输出做一个光栅,即“perim.area.ratio”。因此,每个对应于丛1的单元格将获得与丛1相对应的perim.area.ratio值。为此,我从我的丛块栅格中创建了一个data.frame():lon, lat, layer(clumpID), cellID
。
我试图合并我的clump栅格data.frame与PatchStat输出使用层和patchID。但是,发生错误:
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"))
帮助文件(http://rgm2.lab.nig.ac.jp/RGM2/func.php?rd_id=SDMTools:PatchStat)表示:“一个带有ConnCompLabel标识的单个补丁的数据矩阵;矩阵可以是'asc'(adehabitat包),'RasterLayer'(光栅包)或'SpatialGridDataFrame'(sp包)“类的光栅。如果你正在使用RasterLayer(如果你使用'raster',你可能是),你可以避免必须转换为矩阵并返回。 – 2012-03-15 08:19:28
Hi @RomanLustirk,感谢您的回复。是的,我正在使用'RasterLayer',当我检查我的栅格的属性时,它会在顶部显示它。但是,如果我只是放入栅格,它就不起作用,我收到错误信息......不知道为什么,但无法弄清楚这一点!干杯,亚当 – Adam 2012-03-15 09:59:17
什么是错误信息? 'r < - raster(ncols = 12,nrows = 12); r [] < - round(runif(ncell(r))* 0.6); rc < - clump(r); PatchStat(rc)'适合我。 – jbaums 2012-03-15 13:01:56