与缓冲区内其他多边形相交的多边形区域
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
我构建了许多缓冲多边形,我想计算以下内容:
缓冲区域减去与缓冲区相交的多边形面积
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