Skip to contents

Generate landscape raster from landscape structure

Usage

flsgen_generate(
  structure_str,
  structure_file,
  terrain_file = NULL,
  roughness = 0.5,
  terrain_dependency = 0.5,
  min_distance = 2,
  min_max_distance = NULL,
  connectivity = 4,
  x = 0,
  y = 0,
  resolution_x = 1e-04,
  resolution_y = NULL,
  epsg = "EPSG:4326",
  max_try = 2,
  max_try_patch = 10,
  verbose = TRUE
)

Arguments

structure_str

JSON-formatted string describing the landscape structure to generate

structure_file

JSON file containing the landscape structure to generate

terrain_file

Path of input terrain raster file, or terra::rast object. If NULL a terrain is generated with the diamond-square algorithm

roughness

Roughness factor (or H), between 0 and 1 (only need when terrain_file is NULL)

terrain_dependency

Terrain dependency factor for landscape generation, between 0 and 1

min_distance

Minimum distance between patches of a same class

min_max_distance

If defined, the minimum distance beween patches of a same class is defined by a variable buffer of width between min_distance and min_max_distance

connectivity

Connectivity definition in the regular square grid (4 or 8)."

x

X position (geographical coordinates) of the top-left output raster pixel

y

Y position (geographical coordinates) of the top-left output raster pixel

resolution_x

x spatial resolution (geographical units) of the output raster (i.e. pixel width)

resolution_y

y-spatial resolution (geographical units) of the output raster (i.e. pixel height), if null, resolution_x is used

epsg

EPSG identifier of the output projection

max_try

Maximum number of trials for landscape generation

max_try_patch

Maximum number of trials for patch generation

verbose

if TRUE print information about generation

Value

A terra::rast object

Details

The input landscape structure must be either specified as a JSON-formatted string (structure_str parameter) or as a JSON file (structure_file parameter)

Examples

  if (FALSE) {
    json <- "{
      \"nbRows\" : 200,
      \"nbCols\" : 200,
      \"classes\" : [
        {
          \"name\" : \"Class A\",
          \"NP\" : [1, 10],
          \"AREA\" : [300, 4000],
          \"CA\" : [1000, 5000],
          \"MESH\" : [225, 225]
        },
        {
          \"name\" : \"Class B\",
          \"NP\" : [2, 8],
          \"AREA\" : [200, 4000],
          \"PLAND\" : [40, 40]
        },
        {
          \"name\" : \"Class C\",
           \"NP\" : [5, 7],
           \"AREA\" : [800, 1200]
        }
      ]
    }"
    structure <- flsgen_structure(targets_str = json)
    landscape <- flsgen_generate(structure_str = structure)
  }