我有一個土地覆蓋的柵格文件,我已經減少到僅包含樹木覆蓋單元。我在柵格包中使用了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