Using QGIS I'm trying to analyse an area/DEM with these two criteria:
-Even sloping terrain steeper than 1:20 and total slope height > 5 m.
Finding areas with slope of 1:20 (5% slope) could be done with the slope function. But I can't figure out an easy way to filter these areas to only include areas with slope height over 5 meter. I.e. the vertical height form start of slope to top should be at least 5 meters.
Anyone have any ideas or thoughts on this problem?
Background: The criteria are to identity possible land slide areas (quick clay), so it's already clipped to only include areas of old marine sediments. https://www.ngu.no/en/topic/quick-clay-and-quick-clay-landslides
Best Answer
This can be done in a few ways, but using QGIS specifically, the best way I can think of is using Map Algebra. The idea is to first get all areas with a slope above your desired threshold, then calculate the Zonal Statistics for it. The step-by-step is as follows:
Now, call the r.univar GRASS function from the Processing Toolbox, pass to it your original DEM (the one used to calculate the slope), and the rasterized raster from the previous step as a mask. The output will be a text file with statistics for each zone. They look like this:
repeated for each zone. The only info you want is zone number, minimum and maximum. Format this table into a CSV where each line is zone,minimum,maximum.
UPDATE
As per user ThingumaBob's comment, one can simplify this procedure by using the Zonal Statistics tool that comes with QGIS, and which works with a vector layer as zones input.
As such, from step 4, after polygonizing the raster, one would go to Processing Toolbox -> Zonal Statistics, and enter the DEM as input raster and the polygon zones layer as input mask. The output is the same polygon layer, with extra fields for the calculated stats (hence, the end of step 6).