How to Estimate Building Height from Satellite Imagery

How to Estimate Building Height from Satellite Imagery

E
By Etzal Earth
11 min read

A footprint tells you how much ground a building covers. Almost every question anyone actually asks needs the third dimension: how much floor area is inside, how many people it can hold, how much of it sits below a flood level, how much roof is available for solar, how much material would be lost in a collapse.

Height is therefore the most requested attribute in building data and one of the least reliably supplied. Where it appears in open datasets it is usually an estimate, frequently an estimate of something slightly different from what the consumer assumes, and almost never accompanied by a statement of how wrong it might be.

The methods for deriving it from imagery are well understood. What is less widely internalised is that each rests on assumptions that fail in specific, identifiable places, and that those places are disproportionately the dense urban cores where the answer matters most.

Decide what height means before measuring it

Before any method is chosen, the definition has to be pinned down, because at least five different quantities travel under the word height.

  • Eaves height, the top of the wall where the roof begins. This is what matters for facade area and often for planning.
  • Ridge height, the highest point of a pitched roof. Typically several metres above eaves on a residential building.
  • Mean roof height, an average over the roof surface, which is what most automated methods actually produce.
  • Height above ground, measured from the terrain at the building base.
  • Height above a vertical datum, an absolute elevation, which is what a surface model stores.

A pipeline that computes mean roof height above a datum, subtracts nothing for terrain, and publishes it as building height will overstate structures on high ground by the local elevation, which can be tens or hundreds of metres. This sounds too crude to happen. It happens constantly, and it is invisible in flat regions and catastrophic in hilly ones.

Storey count adds a further step. Converting height to storeys requires an assumed floor-to-floor distance, and that assumption varies by building era, use type and region. Commercial floors are taller than residential ones. Older buildings often have taller ground floors. A single global divisor produces a storey count that is systematically wrong in one direction across whole categories of building.

Shadow length and sun geometry

The oldest method is also the most intuitive. A vertical structure casts a shadow whose length depends on the sun elevation angle at the moment of capture. Measure the shadow on the ground, know the sun angle, and the height follows from simple trigonometry: the shadow length multiplied by the tangent of the solar elevation.

Everything needed is available. Solar elevation and azimuth are computable exactly from the acquisition timestamp and the location. The shadow itself is often the highest contrast feature in the scene, and shadow direction is consistent across the whole image, which makes it easy to distinguish real shadows from dark roofs.

The method also degrades gracefully in the easy case. An isolated building on flat, open, uniform ground with a moderate sun elevation gives a good answer with almost no machinery.

Where shadow methods break

Every one of the conditions in that easy case is violated in a city centre.

Shadows fall on other buildings. In a dense core, the shadow of a tall structure lands on the roof of its neighbour rather than on the ground. The visible ground shadow is truncated, sometimes to nothing, and the derived height is a severe underestimate. This failure is worst exactly where buildings are tallest, so the error is not random with respect to the quantity being measured.

Shadows merge. Where several buildings are close together, their shadows form one connected dark region and there is no way to attribute a boundary to a particular structure without already knowing the heights.

Sun elevation cuts both ways. A high sun produces short shadows, so a small error in measuring shadow length becomes a large error in height. A low sun produces long shadows that are easier to measure but far more likely to be occluded, to run off the edge of a tile, or to fall across terrain that is not flat.

Terrain slope corrupts the geometry directly. Shadow length on a slope facing away from the sun is longer than on level ground for the same building, and shorter on a slope facing toward it. Without a terrain model to correct for it, every building on a hillside is misestimated in a direction determined by aspect.

Roof shape confuses the shadow outline. A pitched roof casts a shadow whose far edge corresponds to the ridge, not the eaves, and whose shape depends on orientation relative to the sun. Setbacks, parapets, plant rooms and rooftop equipment all add features to the shadow that a simple length measurement misreads.

Dark ground surfaces defeat the segmentation. Asphalt, water, fresh tarmac and shaded vegetation can all be as dark as shadow. Distinguishing them requires either spectral information or the geometric constraint that shadows lie in a consistent direction from their casting object.

Stereo pairs and parallax

The second family measures height directly rather than inferring it. Two images of the same place taken from different viewing positions show the same rooftop displaced relative to the ground around it, and that displacement, the parallax, is a function of height and the geometry between the two views.

This is the same principle as human binocular vision, applied with satellites or aircraft. Given accurate knowledge of the sensor positions and orientations, the reconstruction is a well-posed geometric problem rather than an inference.

The practical constraints are what limit it. The two acquisitions have to be close enough in time that the scene has not changed, which for satellite stereo usually means same-orbit pairs rather than images collected months apart. They have to view the scene from angles far enough apart to give measurable parallax, and close enough together that the same surfaces are visible in both. Increasing the angular separation improves the depth sensitivity and worsens the matching, because surfaces seen obliquely from two very different directions no longer look alike.

Matching itself fails on the same things that defeat any correspondence problem: uniform roof surfaces with no texture, strongly repetitive patterns such as regular window grids or identical roof panels, and anything that moved. In narrow streets, the ground is occluded in one view or both, so the terrain reference under the building is unknown and the height has to be interpolated from further away.

Radar surface models

Radar systems produce elevation information by a different route, using the phase or the timing of returns rather than optical correspondence, and they do it through cloud and at night. For large area coverage this is a decisive advantage, since the optical methods are hostage to acquisition conditions and radar is not.

The cost is that radar sees buildings in ways that take some getting used to. A vertical wall facing the sensor returns energy from the wall and the ground in front of it at similar ranges, so they collapse together in the image. The far side of the building sits in radar shadow with no return at all. Corner reflections between wall and ground produce extremely bright lines that dominate the local signal. In dense urban areas these effects overlap between neighbouring buildings.

Resolution is also coarser in the widely available open products than in optical imagery, so small structures are not resolved as separate objects at all and the elevation model records a blended surface rather than distinct roofs.

The result is that radar-derived surface models are excellent for the shape of the built envelope over a city and weak for the height of an individual small building. That is an acceptable trade for many purposes and a fatal one for others.

The surface model versus terrain model problem

Every elevation-based method produces a digital surface model, an elevation of whatever the sensor saw first. To get building height, the terrain underneath has to be subtracted, and that terrain comes from a digital terrain model, an estimate of the bare ground.

In open landscapes this subtraction is well behaved. In cities it is the largest single source of error in the whole exercise, for a reason that is easy to miss: in a dense built area, the bare ground is not visible. The terrain model there is not measured, it is interpolated from wherever the ground could be seen, which may be a park several hundred metres away or the far side of the block.

Where the two models come from different sources, they may also use different vertical datums, different grid alignments and different resolutions. Subtracting a coarse terrain grid from a fine surface grid resamples the terrain across the building, so a structure spanning a terrain slope inherits a systematic tilt. Small vertical datum mismatches shift every height in a region by a constant, which is easy to detect if anyone checks against a known building and invisible if nobody does.

Vegetation compounds it. A surface model records tree canopy as surface. A building adjacent to or overhung by mature trees has its apparent roof height contaminated by canopy, and the contamination is seasonal for deciduous cover.

Learned estimation from a single image

The newest family estimates height from a single overhead image without explicit geometry, using a model trained on regions where heights were known. It has an obvious appeal, since it works on the imagery already available, needs no stereo pair, no radar and no sun angle, and produces a dense answer everywhere.

What such a model learns is worth being precise about. It is not measuring. It is recognising the visual correlates of height, which include shadow, apparent facade visible at off-nadir viewing, roof texture and equipment, building size and shape, and the surrounding urban pattern. These correlates are real, and in the training distribution they support good predictions.

The problem is that the correlates are regionally specific. Roof material, building typology, street width, block structure, latitude and typical sun angle all differ. A model that learned that this particular combination of roof texture and street width means eight storeys in one city carries that association into a city where the same appearance means three, and reports it with the same apparent confidence. The output is plausible rather than measured, and plausibility is not detectable from the output alone.

Learned estimation is a reasonable default where nothing else is available, and it should never be the only method in a region that does not resemble the training regions.

The error is larger than people assume

Whatever method is used, the honest uncertainty on an individual building height is larger than the tidy decimal in the output field suggests.

There are three components, and they behave differently. There is measurement error, which is roughly random and averages out over many buildings. There is definitional error, the gap between what was measured and what the consumer means by height, which does not average out because it is a systematic offset. And there is terrain error, which is spatially correlated, so every building in the same neighbourhood is wrong together.

That third property is what makes area aggregates unreliable in the way people least expect. Averaging a thousand buildings does not help if the terrain model under all of them is offset by the same amount. The mean converges neatly onto the wrong answer, and the apparent precision of the aggregate makes the result more persuasive rather than less.

What a height field should carry

A height value on its own is not usable by anyone who cares about being right. It should travel with three additional facts.

The method: shadow, stereo, radar, learned or fused. Consumers can reason about failure modes only if they know which failure modes apply.

The definition: eaves, ridge, mean roof, and above what reference. Without this the number cannot be compared with any other height field.

The confidence, expressed as a band rather than a decimal, and with an explicit unknown where the method's assumptions were violated. A building in a dense core estimated from ground shadow should be flagged, not silently returned.

Where several methods are available, the disagreement between them is the single most informative diagnostic in the pipeline. Two independent estimates that agree closely deserve confidence. Two that differ by a factor mean at least one assumption broke, and the sensible output is a range with a note, not a mean that hides the conflict.

The decision rule

If a decision hangs on one building, do not use a modelled height without checking it against a second, independent method or against something known on the ground. If a decision is statistical across thousands of buildings, a modelled height is usually fine, provided the terrain model beneath it has been sanity checked, since terrain error is the one component that survives averaging.

And if the height cannot be estimated in a given place because the method's assumptions do not hold there, return nothing and say so. A missing value propagates honestly through a pipeline. A confident wrong number does not.