与缓冲区内其他多边形相交的多边形区域

area of polygon intersecting with other polygons within buffer

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

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

picture

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

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

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

as(polygons,"sf")

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

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