In R, I have single SpatialPolygons
object (i.e. multi-polygons) containing several hundred polygons. I would like to split this SpatialPolygons
object
To separate multipolygon objects into single polygons (with holes if present) you can do
d <- disaggregate(p)
Where p
is a SpatialPolygons
object. After that, you can use d@polygons
.
For example
library(sp)
library(raster)
### example data
p1 <- rbind(c(-180,-20), c(-140,55), c(10, 0), c(-140,-60), c(-180,-20))
hole <- rbind(c(-150,-20), c(-100,-10), c(-110,20), c(-150,-20))
p1 <- list(p1, hole)
p2 <- rbind(c(-10,0), c(140,60), c(160,0), c(140,-55), c(-10,0))
p3 <- rbind(c(-125,0), c(0,60), c(40,5), c(15,-45), c(-125,0))
pols <- spPolygons(p1, p2, p3)
###
a <- aggregate(pols, dissolve=FALSE)
d <- disaggregate(a)