【发布时间】:2018-05-16 22:50:57
【问题描述】:
基本上,我以 ASCII 的形式计算了一个全局分布概率模型,比如:
gdpm。 gdpm 的值都在 0 到 1 之间。
然后我从 shape 文件中导入了本地地图:
shape <- file.choose()
map <- readOGR(shape, basename(file_path_sans_ext(shape)))
下一步,我栅格化gdpm,并使用本地地图进行裁剪:
ldpm <- mask(gdpm, map)
然后,我把这个连续模型重新分类为离散模型(我把模型分成了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 制作一个可以绘制的光栅图,有没有更简洁的方法?
【问题讨论】:
-
我已经做了一些澄清,虽然我不知道正确的术语。
标签: r gis geospatial r-raster