-
Notifications
You must be signed in to change notification settings - Fork 5
3. Land model
input | output |
---|---|
parameters (14: Netlogo-style, 18: C#-style) | elevation |
The first step in setting elevation is to shape landforms. This step is split into two alternative algorithms, set-landform-NetLogo
and set-landform-Csharp
, which follows two different programming styles. The UI parameter algorithm-style
controls which one is used. NetLogo-style relies more heavily on "patch" (i.e. grid cell) and turtle (i.e. agent) calls while C#-style was developed in C# and translated to NetLogo. Both alternatives sculpt discrete landform features by raising (ranges) or depressing (rifts) patch elevation and then smoothing them. The C# alternative includes an additional step that adds normal noise and then smooth elevation a second time. The C#-style algorithm is used by default.
The two following procedures bend the entire terrain towards specific general slopes. The procedure set-xySlope
pushes all elevations to approximate the W-E (x) and N-S (y) inclination of a plane, balanced over the centre of the grid and reaching riftHeight
(lower side) and rangeHeight
(upper side). The degree in which the terrain adapts to this inclined plane is regulated by xSlope
and ySlope
. The procedure set-valleySlope
forces the terrain towards a valley (par_valleySlope > 0
) or a ridge (par_valleySlope < 0
), which will generally have an N-S orientation (higher values of par_valleyAxisInclination
will lean this valley towards the NE-SW diagonal). The high and low points of the valley or ridge aimed for also correspond to riftHeight
and rangeHeight
.
Example using a grid 50x50:
parameter | value |
---|---|
algorithm-style |
"C#" |
numRanges |
1 |
numRifts |
1 |
rangeLength |
5 |
riftLength |
5 |
rangeHeight |
15 |
riftHeight |
-15 |
featureAngleRange |
5 |
noise |
1 |
smoothStep |
1 |
smoothingRadius |
0.1 |
numProtuberances |
1 |
numDepressions |
1 |
rangeAggregation |
0.75 |
riftAggregation |
0.9 |
xSlope |
0.01 |
ySlope |
0.025 |
valleyAxisInclination |
0.1 |
valleySlope |
0.02 |
Sculpting the terrain with landform features, i.e. range and rifts (before smoothing and noise):
After smoothing and noise:
After applying XY slope:
After applying valley slope:
input | output |
---|---|
parameters (18) |
elevation , flow_direction
|
In the next step, the so-called 'sinks' or inescapable depressions are filled following an algorithm based on:
Huang P C and Lee K T (2015) A simple depression-filling method for raster and irregular elevation datasets, J. Earth Syst. Sci. 124 1653–65.
The fill-sinks
procedure is optional and, if not applied, the terrain may have multiple closed basins.
Every patch is then assigned a flowDirection
pointing towards the neighboring patch with the largest drop (least elevation accounting for horizontal distance). This variable is codified using the convention explained in:
Jenson, S. K., & Domingue, J. O. (1988). Extracting topographic structure from digital elevation data for geographic information system analysis. Photogrammetric engineering and remote sensing, 54(11), 1593-1600.
which describes a patch x y
neighbourhood as follows:
x-1 | x | x+1 | |
---|---|---|---|
y+1 | 64 | 128 | 1 |
y | 32 | centre | 2 |
y-1 | 16 | 8 | 4 |
Example of the output of set-flow-directions
:
input | output |
---|---|
parameters (18+1) |
elevation , flow_direction , flow_accumulation
|
First, the lower patch at either the North or South edges (whichever has the highest average elevation) is selected as the patch with an entering river. This patch is assign a inward flowDirection
and given a flowAccumulation
value of par_riverFlowAccumulationAtStart
. At some terrains, this will initiate a river flow that will cross the grid, generally downhill the XY and valley slopes.
The set-flow-accumulations
procedure implements the algorithm described in Jenson and Domingue (1988), p. 1594:
"FLOW ACCUMULATION DATA SET The third procedure of the conditioning phase makes use of the flow direction data set to create the flow accumulation data set, where each cell is assigned a value equal to the number of cells that flow to it (O’Callaghan and Mark, 1984). Cells having a flow accumulation value of zero (to which no other cells flow) generally correspond to the pattern of ridges. Because all cells in a depressionless DEM have a path to the data set edge, the pattern formed by highlighting cells with values higher than some threshold delineates a fully connected drainage network."
See HTML with R walkthrough explaining this algorithm.
Example of the output of set-flow-accumulations
:
input | output |
---|---|
parameters (18+1+11), Hydrologic Soil Groups table, runoff curve number table, soil water table |
elevation , flow_direction , flow_accumulation , soil properties |
input | output |
---|---|
parameters (18+1+11+6), Hydrologic Soil Groups table, runoff curve number table, soil water table |
elevation , flow_direction , flow_accumulation , soil properties, ecological community composition, cover type |