The short answer
Planar terrain analysis treats the DEM as a flat grid in a projected coordinate system: cell spacing is a fixed number of metres in X and Y, and slope, aspect, and area are computed with simple plane geometry over a 3×3 window. Geodesic analysis measures distance and area on the curved surface of the ellipsoid, correcting for the distortion that any flat projection introduces. For a single project-area DEM in a well-chosen local projected CRS, the planar approach is correct and is what QGIS, GDAL gdaldem, and ArcGIS Spatial Analyst use by default. Geodesic methods earn their keep over large extents — continental or global DEMs — and whenever you are tempted to run terrain math directly on geographic (degree-based) coordinates.
Why the distinction exists
Every projection trades one property for another: a Transverse Mercator preserves shape locally but distorts area away from its central meridian; an equal-area projection preserves area but warps angles. Terrain derivatives depend on the horizontal distance between cells, so any place where the projection's scale factor departs from 1.0 introduces error into slope and area.
For a UTM zone, the scale factor is 0.9996 at the central meridian and grows toward the zone edges, staying within roughly 1 part in 1,000 inside the 6-degree band. That is negligible for terrain work. Push the same projection across a continent and the scale factor at the edges can be several percent off — now your "area" and "distance" are visibly wrong, and a planar slope computed there inherits that error. This is the regime where you switch to geodesic measurement or to an equal-area projection.
The geographic-CRS trap
The worst case is not a poorly chosen projection — it is no projection. If a DEM is in EPSG:4326 (WGS84 lat/long), its cell size is expressed in degrees, e.g. 0.0002777° (one arc-second). One degree of latitude is ~111,320 m everywhere, but one degree of longitude is 111,320 × cos(latitude) — about 78,700 m at 45°N and zero at the poles. So the X and Y cell spacing are unequal and latitude-dependent.
Naively running slope on such a grid against elevation in metres produces nonsense, because the algorithm divides a metre rise by a degree run. Two correct paths exist:
- Reproject first to a local projected CRS (a UTM zone, a national grid) so X and Y are metres, then run standard planar slope.
- Use a scale correction. GDAL's
gdaldem slopeaccepts a-s(scale) flag that converts the horizontal-to-vertical unit ratio; for a geographic DEM in degrees with metre elevations the rule of thumb is-s 111120, but this is only exact at the equator and degrades with latitude, which is precisely why reprojection is preferred for serious work.
How planar slope is actually computed
gdaldem slope, the QGIS "Slope" algorithm, and ArcGIS "Slope" all use a 3×3 moving window and (by default) Horn's method, which weights the eight neighbours to estimate the partial derivatives dz/dx and dz/dy. Slope in degrees is atan(sqrt((dz/dx)² + (dz/dy)²)). The denominators are cell size in ground units — which is exactly why the CRS must be projected and the cell size must be in the same linear unit as the elevation. Get a worked example:
gdalwarp -t_srs EPSG:32632 -tr 10 10 -r bilinear dem_4326.tif dem_utm.tif
gdaldem slope dem_utm.tif slope_deg.tif -compute_edges
gdaldem slope dem_utm.tif slope_pct.tif -p -compute_edges
Here both elevation and the 10 m cell size are in metres, so the planar result is valid. The -p flag gives percent rise instead of degrees — not interchangeable labels: 45° is 100% rise, and a 30° slope is ~58%.
When geodesic genuinely matters
- Continental or global terrain statistics. Computing the area of all land above 2,000 m from a global DEM must account for the shrinking ground footprint of each cell toward the poles. PostGIS makes this explicit:
ST_Area(geom::geography)returns true ellipsoidal area in m², whereasST_Area(geom)on geographic coordinates returns meaningless square degrees. - Long-distance terrain profiles and viewsheds. A line of sight across hundreds of kilometres must include Earth curvature and refraction; planar geometry on a flat grid underestimates how the horizon drops away.
- True ground distance over varied terrain. Geodesic distance (
ST_Distance(a::geography, b::geography)) follows the ellipsoid; the planar straight-line distance in a distorted projection does not.
For these, prefer an equal-area projection (e.g. an Albers or Lambert Azimuthal Equal Area centred on the study area) for area work, or compute directly on the geography type, rather than forcing a conformal projection to do area math.
A practical decision rule
- Single project area, < a few hundred km across? Reproject to a local UTM zone or national grid and use standard planar slope/aspect/hillshade. Done.
- Region spanning multiple UTM zones? Use a custom Transverse Mercator or a national Lambert grid sized to the extent, and check the scale factor at the edges.
- Continental or global, and you need area or distance? Use an equal-area projection or geodesic (geography) measurement; do not trust planar area.
- Data still in EPSG:4326? Reproject before any terrain derivative, or accept that any direct slope/area is approximate.
Common pitfalls and why they happen
- Running slope on a geographic DEM. The degree-based cell size mismatches the metre elevations; the result looks plausible but is systematically wrong, worse at high latitude.
- Computing continental area in a conformal projection. Conformal projections preserve angles, not area, so totals inflate toward the projection edges.
- Mixing vertical and horizontal units. Elevation in feet with cell size in metres skews slope; convert one before computing.
- Assuming "geodesic" is always better. For a local DEM in a good projected CRS it adds cost and no accuracy. Match the method to the extent.
- Comparing two DEMs' slopes computed in different CRSs. The distortion differs between them, so the comparison is invalid.
Validation
Pick a location of known gradient — a graded road, a surveyed embankment — and confirm the computed slope matches. For area, digitise a feature of known size and compare planar ST_Area against geodesic ST_Area(::geography); if they diverge by more than your tolerance, your extent is large enough to need the geodesic result. Check the projection's scale factor at the study-area corners; if it strays beyond ~1 part in 1,000, reconsider the projection.
Bathyl perspective
We pick the coordinate frame to match the extent of the question, not the convenience of the basemap: local projected CRS for project-scale terrain, equal-area or geodesic measurement for continental work. Every terrain layer ships with its analysis CRS and method recorded, so a reviewer can tell whether a slope or area value is exact or merely indicative.
Related reading
- Percent Slope vs Slope Degrees
- Why Buffers Are Wrong in Degrees
- When to Smooth a DEM
- Terrain intelligence