Building heights from elevation models — Task
Used in: Urban Design Visualisation (Example). Implementation: Building heights from DHM (Recipe - QGIS).
Building heights from elevation models is the Task of giving each building footprint a height above ground — and, where needed, an eave height and a roof type — by comparing a surface model (DSM, the top of everything) with a terrain model (DTM, the bare ground). Footprint registers rarely carry reliable heights; elevation models carry heights, but not buildings. This Task joins the two.
In workflow terms it sits at Recording the Domain of Discourse: it produces an attribute of an already-accepted Cognised Existence from primary data, rather than analysing anything.
Task Schema (tool-agnostic)
- Choose the source models (decision point) — a DSM and a DTM of the same date, resolution and vertical datum. Mismatched dates (a building built between the two) give nonsense heights.
- Compute height above ground (Operator: local map algebra) — nDSM = DSM − DTM.
- Restrict to the building interior (Operator: inward buffer) — shrink each footprint, typically by about 0.5 m, so wall-edge and street pixels are excluded.
- Remove outliers (Operator: filter) — discard pixels far above the typical roof level (chimneys, antennas, overhanging trees).
- Summarise the remaining pixels (Operator: zonal statistics) —
height: a high percentile (e.g., the 95th) — the ridge, without the outlierseave: a low percentile (e.g., the 10th)ground: the terrain elevation under the building, from the DTM
- Derive the roof (Operator: arithmetic + reclassify) —
roof_rise=height−eave;roof_type=flatbelow a threshold (e.g., 1.0 m), elsepitched. - Flag problems (Operator + decision point) — mark buildings with too few pixels, no data or negative heights, and check unusually large
roof_risevalues by hand: they usually mean a lower wing inside the same footprint.
Output: building footprints with height, eave, roof_rise, roof_type, ground and a quality flag — ready for Context massing (Task).
Epistemic Choices to record
The percentiles, buffer distance, outlier rule and flat-roof threshold are all judgements. The defaults suit Danish town centres at 0.4 m resolution; record any change, and any height corrected by hand, in the Design Rationale.
Task Recipes (tool-bound)
- QGIS: Building heights from DHM (Recipe - QGIS)
- Python: (not yet written — rasterio + rasterstats would implement the same Schema)