Erase parts of a SpatialPolygons* or SpatialLines* object with a SpatialPolygons* object

# S4 method for SpatialPolygons,SpatialPolygons
erase(x, y, ...)

# S4 method for SpatialLines,SpatialPolygons
erase(x, y, ...)

Arguments

x

SpatialPolygons or SpatialLines object

y

SpatialPolygons object

...

Additional arguments (none)

Value

Spatial*

See also

The equivalent for raster data is mask

Examples

# erase parts of polygons with other polygons
p <- shapefile(system.file("external/lux.shp", package="raster"))
b <- as(extent(6, 6.4, 49.75, 50), 'SpatialPolygons')
crs(b) <- crs(p)
e <- erase(p, b)
plot(e)


  
# erase parts of lines with polygons  
  r <- raster(extent(p) +c(-.1,.1,-.1,.1), crs=crs(p))
  start <- xyFromCell(r, cellFromCol(r, 1))
  end <- xyFromCell(r, cellFromCol(r, ncol(r)))
  lines <- do.call(spLines, lapply(1:10, function(i)rbind(start[i,], end[i,])))
  crs(lines) <- crs(p)
  
  e2 <- erase(lines, p)
  plot(p)
  lines(lines, col='blue', lwd=4, lty=3)
  lines(e2, col='red', lwd=2)