Short answer
A geological cross section is a 2-D plot of elevation against horizontal distance, so the coordinate reference system you sample it in determines whether that horizontal distance is true. Work in a projected, metre-based CRS local to the section (a UTM zone, or a national grid such as British National Grid, EPSG:27700, or a State Plane zone), confirm the DEM's vertical units and datum, and report the vertical exaggeration explicitly. Sampling a profile in a geographic CRS (EPSG:4326) or in Web Mercator (EPSG:3857) introduces distance errors that quietly corrupt every dip, gradient, and thickness you measure off the section.
Why the CRS choice changes the geology, not just the picture
A cross section answers quantitative questions: what is the dip of that bedding contact, how thick is the aquifer between two boreholes, how steep is the failure surface above the road cut. Every one of those answers is a ratio of a vertical interval to a horizontal interval. If the horizontal interval is wrong, the dip is wrong.
The horizontal axis of a section is distance along the profile line, computed from the line's vertices. That distance is only meaningful if the line lives in a CRS whose units are linear and whose scale distortion across the section is negligible.
- Geographic CRS (EPSG:4326, WGS 84). Coordinates are degrees of latitude and longitude. One degree of longitude is roughly 111 km at the equator but shrinks to zero at the poles, and the metre-per-degree value depends on latitude. Sampling a profile here and treating the x-axis as "distance" mixes two different physical lengths on the same axis. QGIS and ArcGIS will sometimes report distances using an ellipsoidal (geodesic) calculation, which is correct for great-circle length but still not a planar section axis.
- Web Mercator (EPSG:3857). Conformal, so angles are preserved locally, but scale grows with latitude by a factor of
1/cos(φ). At 55°N that is about 1.74x. A 10 km line drawn in Web Mercator can carry distances that are 70%+ too long when read as ground distance. This is the single most common reason a section "looks fine but the gradients are nonsense." - UTM / national grids / State Plane. Transverse Mercator and Lambert Conformal Conic grids are designed to keep scale error small (typically under 1 part in 2,500 within the zone). Distances read off the line are within a few centimetres per kilometre of true ground distance. This is what you want.
The rule: pick a projected CRS whose area of use contains your whole line, and whose scale factor is close to 1 along the line's trend. For a roughly N–S section, a UTM zone (Transverse Mercator) is ideal because its low-distortion band runs N–S. For a long E–W section at mid-latitude, a Lambert Conformal Conic grid (most State Plane zones, many national grids) keeps E–W scale stable.
The vertical axis: units and datum are a separate problem
The horizontal CRS says nothing about the elevation values. A DEM carries its own vertical unit (metres or US survey feet) and its own vertical datum (an orthometric datum such as NAVD88 via a geoid model, or an ellipsoidal height referenced to the GRS80/WGS84 ellipsoid). Three failure modes follow:
- Unit mismatch. A USGS 3DEP DEM in metres plotted against a horizontal grid in feet (a State Plane zone in US survey feet) will show every slope compressed by a factor of ~3.28. The section is internally inconsistent before you even apply exaggeration.
- Datum confusion. Borehole collar elevations surveyed to a local levelling datum, plotted against a DEM in ellipsoidal height, can disagree by the geoid undulation — tens of metres in many regions. The strata then appear to step at the boreholes.
- Silent ellipsoidal heights. Lidar and GNSS-derived surfaces sometimes ship as ellipsoidal height. If your boreholes are in orthometric height, transform one to match the other before sectioning, using the published geoid model for the region.
Before sampling, run gdalinfo dem.tif and read the VERT_CS / units, or in QGIS check Layer Properties → Information. If the vertical reference is undocumented, treat it as unknown and reconcile against a known control point.
Vertical exaggeration: define it, label it
Vertical exaggeration (VE) is:
VE = vertical_scale / horizontal_scale
If the figure is plotted so that 1 cm on paper equals 100 m horizontally but 1 cm equals 20 m vertically, then VE = 100/20 = 5x. At VE = 1 the section is geometrically true: a 30° dip measured with a protractor on the figure really is 30°.
Exaggeration is legitimate — gentle dips and thin units are invisible at 1:1 — but it lies about angles. The apparent dip on an exaggerated section relates to true dip by:
tan(apparent_dip) = VE × tan(true_dip)
So a true 5° dip at VE = 10 plots as atan(10 × tan5°) ≈ 41°. Anyone reading dips with a protractor off an exaggerated figure without correcting will be very wrong. The professional minimum is to print the VE on the figure and, where dips matter, annotate true dips rather than letting readers measure apparent ones.
Worked workflow in QGIS
Goal: a topographic profile along a borehole transect, sampled correctly.
-
Set a working CRS. Reproject the line and DEM to the local UTM zone. For a site at 51°N, 0°, that is UTM zone 31N, EPSG:32631. In QGIS, use Raster → Projections → Warp (Reproject) (the
gdalwarpbackend) for the DEM, and Vector → Reproject Layer for the section line. Confirm the project CRS matches so the canvas is not silently reprojecting on the fly.gdalwarp -t_srs EPSG:32631 -r bilinear -tr 5 5 dem_wgs84.tif dem_utm31.tifUse
bilinear(not nearest) for continuous elevation, and set a sensible target resolution-trso you do not over- or under-sample. -
Densify the line. A 2-vertex line samples the DEM only at its ends if you use a naive tool. Use Processing → Densify by interval at, say, 5 m so the profile follows real terrain.
-
Sample the profile. Use the Profile Tool plugin or the built-in Elevation Profile panel (QGIS 3.26+). The panel reads distance along the line in the layer's CRS units — metres — and elevation from the DEM. Because both are now metres in a low-distortion grid, the axes are directly comparable.
-
Check the distance. Measure the line length with the Measure tool set to Cartesian (not ellipsoidal) and compare it to the profile's x-axis maximum. They should agree to a metre. A large discrepancy means the project is still reprojecting or the CRS is geographic.
-
Export and label. When you build the layout, set explicit horizontal and vertical scales, compute VE from them, and put
V.E. = Nxon the figure with a scale bar that reflects the horizontal scale only.
Validation
- Round-trip a known distance. Place two points a known surveyed distance apart on the line; the profile should reproduce it within the grid's scale tolerance.
- Cross-check a borehole. A collar elevation on the DEM-derived profile should match the surveyed collar elevation within the DEM's vertical accuracy (commonly ±0.1–0.3 m for good lidar). A large offset flags a vertical datum mismatch.
- Confirm the area of use. In QGIS, the CRS selector lists each CRS's bounding box. If your line extends outside it, distortion is no longer bounded — pick a wider grid (a national CRS) or split the section.
Common pitfalls and why they happen
- Sectioning in EPSG:3857 because that is what the basemap uses. Web Mercator is a display CRS; its
1/cos(φ)scale stretch inflates every horizontal distance away from the equator. Reproject before sampling. - Forgetting that on-the-fly reprojection does not change the data. The canvas can show layers together while the underlying DEM is still in degrees. Sampling reads the source values, so the profile inherits the source CRS, not the project CRS.
- Mixing feet and metres. A State Plane DEM in US survey feet against metric boreholes silently rescales the vertical axis. Standardise on metres early.
- Unlabelled exaggeration. Without a VE label the figure cannot be used for any angular measurement, and apparent dips will be over-read.
Bathyl perspective
We treat a cross section as a measurement, not an illustration. That means the section line is sampled in a low-distortion projected grid, the vertical datum is reconciled against survey control, and the figure carries its exaggeration and scale bars so a reviewer can re-derive any dip or thickness. A section that cannot be back-calculated is decoration.
Related reading
- CRS for Web Maps vs Desktop Analysis
- CRS for Multi-Country Terrain Projects
- DEM Units and Vertical Datum Checks
- Slope, Aspect, and Hillshade From DEM Data
- GIS and spatial analysis