R:重叠多边形的独特区域

时间:2017-08-22 20:20:43

标签: r overlap polygons

我试图返回每个多边形(多边形)的区域,这个区域不与另一个多边形重叠。在查看下面的图像时,我想返回一个仅包含红色部分(图像左侧)的多边形,并删除蓝色部分。

我知道我可以使用gIntersectraster::intersect找到交叉点,但问题是这些圈子是单个SpatialPolygonDataFrame的一部分。分解圈子并不是一个真正的选择,我不这么认为,因为我的SpatialPolygonDataFrame包含超过18,000个多边形。

Overlapping Circles

我在下面提供了可重复代码的示例(改编自Cotton.Rockwood this帖子。谢谢!

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')

0 个答案:

没有答案
相关问题