spherical.sd: Spherical Variance or Standard Deviation of Surface

View source: R/spherical.sd.R

spherical.sdR Documentation

Spherical Variance or Standard Deviation of Surface

Description

Derives the spherical standard deviation of a raster surface

Usage

spherical.sd(r, d, variance = FALSE, ...)

Arguments

r

A terra SpatRaster class object

d

Size of focal window or a matrix to use in focal function

variance

(FALSE|TRUE) Output spherical variance rather than standard deviation

...

Additional arguments passed to terra:app (can write raster to disk here)

Details

Surface variability using spherical variance/standard deviation. The variation can be assessed using the spherical standard deviation of the normal direction within a local neighborhood. This is found by expressing the normal directions on the surfaces cells in terms of their displacements in a Cartesian (x,y,z) coordinate system. Averaging the x-coordinates, y-coordinates, and z-coordinates separately gives a vector (xb, yb, zb) pointing in the direction of the average normal. This vector will be shorter when there is more variation of the normals and it will be longest–equal to unity–when there is no variation. Its squared length is (by the Pythagorean theorem) given by: R^2 = xb^2 + yb^2 + zb^2 where; x = cos(aspect) * sin(slope) and xb = nXn focal mean of x y = sin(aspect) * sin(slope) and yb = nXn focal mean of y z = cos(slope) and zb = nXn focal mean of z

The slope and aspect values are expected to be in radians. The value of (1 - R^2), which will lie between 0 and 1, is the spherical variance. and it's square root can be considered the spherical standard deviation.

Value

A terra SpatRaster class object of the spherical standard deviation

Author(s)

Jeffrey S. Evans <jeffrey_evans<at>tnc.org>

See Also

app for details on ... arguments

Examples


 library(terra)
 elev <- rast(system.file("extdata/elev.tif", package="spatialEco"))
 
 ssd <- spherical.sd(elev, d=5)
 
 slope <- terrain(elev, v='slope')
 aspect <- terrain(elev, v='aspect')
 hill <- shade(slope, aspect, 40, 270)
 plot(hill, col=grey(0:100/100), legend=FALSE, 
      main='terrain spherical standard deviation')
   plot(ssd, col=rainbow(25, alpha=0.35), add=TRUE)

 

spatialEco documentation built on Nov. 18, 2023, 1:13 a.m.