crop.Rd
crop returns a geographic subset of an object as specified by an Extent object (or object from which an extent object can be extracted/created).
If x
is a Raster* object, the Extent is aligned to x
. Areas included in y
but outside the extent of x
are ignored (see extend
if you want a larger area).
# S4 method for class 'Raster'
crop(x, y, filename="", snap='near', datatype=NULL, ...)
# S4 method for class 'Spatial'
crop(x, y, ...)
Raster* object or SpatialPolygons*, SpatialLines*, or SpatialPoints* object
Extent object, or any object from which an Extent object can be extracted (see Details)
Character, output filename. Optional
Character. One of 'near', 'in', or 'out', for use with alignExtent
Character. Output dataType
(by default it is the same as the input datatype)
Additional arguments as for writeRaster
values within the extent of a Raster* object can be set to NA with mask
Objects from which an Extent can be extracted/created include RasterLayer, RasterStack, RasterBrick and objects of the Spatial* classes from the sp package. You can check this with the extent
function. New Extent objects can also be created with function extent
and drawExtent
by clicking twice on a plot.
To crop by row and column numbers you can create an extent like this (for Raster x
, row 5 to 10, column 7 to 12)
crop(x, extent(x, 5, 10, 7, 12))
RasterLayer or RasterBrick object; or SpatialLines or SpatialPolygons object.
r <- raster(nrow=45, ncol=90)
values(r) <- 1:ncell(r)
e <- extent(-160, 10, 30, 60)
rc <- crop(r, e)
# use row and column numbers:
rc2 <- crop(r, extent(r, 5, 10, 7, 15))
# crop Raster* with Spatial* object
b <- as(extent(6, 6.4, 49.75, 50), 'SpatialPolygons')
crs(b) <- crs(r)
rb <- crop(r, b)
# crop a SpatialPolygon* object with another one
p <- shapefile(system.file("external/lux.shp", package="raster"))
pb <- crop(p, b)