Cropping maps

From GRASS-Wiki
Revision as of 22:41, 31 January 2017 by Neteler (talk | contribs) (Simply use {{cmd|r.mask}} which also supports vector maps nowadays.)
Jump to navigation Jump to search

Cropping maps means taking the contents of one map (the source) and eliminating all data outside of the area you are studying (the boundary) to yield a smaller new map (the cropped map). Techniques differ depending on whether your source is raster or vector and whether your boundary is defined by another map or by coordinates. You especially might want to do this with vectors because GRASS operations always operate on the whole vector map, even features outside of the current region.

Vector source map and vector map as boundary. Use

v.overlay operator=and

Example: you have a map of roads of the USA and you want a map of only roads in California. Formerly the module v.cutter did this task; it has however been replaced by v.overlay in GRASS release 6.

Vector source map and coordinates as boundary. Set region to desired coordinates (g.region), create new vector from region extent to use as boundary using v.in.region, then v.overlay as above.

Otherwise, consider to Crop a shapefile during import.

Raster source map and raster map as boundary. Make boundary into mask using r.mask then copy raster source to new map (g.copy). All cells outside of the mask will be omitted from the new copy. Alternately, use r.mapcalc:

r.mapcalc "cropped = if(boundary,raster_source)"
r.colors map=cropped rast=source # may be required to transfer the color table

Raster source map and vector boundary. Convert the vector to a raster mask (1 where inside, null elsewhere):

v.to.rast in=vector_boundary out=raster_boundary use=val value=1

Then proceed as above for two rasters.

Update for GRASS GIS 7

  • Simply use r.mask which also supports vector maps nowadays.