# 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.

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

### 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

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

`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.

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.

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.

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

### 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).

`OUTPUT`

[raster]

Default: `Save to temporary file`

Specify the output hillshade raster layer. One of:

• Save to a Temporary File

• Save to File…

Label

Name

Type

Description

`OUTPUT`

[raster]

### 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.

### 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.

### 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.

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.

### 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.

### 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.