Returns a function that simulates spatially correlated Gaussian random fields using a variogram model.

simulate_gaussian(
  vgm = NULL,
  psill = 1,
  model = "Sph",
  range = NULL,
  nugget = 0,
  beta = 0,
  nmax = 30,
  indicators = FALSE,
  seed = NULL
)

Arguments

vgm

A variogram model object (variogramModel or gstatVariogramModel). If NULL, one is built from model, psill, range, and nugget.

psill

Partial sill (default: 1). Ignored if vgm is provided.

model

Variogram model type (e.g., "Sph", "Exp", "Gau", "Nug"). Ignored if vgm is provided.

range

Spatial range parameter. Required if vgm is NULL.

nugget

Nugget effect (default: 0). Ignored if vgm is provided.

beta

Mean of the Gaussian field (default: 0). Passed to gstat::gstat().

nmax

The number of nearest observations used for kriging simulation (default: 30). Passed to gstat::gstat().

indicators

Indicator thresholds (default: FALSE). Passed to stats::predict(). Use TRUE for default thresholds or a numeric vector for custom thresholds.

seed

Optional random seed for reproducibility. Set this to ensure that the same random field is generated every time the returned function is called.

Value

A function that accepts rast_grid and n and returns a SpatRaster

Examples

rast_grid = terra::rast(ncols = 300, nrows = 100,
  xmin = 0, xmax = 300, ymin = 0, ymax = 100)
# Direct usage
sim_fn = simulate_gaussian(range = 25)
sf1 = sim_covariates(rast_grid, n = 4, method = sim_fn)
# With custom variogram
vgm = gstat::vgm(model = "Exp", psill = 1, range = 10)
sim_fn2 = simulate_gaussian(vgm = vgm)
sf2 = sim_covariates(rast_grid, n = 4, method = sim_fn2)
terra::plot(sf1)

terra::plot(sf2)