Short answer

Curvature is the rate of change of slope — the second derivative of the elevation surface. It tells you whether the ground is convex (a ridge or shoulder) or concave (a hollow or footslope), and it does so in two independent directions: profile curvature down the fall line, which governs whether flow speeds up or slows down, and plan (planform) curvature across the slope, which governs whether flow converges or diverges. Together they explain where water accelerates, where it pools, and where erosion and deposition concentrate.

Because curvature is a second derivative, it is exquisitely sensitive to DEM noise. The single most important decision is the scale at which you compute it — smoothing or window size — not which button you press. Raw lidar at 1 m almost always needs conditioning first.

The two curvatures that matter most

Imagine standing on a hillslope facing straight downhill.

  • Profile curvature is measured in the vertical plane containing the slope direction (the fall line). It describes how slope changes as you walk downhill. Where the surface is convex along the fall line (a slope break at a shoulder), flow accelerates; where it is concave (the base of a slope), flow decelerates and sediment drops out. Profile curvature is therefore a strong predictor of erosion/deposition transitions.
  • Plan (planform) curvature is measured in the horizontal plane, across the slope. Where contours bend so the slope is concave in plan (a hollow), flow lines converge and discharge concentrates; where convex in plan (a nose or spur), flow diverges. Planform curvature underpins wetness indices and channel initiation.

There is also total (general) curvature, the combined second-derivative magnitude, and tangential/longitudinal variants used in some packages. For most hydro-geomorphic work, profile and plan are the workhorses.

Sign conventions — read the documentation

Sign is a frequent source of error because conventions differ between tools. In the widely used ArcGIS convention, profile curvature is negative for convex (decelerating) and positive for concave (accelerating), while planform is the reverse; their combined "curvature" output flips this so positive is convex upward. Many other implementations (SAGA, WhiteboxTools, the mathematical convention) treat convex as positive. The values are meaningful only once you know the convention, so confirm it in the tool's docs before you interpret a single pixel.

Units and the cell-size problem

Curvature is ∂²z/∂x²-type quantity, so its units are 1/length — per metre (m⁻¹), or in ArcGIS scaled to per 100 m. Two consequences:

  • Magnitudes are tiny (often 0.001-0.1 range), so display needs a stretched, diverging colour ramp centred on zero.
  • It scales with resolution. Curvature derived from a 1 m DEM captures micro-relief; from a 30 m DEM it captures broad landform shape. They are not comparable, and you should never mosaic or compare curvature across different cell sizes. State the source resolution in the output metadata.

How curvature is actually computed

Most algorithms fit a quadratic surface to a 3×3 (or larger) window of cells and read curvature from the fitted polynomial's coefficients — the Zevenbergen-Thorne (1987) and Evans methods are the classics. A larger fitting window (5×5, 7×7) effectively smooths and reports curvature at a coarser landform scale, which is the principled way to suppress noise without destroying signal.

Worked workflow: clean, usable curvature

  1. Verify the DEM is elevation, not a colour render, and check CRS, vertical units, cell size, and nodata with gdalinfo dem.tif.
  2. Work in a projected, equal-distance grid (a UTM zone or national grid) so X, Y, and Z are all in metres; computing curvature on a lat/lon DEM mixes degrees and metres and distorts the result. Reproject if needed:
    gdalwarp -t_srs EPSG:32633 -tr 10 10 -r bilinear dem_wgs84.tif dem_utm.tif
    
  3. Condition for noise. Decide the landform scale. To analyse hillslope-scale form from 1 m lidar, resample or low-pass filter to, say, 5-10 m first, or use a larger fitting window. A light Gaussian smooth removes lidar speckle that would otherwise dominate the second derivative.
  4. Compute the curvatures. SAGA's Slope, Aspect, Curvature module outputs profile, plan, and general curvature with explicit method choices and is a good default:
    • QGIS Processing: saga:slopeaspectcurvature (choose Zevenbergen & Thorne or a higher-order method).
    • WhiteboxTools: ProfileCurvature, PlanCurvature, TotalCurvature — fast, well-documented conventions, with a --log option for display scaling.
    • GDAL's gdaldem does not produce profile/plan curvature directly (it does slope, aspect, hillshade, roughness, TRI, TPI); use SAGA or Whitebox for true curvature.
  5. Symbolise with a diverging ramp centred on zero (blue concave / red convex, or vice versa per convention) and a stretch like ±2 standard deviations so the subtle values are visible.
  6. Document source DEM, resolution, projection, smoothing applied, algorithm, and sign convention.

Interpreting it on the ground

  • Convex profile + divergent plan on upper slopes → shedding zones, thinner soils, erosion-prone shoulders.
  • Concave profile + convergent plan in hollows → accumulation zones, deeper soils, wetness, potential gully/landslide initiation.
  • Curvature edges trace breaks of slope: terrace risers, fault scarps, channel banks, road cuts. This is why curvature is a powerful layer for geomorphological and structural mapping, often more diagnostic than slope alone.

Common pitfalls and why they happen

  • Speckled, noisy output. The second derivative amplifies any DEM noise (lidar returns, interpolation artefacts). It happens because people compute on raw native-resolution data. Smooth or coarsen to the landform scale first.
  • Sign misread. Calling convex "positive" when the tool means the opposite inverts your whole interpretation. Check the convention per tool.
  • Computing on a lat/lon DEM. Mixing degrees (X/Y) and metres (Z) corrupts the derivative. Reproject to a metric grid.
  • Comparing curvature across resolutions. A 1 m and a 30 m curvature are different physical quantities. Match cell size before any comparison.
  • Flat colour ramp. A linear stretch over the full range hides everything near zero. Use a diverging ramp with a tight, symmetric stretch.

QA and validation

Cross-check curvature against an independent layer: zero-curvature lines should coincide with break-of-slope features visible in a multidirectional hillshade. Confirm hollows show concave profile/convergent plan and ridges the opposite on a few hand-picked landforms you know. Verify the output's units and convention by reading the tool's metadata, and inspect the edges and nodata margins for the ring artefacts that fitting windows produce at raster borders (use -compute_edges-style handling or clip the margin).

Bathyl perspective

We treat curvature as a scale-dependent interpretation layer, not a one-click raster: choose the landform scale deliberately, condition the DEM, fix the projection and sign convention, and document all of it so the convex/concave story is reproducible. Used this way, profile and plan curvature become reliable evidence for erosion, deposition, and structure rather than decorative noise.

Related reading

Sources