如何在R中计算多边形重叠区域的面积?

9

有人知道如何在R中计算2个或多个多边形之间的共同区域吗?我希望这样的计算输出是该重叠区域的新多边形的坐标。

谢谢

2个回答

13

编辑:现在我会使用“raster”包中的“intersect”,“cover”,“erase”,“union”和相关函数。它们可以完成保留顶级对象和属性的繁重工作。

原始内容: 您可以使用rgeos包及其gIntersection函数。通过对成对图形进行连续调用并获取结果交集,最终可以达到目的。请参见

library(rgeos)
?gIntersection

要获取最终坐标,您需要深入了解sp包中的"SpatialPolygons"结构。请参阅vignette("sp")。


1
谢谢提供的技巧。它们指引了我正确的方向。我将尝试一些其他的包,但PBSmapping有一个非常简单明了的方法来做我需要的事情:library(PBSmapping) p1 <- data.frame(PID=rep(1, 4), POS=1:4, X=c(1,1,6,6), Y=c(1,3,3,1)) p2 <- data.frame(PID=rep(2, 5), POS=1:5, X=c(4,4,8,8,6), Y=c(2,4,4,2,1)) p3 <- joinPolys(p1,p2)plot(1,1,ylim=c(0,10),xlim=c(0,10), t="n") polygon(p1$X, p1$Y, border=2) polygon(p2$X, p2$Y) polygon(p3$X, p3$Y, col=rgb(0,0,1,0.2)) - Marc in the box

10

我想补充一下我最终使用的解决方案 - 来自 PBSmapping 包的 joinPolys 函数。

示例:

library(PBSmapping)
p1 <- data.frame(PID=rep(1, 4), POS=1:4, X=c(1,1,6,6), Y=c(1,3,3,1))
p2 <- data.frame(PID=rep(2, 5), POS=1:5, X=c(4,4,8,8,6), Y=c(2,4,4,2,1))
p3 <- joinPolys(p1,p2)
x11()
par(mar=c(3,3,1,1))
plot(1,1,ylim=c(0,5),xlim=c(0,9), t="n", xlab="", ylab="")
polygon(p1$X, p1$Y, border=2)
polygon(p2$X, p2$Y)
polygon(p3$X, p3$Y, col=rgb(0,0,1,0.2))

enter image description here


1
嗨,@Marc in the box。我正在寻找一个答案来回答我的问题:如何使用R计算两个中心对齐的任意多边形(没有孔)之间的非重叠区域?看起来你的问题和我的类似(尽管我想要“补集区域”),但我无法解决它。我想要这个区域(标量单位)。你能否在这个方向上帮助我?提前致谢。 - Janak
@Mark,太棒了 - 正是我需要的。谢谢你发布你的解决方案! - adilapapaya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接