28.1.17. Raster terrain analysis

28.1.17.1. Aspect

Calculates the aspect of the Digital Terrain Model in input. The final aspect raster layer contains values from 0 to 360 that express the slope direction, starting from north (0°) and continuing clockwise.

../../../../_images/aspect.png

Fig. 28.30 Aspect values

The following picture shows the aspect layer reclassified with a color ramp:

../../../../_images/aspect_2.png

Fig. 28.31 Aspect layer reclassified

Parameters

Label

Name

Type

Description

Elevation layer

INPUT

[raster]

Digital Terrain Model raster layer

Z factor

Z_FACTOR

[number]

Default: 1.0

Vertical exaggeration. This parameter is useful when the Z units differ from the X and Y units, for example feet and meters. You can use this parameter to adjust for this. The default is 1 (no exaggeration).

Aspect

OUTPUT

[raster]

Default: [Save to temporary file]

Specify the output aspect raster layer. One of:

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Aspect

OUTPUT

[raster]

The output aspect raster layer

Python code

Algorithm ID: qgis:aspect

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.2. DTM filter (slope-based)

NEW in 3.34

Can be used to filter a digital elevation model in order to classify its cells into ground and object (non-ground) cells.

The tool uses concepts as described by Vosselman (2000) and is based on the assumption that a large height difference between two nearby cells is unlikely to be caused by a steep slope in the terrain. The probability that the higher cell might be non-ground increases when the distance between the two cells decreases. Therefore the filter defines a maximum height difference (dz_max) between two cells as a function of the distance (d) between the cells (dz_max( d ) = d). A cell is classified as terrain if there is no cell within the kernel radius to which the height difference is larger than the allowed maximum height difference at the distance between these two cells.

The approximate terrain slope (s) parameter is used to modify the filter function to match the overall slope in the study area (dz_max( d ) = d * s). A 5 % confidence interval (ci = 1.65 * sqrt( 2 * stddev )) may be used to modify the filter function even further by either relaxing (dz_max( d ) = d * s + ci) or amplifying (dz_max( d ) = d * s - ci) the filter criterium.

References: Vosselman, G. (2000): Slope based filtering of laser altimetry data. IAPRS, Vol. XXXIII, Part B3, Amsterdam, The Netherlands, 935-942

See also

This tool is a port of the SAGA DTM Filter (slope-based)

Parameters

Label

Name

Type

Description

Input layer

INPUT

[raster]

Digital Terrain Model raster layer

Band number

BAND

[number] [list]

The band of the DEM to consider

Kernel radius (pixels)

RADIUS

[number]

Default: 5

The radius of the filter kernel (in pixels). Must be large enough to reach ground cells next to non-ground objects.

Terrain slope (%, pixel size/vertical units)

TERRAIN_SLOPE

[number]

Default: 30

The approximate terrain slope in %. The terrain slope must be adjusted to account for the ratio of height units vs raster pixel dimensions. Used to relax the filter criterium in steeper terrain.

Filter modification

FILTER_MODIFICATION

[list]

Default: 0

Choose whether to apply the filter kernel without modification or to use a confidence interval to relax or amplify the height criterium.

  • 0 - None

  • 1 - Relax filter

  • 2 - Amplify

Standard deviation

STANDARD_DEVIATION

[number]

Default: 0.1

The standard deviation used to calculate a 5% confidence interval applied to the height threshold.

Output layer (ground)

Optional

OUTPUT_GROUND

[raster]

Default: [Save to temporary file]

Specify the filtered DEM containing only cells classified as ground. One of:

  • Skip Output

  • Save to a Temporary File

  • Save to File…

Output layer (non-ground objects)

Optional

OUTPUT_NONGROUND

[raster]

Default: [Skip output]

Specify the non-ground objects removed by the filter. One of:

  • Skip Output

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Output layer (ground)

OUTPUT_GROUND

[raster]

The filtered DEM containing only cells classified as ground.

Output layer (non-ground objects)

OUTPUT_NONGROUND

[raster]

The non-ground objects removed by the filter.

Python code

Algorithm ID: native:dtmslopebasedfilter

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.3. Hillshade

Calculates the hillshade raster layer given an input Digital Terrain Model.

The shading of the layer is calculated according to the sun position: you have the options to change both the horizontal angle (azimuth) and the vertical angle (sun elevation) of the sun.

../../../../_images/azimuth.png

Fig. 28.32 Azimuth and vertical angle

The hillshade layer contains values from 0 (complete shadow) to 255 (complete sun). Hillshade is used usually to better understand the relief of the area.

../../../../_images/hillshade1.png

Fig. 28.33 Hillshade layer with azimuth 300 and vertical angle 45

Particularly interesting is to give the hillshade layer a transparency value and overlap it with the elevation raster:

../../../../_images/hillshade_2.png

Fig. 28.34 Overlapping the hillshade with the elevation layer

Parameters

Label

Name

Type

Description

Elevation layer

INPUT

[raster]

Digital Terrain Model raster layer

Z factor

Z_FACTOR

[number]

Default: 1.0

Vertical exaggeration. This parameter is useful when the Z units differ from the X and Y units, for example feet and meters. You can use this parameter to adjust for this. Increasing the value of this parameter will exaggerate the final result (making it look more “hilly”). The default is 1 (no exaggeration).

Azimuth (horizontal angle)

AZIMUTH

[number]

Default: 300.0

Set the horizontal angle (in degrees) of the sun (clockwise direction). Range: 0 to 360. 0 is north.

Vertical angle

V_ANGLE

[number]

Default: 40.0

Set the vertical angle (in degrees) of the sun, that is the height of the sun. Values can go from 0 (minimum elevation) to 90 (maximum elevation).

Hillshade

OUTPUT

[raster]

Default: Save to temporary file

Specify the output hillshade raster layer. One of:

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Hillshade

OUTPUT

[raster]

The output hillshade raster layer

Python code

Algorithm ID: qgis:hillshade

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.4. Hypsometric curves

Calculates hypsometric curves for an input Digital Elevation Model. Curves are produced as CSV files in an output folder specified by the user.

A hypsometric curve is a cumulative histogram of elevation values in a geographical area.

You can use hypsometric curves to detect differences in the landscape due to the geomorphology of the territory.

Parameters

Label

Name

Type

Description

DEM to analyze

INPUT_DEM

[raster]

Digital Terrain Model raster layer to use for calculating altitudes

Boundary layer

BOUNDARY_LAYER

[vector: polygon]

Polygon vector layer with boundaries of areas used to calculate hypsometric curves

Step

STEP

[number]

Default: 100.0

Vertical distance between curves

Use % of area instead of absolute value

USE_PERCENTAGE

[boolean]

Default: False

Write area percentage to “Area” field of the CSV file instead of the absolute area

Hypsometric curves

OUTPUT_DIRECTORY

[folder]

Specify the output folder for the hypsometric curves. One of:

  • Save to a Temporary Directory

  • Save to Directory

Outputs

Label

Name

Type

Description

Hypsometric curves

OUTPUT_DIRECTORY

[folder]

Directory containing the files with the hypsometric curves. For each feature from the input vector layer, a CSV file with area and altitude values will be created.

The file names start with histogram_, followed by layer name and feature ID.

../../../../_images/hypsometric.png

Python code

Algorithm ID: qgis:hypsometriccurves

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.5. Relief

Creates a shaded relief layer from digital elevation data. You can specify the relief color manually, or you can let the algorithm choose automatically all the relief classes.

../../../../_images/relief.png

Fig. 28.35 Relief layer

Parameters

Label

Name

Type

Description

Elevation layer

INPUT

[raster]

Digital Terrain Model raster layer

Z factor

Z_FACTOR

[number]

Default: 1.0

Vertical exaggeration. This parameter is useful when the Z units differ from the X and Y units, for example feet and meters. You can use this parameter to adjust for this. Increasing the value of this parameter will exaggerate the final result (making it look more “hilly”). The default is 1 (no exaggeration).

Generate relief classes automatically

AUTO_COLORS

[boolean]

Default: False

If you check this option the algorithm will create all the relief color classes automatically

Relief colors

Optional

COLORS

[table widget]

Use the table widget if you want to choose the relief colors manually. You can add as many color classes as you want: for each class you can choose the lower and upper bound and finally by clicking on the color row you can choose the color thanks to the color widget.

../../../../_images/relief_table.png

Fig. 28.36 Manually setting of relief color classes

The buttons in the right side panel give you the chance to: add or remove color classes, change the order of the color classes already defined, open an existing file with color classes and save the current classes as file.

Relief

OUTPUT

[raster]

Default: [Save to temporary file]

Specify the output relief raster layer. One of:

  • Save to a Temporary File

  • Save to File…

Frequency distribution

Optional

FREQUENCY_DISTRIBUTION

[table]

Default: [Skip output]

Specify the CSV table for the output frequency distribution. One of:

  • Skip Output

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Relief

OUTPUT

[raster]

The output relief raster layer

Frequency distribution

OUTPUT

[table]

The output frequency distribution

Python code

Algorithm ID: qgis:relief

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.6. Ruggedness index

Calculates the quantitative measurement of terrain heterogeneity described by Riley et al. (1999). It is calculated for every location, by summarizing the change in elevation within the 3x3 pixel grid.

Each pixel contains the difference in elevation from a center cell and the 8 cells surrounding it.

../../../../_images/ruggedness.png

Fig. 28.37 Ruggedness layer from low (red) to high values (green)

Parameters

Label

Name

Type

Description

Elevation layer

INPUT

[raster]

Digital Terrain Model raster layer

Z factor

Z_FACTOR

[number]

Default: 1.0

Vertical exaggeration. This parameter is useful when the Z units differ from the X and Y units, for example feet and meters. You can use this parameter to adjust for this. Increasing the value of this parameter will exaggerate the final result (making it look more rugged). The default is 1 (no exaggeration).

Ruggedness

OUTPUT

[raster]

Default: [Save to temporary file]

Specify the output ruggedness raster layer. One of:

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Ruggedness

OUTPUT

[raster]

The output ruggedness raster layer

Python code

Algorithm ID: qgis:ruggednessindex

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.

28.1.17.7. Slope

Calculates the slope from an input raster layer. The slope is the angle of inclination of the terrain and is expressed in degrees.

../../../../_images/slope3.png

Fig. 28.38 Flat areas in red, steep areas in blue

Parameters

Label

Name

Type

Description

Elevation layer

INPUT

[raster]

Digital Terrain Model raster layer

Z factor

Z_FACTOR

[number]

Default: 1.0

Vertical exaggeration. This parameter is useful when the Z units differ from the X and Y units, for example feet and meters. You can use this parameter to adjust for this. Increasing the value of this parameter will exaggerate the final result (making it steeper). The default is 1 (no exaggeration).

Slope

OUTPUT

[raster]

Default: [Save to temporary file]

Specify the output slope raster layer. One of:

  • Save to a Temporary File

  • Save to File…

Outputs

Label

Name

Type

Description

Slope

OUTPUT

[raster]

The output slope raster layer

Python code

Algorithm ID: qgis:slope

import processing
processing.run("algorithm_id", {parameter_dictionary})

The algorithm id is displayed when you hover over the algorithm in the Processing Toolbox. The parameter dictionary provides the parameter NAMEs and values. See Using processing algorithms from the console for details on how to run processing algorithms from the Python console.