【问题标题】:How to calculate the area of polygon overlap in R?如何计算R中多边形重叠的面积?
【发布时间】:2012-04-16 03:38:05
【问题描述】:

有谁知道如何计算 R 中 2 个或多个多边形之间的共同面积?我希望这种计算的输出是该重叠区域的新多边形的坐标。 干杯

【问题讨论】:

    标签: r overlay polygon intersection


    【解决方案1】:

    编辑:这些天我会使用 'raster' 包中的 'intersect'、'cover'、'erase'、'union' 和相关函数。他们努力保持顶级对象和属性。

    原点: 您可以使用带有 gIntersection 功能的 rgeos 包。对之间的连续呼叫和由此产生的交叉点将使您到达那里。见

    library(rgeos)
    ?gIntersection
    

    您需要进入sp 包中的“SpatialPolygons”结构以获得最终坐标。请参阅小插图(“sp”)。

    【讨论】:

    • 感谢您的提示。他们把我引向了正确的方向。将不得不尝试一些其他的包,但 PBSmapping 有一个非常简单的方法来做我需要的: library(PBSmapping) p1
    【解决方案2】:

    只是想我会添加我最终使用的解决方案 - 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))
    

    【讨论】:

    • 您好 @Marc 在框中。我正在寻找我的问题的答案:如何使用 R 计算两个中心对齐的任意多边形(没有孔)之间的非重叠区域?在我看来,您的问题与我相似(尽管我想要“补充区”),但我无法解决。我想要面积(标量单位)。你能在这个方向上帮助我吗?提前致谢。
    • @Mark,太棒了——正是我需要的。感谢您发布您的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2020-08-23
    • 2010-11-26
    • 2019-02-22
    • 2021-06-27
    • 2013-11-13
    • 2012-04-07
    • 1970-01-01
    • 2013-10-24
    相关资源
    最近更新 更多