Blog

DSM vs DTM in forestry: what each model shows you

If you've pulled elevation data for a stand and gotten confused about which file shows the trees, you're not alone. The terminology gets thrown around loosely, and the difference matters a lot if you're trying to back into volume or biomass numbers.

Two surfaces, two different questions

A digital surface model (DSM) records the elevation of whatever the sensor hit first. Over a forested parcel, that's mostly treetops: the outer skin of the canopy, branch tips, occasional gaps where you're looking at mid-canopy or understory instead. A DSM answers "how high is the top of this stand above sea level."

A digital terrain model (DTM), sometimes called a bare earth model in forestry contexts, strips the vegetation and buildings back out and leaves you with the ground surface underneath. It answers a different question: "how high is the dirt, ignoring whatever's growing on it."

Neither one is wrong. They're just measuring different things. The confusion usually shows up when someone hands over a DSM and calls it terrain, or pulls a DTM expecting to see canopy structure and finds a flat, featureless surface instead.

Where canopy height comes from

Subtract the DTM from the DSM at the same location and you get a canopy height model (CHM), the layer that actually tells you how tall the trees are. This is the step that turns two elevation surfaces into something a forester or carbon developer can use: stand height by pixel, which feeds into height-to-volume allometric relationships for a species or region.

Here's the catch that trips up a lot of people new to optical remote sensing: passive optical stereo imagery, VHR satellite or aerial, only sees the first surface it hits. A stereo pair over closed canopy gives you a DSM. It can't see through the crown to the ground underneath, so it doesn't hand you a DTM on its own. Airborne LiDAR can do that, because laser pulses find gaps in the canopy and some energy reaches the forest floor even under decent crown closure. Optical stereo generally can't replicate that for dense stands.

In practice this means a usable bare earth model for a given parcel typically comes from an existing terrain source, LiDAR-derived where available, rather than being generated fresh from the same optical pass that builds your canopy surface. The DSM from stereo imagery plus a reliable DTM for the same ground is what makes a defensible canopy height layer, and from there, a volume regression.

Why this matters for a standing-volume estimate

If you're running an annual check on a holding or a carbon project area and you want a volume/biomass layer without mobilizing a ground LiDAR campaign, the DSM piece is the part that can come from repeat VHR optical stereo passes, refreshed on whatever cadence your reporting cycle needs. The DTM piece is typically a one-time or infrequently updated input, since bare earth doesn't move around the way canopy does, barring major grading, land clearing, or erosion events.

This is the structure behind a canopy height and standing-volume layer built for a defined parcel without a new ground LiDAR survey each cycle: overlapping optical stereo gets you the surface, a terrain layer gets you the ground, and the difference between them is what carries into a volume regression you can hand to an appraiser or a verifier.

A quick way to tell which one you're looking at

Open the raster and look at a stand with uniform tree height next to a road or clearing. If the trees show up as a bump well above the surrounding ground and the road reads flat and low, you're looking at a DSM. If the trees and the road read at roughly the same elevation, with no bump where the canopy should be, you're looking at a DTM. It's a rough check, but it catches most mislabeled files before they make it into a report.

If you're trying to get from "I have elevation rasters" to "I have a standing-volume number for this parcel," that gap between DSM and DTM is exactly where the work happens, and it's worth asking what's filling each side before you trust the output.

Start a pilot

← Back to the blog