У меня есть растровый файл растительного покрова, который я уменьшил, чтобы он содержал только ячейки древесного покрова. Я использовал clump
в растровом пакете, чтобы объединить () смежные области леса. Это дает всем ячейкам, касающимся друг друга, один и тот же идентификатор, поскольку они являются частью одного и того же патча.
Затем я хочу выяснить PatchStat () для каждого скопления, что я делаю, преобразовав свой растр скопления в as.matrix. Я пытался заставить PatchStat () сделать это с растром, но он работал бы только в матрице.
Теперь я хочу создать растр с выводом статистики патча, а именно "perim.area.ratio". Таким образом, каждая ячейка, которая соответствует сгустку 1, получит значение perim.area.ratio, которое соответствует сгустку 1. Для этого я создал data.frame () из своего растра сгустка, который имел: lon, lat, layer(clumpID), cellID
.
Я попытался объединить мой растровый файл data.frame с выводом PatchStat, используя layer и 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"))