The output of mask()
is a GRaster
that has the same as values as the input raster. However, if the mask
argument is a GRaster
, the output will have NA
values in the same cells that the mask
raster has NA
cells. If the mask
argument is a GVector
, then the output raster will have NA
values in cells the GVector
does not cover.
Usage
# S4 method for class 'GRaster,GRaster'
mask(x, mask, inverse = FALSE, maskvalues = NA, updatevalue = NA)
# S4 method for class 'GRaster,GVector'
mask(x, mask, inverse = FALSE, updatevalue = NA)
Arguments
- x
A
GRaster
.- mask
A
GRaster
orGVector
.- inverse
Logical: If
TRUE
, the effect of the mask is inverted. That is, a copy of the input raster is made, but cells that overlap with anNA
in the mask raster or are not covered by the mask vector retain their values. Cells that overlap with anNA
in the mask raster or overlap with the mask vector are forced toNA
.- maskvalues
Numeric vector, including
NA
(only for whenmask
is aGRaster
): The value(s) in the mask raster cells that serve as the mask. The default isNA
, in which case cells in the input raster that overlap withNA
cells in the mask are forced toNA
.- updatevalue
Numeric, including
NA
(default): The values assigned to masked cells.
See also
terra::mask()
, GRASS module r.mask
Examples
if (grassStarted()) {
# Setup
library(sf)
library(terra)
# Example data
madElev <- fastData("madElev") # raster
madForest <- fastData("madForest2000") # raster
madCoast <- fastData("madCoast4") # vector
# Convert to GRasters and GVectors
elev <- fast(madElev)
forest <- fast(madForest)
coast <- fast(madCoast)
ant <- coast[coast$NAME_4 == "Antanambe"]
# Mask by a raster or vector:
maskByRast <- mask(elev, forest)
plot(c(forest, maskByRast))
maskByVect <- mask(elev, ant)
plot(maskByVect)
plot(ant, add = TRUE)
# Mask by a raster or vector, but invert mask:
maskByRastInvert <- mask(elev, forest, inverse = TRUE)
plot(c(forest, maskByRastInvert))
maskByVectInvert <- mask(elev, ant, inverse = TRUE)
plot(maskByVectInvert)
plot(ant, add = TRUE)
# Mask by a raster, but use custom values for the mask:
maskByRastCustomMask <- mask(elev, elev, maskvalues = 1:20)
plot(c(elev <= 20, maskByRastCustomMask))
# Mask by a raster or vector, but force masked values to a custom value:
byRastCustomUpdate <- mask(elev, forest, updatevalue = 7)
plot(byRastCustomUpdate)
byVectCustomUpdate <- mask(elev, ant, updatevalue = 7)
plot(byVectCustomUpdate)
# Mask by a raster, inverse, custom values, and custom update:
byRastAll <-
mask(elev, elev, inverse = TRUE, maskvalues = 1:20, updatevalue = 7)
plot(c(elev, byRastAll))
}