【问题标题】:area of polygon intersecting with other polygons within buffer与缓冲区内其他多边形相交的多边形区域
【发布时间】:2021-08-04 21:00:58
【问题描述】:

我已经构建了许多缓冲多边形,我想计算以下内容:

缓冲面积减去与缓冲区相交的多边形面积

picture

为了更好地理解我的问题,我附上了一张图片。在图片中,您可以看到带有缓冲区的红色多边形。在这些缓冲区内是其他多边形或其他多边形的一部分。我现在需要计算红色多边形缓冲区内其他多边形的面积。是否也可以仅计算相交多边形的一部分(因为某些多边形仅与缓冲区部分相交)?

我正在使用包 sf、sp 和 rgdal,我考虑过使用 intersect 命令?但是我完全不知道如何从这个问题开始,因为我通常是 R 的新手(否则我可以为你提供一些我失败的代码)。以下是有关我的数据的一些信息:

class(polygons)
[1] "SpatialPolygonsDataFrame"
attr(,"package")
[1] "sp"

as(polygons,"sf")

【问题讨论】:

  • 我建议您编写自己的解决方案作为答案并接受该答案。然后未来的访问者可以看到这个问题有一个解决方案。

标签: r polygon spatial sf


【解决方案1】:

我已经通过以下代码解决了我的问题:

data1con<-as(data1, "sf")
geom1<-st_geometry(data1con)
buff1<-st_buffer(geom1,dist=5000)
plot(buff1, border="green")
plot(data1, border="red", add=TRUE)
plot(data2, add=TRUE)




data2con<-as(data2, "sf")
st_is_valid(data2con)

[1]  TRUE  TRUE FALSE  TRUE  TRUE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE  TRUE  TRUE
[15]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[29]  TRUE  TRUE  TRUE  TRUE

st_is_valid(buff1)

TRUE TRUE TRUE TRUE TRUE TRUE

valid<-st_make_valid(data2con)
intersection<-st_intersection(buff1,valid)
plot(intersection, col="blue", add=TRUE)
area<-st_area(intersection)

picture_update

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2015-09-06
    • 2015-05-31
    • 2012-11-01
    • 2012-03-02
    • 2014-01-17
    • 1970-01-01
    相关资源
    最近更新 更多