基本上,我用ASCII的形式计算了一个全局分布概率模型,例如: gdpm
。 gdpm
的值全部为0和1之间如何计算R的土地覆盖面积
然后我输入从形状文件的本地地图:
shape <- file.choose()
map <- readOGR(shape, basename(file_path_sans_ext(shape)))
下一步,我光栅化gdpm
,并裁剪使用本地地图:
ldpm <- mask(gdpm, map)
然后,我重新分类该连续模型转换为离散的模型(I划分模型6层):
recalc <- matrix(c(0, 0.05, 0, 0.05, 0.2, 1, 0.2, 0.4, 2, 0.4, 0.6, 3, 0.6, 0.8, 4, 0.8, 1, 5), ncol = 3, byrow = TRUE)
ldpmR <- reclassify(ldpm, recalc)
我已经有了一个裁剪和重新分类的栅格,现在我需要总结土地覆盖,也就是说,每个级别,我想计算的本地地图的每个区域的面积比例。(我不知道如何用术语来描述它)。我发现,跟着一个例子(RobertH):
ext <- raster::extract(ldpmR, map)
tab <- sapply(ext, function(x) tabulate(x, 10))
tab <- tab/colSums(tab)
但我不知道是否可行,因为tab
输出是混乱的。 那么如何正确计算土地覆盖面积呢?我如何在每个多边形内应用正确的方法?
我的原始数据是太大,我只能提供替代光栅(我认为这个例子应该适用不同的重新分类矩阵):
或者你可以生成测试光栅(RobertH ):
library(raster)
s <- stack(system.file("external/rlogo.grd", package="raster"))
writeRaster(s, file='testtif', format='GTiff', bylayer=T, overwrite=T)
f <- list.files(pattern="testtif_..tif")
我也有一个关于绘制光栅问题:
r <- as(r, "SpatialPixelsDataFrame")
r <- as.data.frame(r)
colnames(r) <- c("value", "x", "y")
我做了这个转换,使光栅绘图 - 与ggplot2能够,有没有一个更简洁的方法?
我做了一些澄清,虽然我不知道正确的术语。 –