A Digital Surface Model records the elevation of the top of whatever is present: roofs, tree canopy, bridges, vehicles. It is the surface a raindrop would first touch. Where aterrain model strips those objects away, a DSM keeps them.
This makes it substantially easier to produce, and the reason is worth stating outright: a DSM requires no classification.Nothing is being removed, so nothing has to be identified first. The hard, judgement-laden step that dominatesDTM production simply does not appear. A DSM stays close to the measurements — which also means it inherits their flaws directly.
The workflow
- Clean the obvious noise.
- Choose which points to use.
- Rasterise by taking the maximum in each cell.
- Fill the small gaps that remain.
Note the order. Cleaning comes first, which is the opposite of the instinct to rasterise and then tidy up, and the reason is step 3.
Step 1: Remove the noise, before anything else
This is the single most important step in building a DSM, and the one most often left out.
A maximum-value grid is, by construction, maximally sensitive to exactly the errors that are highest. Take the mean of a cell and one wild point among twenty barely moves the answer. Take the maximum and that one point is the answer. A single return off a bird forty metres up becomes a forty-metre spike, rendered with the same confidence as the roofs around it.
So remove class 18, high noise before rasterising, along with any point carrying the withheld flag. If the file predates LAS 1.4 or was written by a tool that did not distinguish them, high noise may be sitting in class 7 with the low noise —the class table covers which version put what where. If the cloud has no noise classification at all, that is worth knowing before you trust the output, and theclassification histogram in the viewerwill tell you in a second.
Low noise — returns below the true surface — matters far less here than it does for a terrain model, since a maximum ignores it. This is the mirror image of the DTM case, where minimum-based reductions chase low noise and high noise is harmless.
Step 2: All points, or first returns?
Both are used. The distinction is smaller than it is often made to sound, but it is not nothing.
| Choice | Argument for | Argument against |
|---|---|---|
| All points, maximum per cell | Cannot miss the highest surface. Works on clouds with no usable return fields, including photogrammetric ones. | More points to process. |
| First returns only | Conceptually matches "what the sensor saw first". Fewer points, so faster. | The first return of a pulse is not necessarily the highest point in the cell, since a neighbouring pulse's first return may be higher. Depends on the return fields being correctly populated. |
Use all points with a maximum unless you have a reason not to. It is robust to the return fields being wrong or absent — and they frequently are. Aphotogrammetric cloud has no genuine return information whatsoever, and plenty of exported LiDAR has the field zeroed, which is not a valid return number at all. Taking the maximum over everything sidesteps the question.
Step 3: Rasterise
Impose the grid; for each cell, take the highest surviving point.
Cell size should follow the point spacing. A DSM can usually support a finer grid than a DTM from the same cloud, because it draws on every point rather than the ground-classified minority — over woodland that can be a difference of an order of magnitude. Roughly the average point spacing is a sound default; going much finer produces mostly empty cells that then have to be filled by guessing.
One consequence of the maximum rule is worth anticipating:buildings come out slightly larger than they are. Any cell that a roof merely overlaps takes the roof's height, since the roof point is the highest thing in it. Every structure is therefore dilated by up to about one cell at its edges. This is inherent to the method rather than a bug, and it is a reason not to take building footprints straight from a DSM.
Step 4: Fill the gaps
A DSM has far fewer holes than a terrain model, because nothing was removed — the gaps are only cells where no point landed. Usually they are small and interpolating across them is uncontroversial.
The exceptions are worth knowing:
- Water. Absorbs the beam and returns little, so lakes and rivers come out as holes rather than flat surfaces. Filling them by interpolation produces a gently domed lake, which is wrong but rarely harmful; flattening them explicitly is better if the surface matters.
- Very dark or specular surfaces. Fresh asphalt, glass roofs and solar panels can return almost nothing, leaving holes in the middle of otherwise well-sampled ground.
- Building shadows in terrestrial or oblique data. Whole regions occluded from every scan position. These are genuinely unknown and are best left as nodata rather than interpolated into a confident invention.
Things that will surprise you
| Feature | What appears | Is it wrong? |
|---|---|---|
| Power lines | Thin ridges hanging in mid-air | No — the cable is the highest thing there. Correct for obstruction analysis, unwanted for a visual surface. |
| Moving vehicles | Isolated blocks on roads, sometimes smeared | No, but they are transient. A DSM is a snapshot, not a stable product. |
| Tree canopy | Rough, noisy texture rather than a smooth dome | No. The canopy really is rough, and the beam penetrates it irregularly. |
| Building edges | Dilated by about one cell | Inherent to a maximum grid. |
| Flight line seams | Faint straight ridges or steps across the survey | Yes — a strip adjustment problem upstream, showing through because the maximum picks whichever strip sits higher. |
| Spikes | Isolated tall pixels over open ground | Yes. Noise that survived step 1. |
What to use it for
A DSM is the right input wherever the objects are the subject: line of sight and viewshed analysis, telecoms propagation, solar potential on roofs, flight obstruction assessment, shadow studies, and true orthophoto rectification.
It is the wrong input for anything about ground: hydrology, contours, earthworks, slope. Water does not flow over roofs.
Paired with a terrain model of the same area, subtracting gives anormalised DSM — heights above local ground rather than above a datum — which is what building-height and canopy-height products are built from.DEM vs DSM vs DTM covers that subtraction.
Doing this here
The cleaning in step 1 and the checking at the end are where a DSM is won or lost, and both run in your browser:
- View the point cloud in 3D and check for noise before building a surface — high noise is obvious from a low viewing angle and nearly invisible from above.
- Check the class histogram to see whether noise classes exist in the file at all.
- Inspect the header for point count, extent and coordinate system.
- Build the DSM — highest point per cell at the cell size you choose, noise and withheld points removed first, hillshaded before download.
- Open the finished DSM with hillshading, an elevation ramp and 3D terrain — the quickest way to spot spikes and seams, since a hillshade exaggerates exactly those.
Checking the cloud before the grid is built, and the surface after, is what separates a clean DSM from one with spikes in it — and both ends of that are files you can drop on the viewer and the LAS to DEM tool right now.