Skip to contents

fasterRaster: Processing of large-in-memory/-on disk rasters and spatial vectors in using GRASS GIS. Most functions in the terra and sf packages are recreated. Processing of medium-sized and smaller spatial objects will nearly always be faster using terra or sf. To use most of the functions you must have the stand-alone version of GRASS GIS version 8.3 or higher (not the OSGeoW4 installer version). Note that due to differences in how GRASS, terra, and sf were implemented, results will not always be strictly comparable between functions for the same operation.

Most useful tutorials and functions:

A quick-start tutorial
A tutorial on raster data types
faster(): Set the directory where GRASS is installed on your system, and set or get other package-wide options
fast(): Convert a SpatRaster, SpatVector, or sf vector to fasterRaster's raster format (GRasters) or vector format (GVectors), or load one from a file
rast(), vect(), and st_as_sf(): Convert GRasters and GVectors to SpatRasters, SpatVectors, or sf vectors
writeRaster() and writeVector(): Save GRasters or GVectors to disk

Properties of GRasters

crs(): Coordinate reference system
datatype(): Data type
dim() and dim3d(): Number of rows, columns, and depths
ext(), N(), S(), E(), W(), top(), and bottom(): Spatial extent
freq(): Frequencies of cell values in a raster
is.2d() and is.3d(): Is an object 2- or 3-dimensional?
is.int(), is.cell(), is.float(), is.doub(): GRaster data type (integer/float/double)
is.factor(): Does a raster represent categorical data?
is.lonlat(): Is an object projected (e.g., in WGS84)?
levels(): Names of levels in a categorical GRaster
minmax(): Minimum and maximum values across all non-NA cells
names(): GRaster names
ncol(): Number of columns
nacell(): Number of NA cells
ncell(): Number of cells
ncell3d(): Number of cells of a 3D GRaster
ndepth(): Number of depths of a 3D GRaster
nlyr(): Number of layers
nonnacell(): Number of non-NA cells
nrow(): Number of rows
nlevels(): Number of categories
res(), xres(), yres(), and zres(): Spatial resolution
sources(): Name of the GRaster in GRASS
topology(): Dimensionality (2D or 3D)
zext(): Vertical extent
zres(): Vertical resolution

Functions that operate on or create GRasters

Arithmetic: Mathematical operations on GRasters: +, -, *, /, ^, %% (modulus), %/% (integer division)
Logical comparisons: <, <=, ==, !=, >=, and >, plus %in% and %notin% (for categorical rasters only)
Logical operators: |and &

Single-layer mathematical functions (applied to each layer of a GRaster):

Multi-layer functions (applied across layers of a "stack" of GRasters):

The operators $ and [[ can be used to subset or remove specific layers of a GRaster.
The [<- operator can be used to replace values of cells of a GRaster.
The assign operators, $<-, [[<-, and add<- can be used to replace specific layers of a GRaster.
as.int(), as.float(), as.doub(): Change data type (integer/float/double)
as.lines(): Convert a GRaster to a "lines" vector
as.points(): Convert a GRaster to a "points" vector
as.polygons(): Convert a GRaster to a "polygons" vector
aggregate(): Aggregate values of GRaster cells into larger cells
bioclims(): BIOCLIM rasters (classic set and extended set)
buffer(): Create a buffer around non-NA cells
app(): Apply a user-defined function to multiple layers of a GRaster (with helper functions appFuns() and appCheck())
c(): "Stack" two or more rasters
cellSize(): Cell area
classify(): Partition cell values into strata
clump(): Group adjacent cells with similar values
combineCats(): Combine values from two or more categorical and/or integer rasters
combineLevels(): Combine the "levels" tables of two or more categorical GRasters
crop(): Remove parts of a GRaster
denoise(): Remove "noise" from a GRaster using a principal components analysis (PCA)
distance(): Distance to non-NA cells, or vice versa
extend(): Add rows and columns to a GRaster
extract(): Extract values from a GRaster at locations of a GVector
fillNAs(): Fill NA cells
focal(): Calculate cell values based on values of nearby cells
fragmentation(): Landscape fragmentation class from Riitters et al. (2020)
global(): Summary statistics across cells of each GRaster layer
hist(): Histogram of GRaster values
interpIDW(): Interpolate values at points to a GRaster
kernel(): Kernel density estimator of points
layerCor(): Correlation or covariance between two or more GRaster layers
longlat(): Create longitude/latitude rasters
mask(): Remove values in a GRaster based on values in another GRaster or vector
maskNA(): Mask all non-NA cells or all NA cells
match(), %in%, and %notin%: Find which cells of a GRaster match or do not match certain values
merge(): Combine two or more rasters with different extents and fill in NAs
names<-: Assign names to a GRaster
noise(): Remove coarse-scale trends from a GRaster, leaving just fine-scale "noise"
pairs(): Plot correlations between GRaster layers
pca(): Apply a principal components analysis (PCA) to a GRaster
pcs(): Retrieve a principal components model from a PCA GRaster generated using pca()
plot(): Display a GRaster
plotRGB(): Display a multispectral GRaster using red, blue, green, and alpha channels
project(): Change coordinate reference system and cell size
predict(): Make predictions to a GRaster from a linear model or generalized linear model
resample(): Change cell size
reorient(): Convert degrees between 'north-orientation' and 'east orientation'
scale(), scalepop(), and unscale(): Subtract means and divide by standard deviations, or inverse of that
selectRange(): Select values from rasters in a stack based on values in another GRaster
spatSample(): Randomly points from a GRaster
subst(): Re-assign cell values
thinLines(): Reduce linear features on a GRaster so linear features are 1 cell wide
tiles(): Divide a GRaster into spatially exclusive subsets (though with possible overlap)
trim(): Remove rows and columns from a GRaster that are all NA
zonal(): Statistics (mean, sum, etc.) on areas of a GRaster defined by sets of cells with the same values in another GRaster, or by geometries in a GVector
zonalGeog(): Geographic statistics (area, perimeter, fractal dimension, etc.) for sets of cells with the same values

Functions for creating GRasters de novo

fractalRast(): Create a fractal GRaster
rnormRast(): A random GRaster with values drawn from a normal distribution
rSpatialDepRast(): Create a random GRaster with or without spatial dependence
runifRast(): A random GRaster with values drawn from a uniform distribution
sineRast(): Sine wave rasters

Functions for analysis of terrain and flow of water across landscapes

as.contour(): Contour lines from a GRaster
flow(): Identify watershed basins and direction and accumulation of flow
flowPath(): Path of water flow across a landscape
geomorphons(): Identify terrain feature types
hillshade(): Create a hillshade GRaster
horizonHeight(): Horizon height
sun(): Solar radiance and irradiance
ruggedness(): Terrain Ruggedness Index
streams(): Create stream network
terrain(): Slope, aspect, curvature, and partial slopes
wetness(): Topographic wetness index

Functions operating on categorical (factor) rasters

%in%, and %notin%: Mask cells that match or do not match a given category
activeCat() and activeCats(): Column(s) that defines category labels
activeCat<-: Set column that defines category labels
addCats(): Add new columns to a "levels" table
addCats<-: Add new rows (levels) to a "levels" table
categories(): Set "levels" table for specific layers of a categorical raster
catNames(): Column names of each "levels" table
cats(): "Levels" table of a categorical raster
combineCats(): Combine categories from two or more categorical rasters
combineLevels(): Combine the "levels" tables of two or more categorical GRasters
complete.cases(): Find rows of a categorical GRaster's "levels" table that have no NAs in them
droplevels(): Remove one or more levels
freq(): Frequency of each category across cells of a raster
is.factor(): Is a raster categorical?
levels(): "Levels" table of a categorical raster
levels<-: Set "levels" table of a categorical raster
match(), %in%, and %notin%: Find which cells of a GRaster match or do not match certain category labels
minmax(): "Lowest" and "highest" category values of categorical rasters (when argument levels = TRUE)
missing.cases(): Find rows of a categorical GRaster's "levels" table that have at least one NA in them
missingCats(): Values that have no category assigned to them
nlevels(): Number of levels
subst(): Re-assign category levels
zonalGeog(): Geographic statistics (area, perimeter, fractal dimension, etc.) for sets of cells with the same values

Functions for analysis of remote sensing rasters

compositeRGB(): Combine red, green, and blue color bands to make a composite GRaster
plotRGB(): Display a multispectral GRaster using red, blue, green, and alpha channels
vegIndex(): Vegetation indices from surface reflectance

Functions that operate on terra SpatRasters

bioclims(): BIOCLIM rasters (classic set and extended set)
fragmentation(): Landscape fragmentation class from Riitters et al. (2020)

Properties of GVectors

crs(): Coordinate reference system
datatype(): Data type of fields
dim(): Number of geometries and columns
expanse(): Area of polygons or length of lines
ext(), N(), S(), E(), W(), top(), and bottom(): Spatial extent
geomtype(): Type of vector (points, lines, polygons)
is.2d() and is.3d(): Is an object 2- or 3-dimensional?
is.lonlat(): Is an object projected (e.g., in WGS84)?
is.points(), is.lines(), is.polygons(): Does a GVector represent points, lines, or polygons?
names(): Names of GVector fields
ncol(): Number of fields
ngeom(): Number of geometries (points, lines, polygons)
nrow(): Number of rows in a vector data table
nsubgeom(): Number of subgeometries (points, lines, polygons that make up single- and multipart geometries)
sources(): Name of the vector in GRASS
topology(): Dimensionality (2D or 3D)
zext(): Vertical extent

Functions that operate on or create GVectors

The [ operator can be used to subset geometries of a GVector.
The $ and [[ operators can be used to get columns of a GVector's data table.
The $<- operator can be used to replace specific columns of a GVector's data table or to add columns.
addTable<-: Add a data table to a GVector
aggregate(): Combine GVector geometries
as.data.frame(): Convert a GVector's attribute table to a data.frame
as.data.table(): Convert a GVector's attribute table to a data.table
as.points(): Extract vertex coordinates from a "lines" or "polygons" GVector
buffer(): Create a polygon around/inside a GVector
clusterPoints(): Identify clusters of points
colbind(): Add columns to the data table of a GVector
complete.cases(): Find rows of a GVector's data table that have no NAs in them
connectors(): Create lines connecting nearest features of two GVectors
convHull(): Minimum convex hull
crds(): Extract coordinates of a GVector
crop(): Remove parts of a GVector
delaunay(): Delaunay triangulation
disagg(): Separate multipart geometries into singlepart geometries
distance(): Distance between geometries in two GVector, or from a GVector to cells of a GRaster
dropTable(): Remove the data table from a GVector
erase() or -: Remove part of a GVector that overlaps with another
expanse(): Area of polygons or length of lines
extract(): Extract values from a GVector at specific points
grid(): Create a grid GVector
head(): First rows of a GVector's data table
hexagons(): Create a hexagonal grid
interpIDW(): Interpolate values at points to a GRaster using inverse-distance weighting
interpSplines(): Interpolate values at points to a GRaster using splines
intersect() or *: Intersection of two GVectors.
kernel(): Kernel density estimator of points.
missing.cases(): Find rows of a GVector's data table that have at least NA in them
names<-: Assign names to columns of a GVectors data table
project(): Change coordinate reference system
rasterize(): Convert a GVector to a GRaster
rbind(): Combine GVectors
simplifyGeom(): Remove vertices
smoothGeom(): Remove "angular" aspects of features
st_as_sf(): Convert a GVector to a sf vector
st_buffer(): Create a polygon around/inside a GVector
tail(): Last rows of a GVector's data table
thinPoints(): Reduce number of points in same raster cell
union() or +: Combine two GVectors
xor() or /``: Select parts of polygons not shared by two GVector`s

Functions for fixing issues with GVectors

(See also tools that can be used during GVector creation/loading in fast().) breakPolys(): Break topologically clean areas
fillHoles(): Fill "holes" of a GVector
fixBridges(): Change "bridges" to "islands"
fixDangles(): Change "dangles" hanging off boundaries to lines
fixLines(): Break lines at intersections and lines that form closed loops
remove0(): Remove all boundaries and lines with a length of 0
removeAngles(): Collapse lines that diverge at an angle that is computationally equivalent to 0
removeBridges(): Remove "bridges" to "islands"
removeDangles(): Remove "dangling" lines
removeDupCentroids(): Remove duplicated area centroids
removeDups(): Remove duplicated features and area centroids
removeSmallPolys(): Remove small polygons
snap(): Snap lines/boundaries to each other

Converting between data types

as.contour(): Convert a GRaster to a GVector representing contour lines
as.doub(): Convert a GRaster to a double-floating point raster (GRASS data type DCELL)
as.data.frame(): Convert GVector to a data.frame
as.data.table(): Convert GVector to a data.table
as.float(): Convert a GRaster to a floating-point raster (GRASS data type FCELL)
as.int(): Convert a GRaster to an integer raster (GRASS data type CELL)
as.points(), as.lines(), and as.polygons(): Convert a GRaster to a GVector
fast(): Convert a SpatRaster to a GRaster; a SpatVector, sf vector, numeric vector, matrix, data.frame, or data.table to a GVector; or load a vector or raster from a file
categories() and levels<-: Convert an integer raster to a categorical ("factor") raster. rast(): Convert a GRaster to a SpatRaster
rasterize(): Convert a GVector to a GRaster
st_as_sf(): Convert a GVector to a sf vector
vect(): Convert a GVector to a SpatVector

General purpose functions

compareGeom(): Determine if geographic metadata is same between GRasters and/or GVectors
dropRows(): Remove rows from a data.frame or data.table
grassInfo(): GRASS version and citation
mow(): Remove unused rasters and vectors from the GRASS cache
reorient(): Convert degrees between 'north-orientation' and 'east orientation'
replaceNAs(): Replace NAs in columns of a data.table or data.frame, or in a vector
seqToSQL(): Format a numeric series into an SQL value call
update(): Refresh metadata in a GRaster or GVector object

Data objects

appFunsTable (see also appFuns()): Functions usable by the app() function
madChelsa: Climate rasters for of a portion of eastern Madagascar
madCoast0, madCoast4, and madCoast: Borders of an eastern portion of Madagascar
madCover: Land cover raster
madCoverCats: Table of land cover classes
madDypsis: Specimens records of species in the genus Dypsis
madElev: Elevation raster
madForest2000 and madForest2014: Forest cover in 2000 and 2014
madLANDSAT: Surface reflectance in 2023
madPpt, madTmin, madTmax: Rasters of mean monthly precipitation, and minimum and maximum temperature
madRivers: Rivers vector
vegIndices: Vegetation indices that can be calculated using vegIndex().

Esoteric tutorials and arcane notes

Comparisons between GRegions can be performed using the == and != operators.
Tutorial on GRASS regions
Tutorial on GRASS projects/locations and mapsets
Hidden functions of fasterRaster: Useful for power users and developers
grassStarted(): Has a connection GRASS been made within the current R session?

Author

Adam B. Smith