Using QGIS, and the 'Raster > Analysis > Slope' tool, I could easily detect cliffs from my DEM.

I can identify all cliffs, and can color areas where slope is above a certain threshold. Since they are all vertical, they all have the same slope, and I cannot distinguish small cliffs (10m) from high ones (60m).

Is there another tool that would allow me to detect high cliffs from a DEM? I'm happy to use PostGIS if that's necessary.


One approach is to create polygons from the cliff areas eg Raster Calculator with Slope > 60, then Polygonize.

Then, largely follow the steps outlined in this answer to split the polygons into roughly equal areas. This allows you to break up long/large cliff areas into smaller chunks.

Because cliff areas tend to be skinny, I found the centroids often lay outside the original polygons. So you can add a step after creating the centroids to use the Snap Geometries to Layer tool (snap the centroids back to the original random points). This will get you a point layer that is inside the cliff polygons - though the process will probably still work acceptably without this step.

Finally, use Zonal Statistics to calculate the range (top-bottom) for each area.

Here's an example with maximum cliff heights for each area in metres.

enter image description here

If you are happy to just have one height for long clifflines, you can skip all of the middle steps, and go straight from Polygonize to Zonal Statistics.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.