R/scale-layer.R

Defines functions scale_layer

Documented in scale_layer

#' Scale in region of interest
#'
#' Helper function to scale a target layer in a region of interest.
#' Can be used to compare locations with [eval_pt()] and [eval_buffer()],
#' and select locations based off of relative values instead of absolute values.
#'
#' @inheritParams eval_pt
#' @param region object which can be passed to [terra::ext()] including `sf`,
#' `SpatRaster`, and 2x2 matrices.
#' @param center see [terra::scale()]
#' @param scale see [terra::scale()]
#'
#' @return `SpatRaster` layer, cropped to extent of provided region, and scaled.
#'
#' @seealso [terra::scale()]
#'
#' @export
#'
#' @examples
#' # Load packages
#' library(terra)
#'
#' # Load data
#' data("clearwater_lake_hydro")
#' clearwater_elev_path <- system.file(
#'   "extdata", "clearwater_lake_elevation.tif", package = "camtrapmonitoring")
#' clearwater_lake_elevation <- rast(clearwater_elev_path)
#'
#' # Region of interest around Clearwater lake
#' roi <- clearwater_lake_hydro[4,]
#'
#' # Scale elevation in extent of density grid
#' elev_scaled <- scale_layer(target = clearwater_lake_elevation, region = roi)
scale_layer <- function(target, region, center = TRUE, scale = TRUE) {
	if (missing(target) | is.null(target)) {
		stop('target must be provided')
	}
	if (!inherits(target, 'SpatRaster')) {
		stop('target must be a SpatRaster')
	}

	if (missing(region) | is.null(region)) {
		stop('region must be provided.')
	}

	# add check for compatible with extent

	return(
		terra::scale(terra::crop(target, region), center, scale)
	)
}
robitalec/wildcam documentation built on July 4, 2024, 1:55 a.m.