peak.cell {scapesClassification} | R Documentation |
Identify local maxima or minima
Description
Identify local maxima or minima on a raster surface.
Usage
peak.cell(attTbl, ngbList, rNumb = FALSE, p_col, p_fun = "max", p_edge = FALSE)
Arguments
attTbl |
data.frame, the attribute table returned by the function
|
ngbList |
list, the list of neighborhoods returned by the function
|
rNumb |
logic, the neighborhoods of the argument |
p_col |
character, the column of the attribute table over which maxima or minima are searched. |
p_fun |
character, if 'max' the function searches for local maxima; if 'min' the function searches for local minima. |
p_edge |
logic, if false local maxima or minima are not searched on edge cells. Edge cells are considered cells on the edge of the raster and cell neighboring NA-cells. |
Details
A cell constitutes a local maximum if its elevation value is larger than the values of all the cells in its neighborhood (see
ngbList
).A cell constitutes a local minimum if its elevation value is smaller than the values of all the cells in its neighborhood (see
ngbList
).
Value
A classVector
with peak cells identified by the numeric class
1
. See conditions
for more details about class
vectors.
See Also
conditions()
, attTbl()
, ngbList()
Examples
# DUMMY DATA
################################################################################
# LOAD LIBRARIES
library(scapesClassification)
library(terra)
# LOAD THE DUMMY RASTER
r <- list.files(system.file("extdata", package = "scapesClassification"),
pattern = "dummy_raster\\.tif", full.names = TRUE)
r <- terra::rast(r)
# COMPUTE THE ATTRIBUTE TABLE
at <- attTbl(r, "dummy_var")
# COMPUTE THE LIST OF NEIGBORHOODS
nbs <- ngbList(r)
################################################################################
# PEAK.CELL
################################################################################
# p_edge = FALSE
pc_a <- peak.cell(attTbl = at, ngbList = nbs, rNumb = FALSE,
p_col = "dummy_var", p_fun = "max", p_edge = FALSE)
# p_edge = TRUE
pc_b <- peak.cell(attTbl = at, ngbList = nbs, rNumb = FALSE,
p_col = "dummy_var", p_fun = "max", p_edge = TRUE)
# CONVERT THE CLASS VECTORS INTO RASTERS
r_pca <- cv.2.rast(r, at$Cell, classVector = pc_a, plot = FALSE)
r_pcb <- cv.2.rast(r, at$Cell, classVector = pc_b, plot = FALSE)
################################################################################
#PLOTS
###############################################################################
oldpar <- par(mfrow = c(1,2))
m <- c(4, 1, 4, 1)
# PLOT 1 - p_edge = FALSE
plot(r_pca, axes=FALSE, legend=FALSE, asp=NA, mar=m,
colNA="#818792", col=c("#78b2c4", "#cfad89"))
text(r)
mtext(side=3, line=1, adj=0, cex=1, font=2, "PEAK.CELL")
mtext(side=3, line=0, adj=0, cex=0.9, "p_edge = FALSE")
legend("bottomright", bg = "white",
legend = c("Peak cell", "Unclassified cells"),
fill = c("#cfad89", "#818792"))
# PLOT 2 - p_edge = TRUE
plot(r_pcb, axes=FALSE, legend=FALSE, asp=NA, mar=m,
colNA="#818792", col=c("#78b2c4", "#cfad89"))
text(r)
mtext(side=3, line=1, adj=0, cex=1, font=2, "PEAK.CELL")
mtext(side=3, line=0, adj=0, cex=0.9, "p_edge = TRUE")
legend("bottomright", bg = "white",
legend = c("Peak cell", "Unclassified cells"),
fill = c("#cfad89", "#818792"))
par(oldpar)