R:重叠多边形的唯一区域

R:重叠多边形的唯一区域,r,overlap,polygons,R,Overlap,Polygons,我试图返回每个多边形(一个多边形)的面积,它不与另一个多边形重叠。当看下图时,我想返回一个只包含红色部分(图像左侧)的多边形,删除蓝色部分 我知道我可以使用gIntersect或光栅::intersect找到交点,但问题是这些圆是单个空间多边形数据帧的一部分。我不认为对圆进行分解真的是一种选择,因为我的SpatialPolygonDataFrame包含18000多个多边形 我在下面提供了一个可复制代码的示例(改编自文章)。谢谢 box <- readWKT("POLYGON((-180

我试图返回每个多边形(一个多边形)的面积,它不与另一个多边形重叠。当看下图时,我想返回一个只包含红色部分(图像左侧)的多边形,删除蓝色部分

我知道我可以使用
gIntersect
光栅::intersect
找到交点,但问题是这些圆是单个
空间多边形数据帧的一部分。我不认为对圆进行分解真的是一种选择,因为我的
SpatialPolygonDataFrame
包含18000多个多边形

我在下面提供了一个可复制代码的示例(改编自文章)。谢谢

box <- readWKT("POLYGON((-180 90, 180 90, 180 -90, -180 -90, -180 90))")
proj4string(box) <- CRS("+proj=cea +datum=WGS84")
set.seed(1)
pts <- spsample(box, n=10, type="random")
pols <- gBuffer(pts, byid=TRUE, width=50) # create circle polys around each point
merge = sample(1:40, 10, replace = T) # create vector of 100 rand #s between 0-40 to merge pols on

Sp.df1 <- gUnionCascaded(pols, id = merge) # combine polygons with the same 'merge' value
# create SPDF using polygons and randomly assigning 1 or 2 to each in the @data df
Sp.df <- SpatialPolygonsDataFrame(Sp.df1,
                                  data.frame(z = factor(sample(1:2, length(Sp.df1), replace = TRUE)),
                                             row.names= unique(merge)))
plot(Sp.df, col='blue')
i <- gDifference(Sp.df, Sp.df, byid=T)
plot(i, col='red')

box可能肯定会在问题本身中包含相关代码。如果您提供一个示例输入数据,以便测试可能的解决方案,那么会更容易提供帮助。感谢@MrFlick!我引用了我添加的内容,但没有实际添加。现在已经处理好了。您如何知道这是两个重叠的圆,而不是three单独的形状?@G5W,因为数据的创建方式。它是由缓冲点创建的一系列多边形。可能一定要在问题本身中包含相关代码。如果您提供一个示例输入数据,以便测试可能的解决方案,会更容易提供帮助。感谢@MrFlick!我引用了我添加的提示,但实际上没有添加。现在已经处理好了。你怎么知道它是两个重叠的圆而不是三个独立的形状?@G5W,因为数据的创建方式。它是由缓冲点创建的一系列多边形。