Skip to content
LidarKit

LAS or LAZ to DEM

Turn a point cloud into a surface model or a terrain model, as a GeoTIFF. Runs on your machine — no upload, no fixed size limit.

Drop a LAS or LAZ file to grid

or choose a file

DEM and orthophoto as GeoTIFF · nothing leaves your machine

No upload. Processing runs in a Web Worker on your device — this app has no server component and no upload endpoint. How it works

What it is actually doing

A point cloud is a bag of measurements. Almost everything people want from it — a contour, a volume, a slope map, a cross section, a hillshade — is computed from a regular grid, not from the points. Gridding is the step in between, and it is where most of the decisions that affect the answer get made.

There are three of them, and this page exposes all three:

  1. What to throw away. Points classified as noise (ASPRS 7 and 18) and points carrying the withheld flag are dropped before anything is gridded. This is not optional housekeeping. A surface model is a maximum, and a maximum is by construction maximally sensitive to exactly the errors that are highest — a single return off a bird forty metres up is not a small error in the average, it is the answer for that cell, drawn with the same confidence as the roofs around it.
  2. How coarse a grid. The cell size should follow the point spacing. Every cell finer than the data supports is a cell whose value had to be invented.
  3. Where the ground is. Only for the terrain model, and it is the decision that sets its quality. Either the file's own class 2 points are trusted, or a morphological filter derives the ground from the shape of the lowest surface — opening it at steadily growing window sizes and cutting anything that disappears faster than terrain plausibly could.

The points are then read exactly once. Every record is folded into per-cell accumulators and forgotten, which is why the memory this needs depends on the size of the site and not on the size of the file.

What comes out

ProductRuleKeeps
DSM — surface modelHighest surviving point per cellRoofs, canopy, vehicles, power lines
DTM — terrain modelGround points only, interpolated betweenBare earth, with structures removed

Both are written as single-band Float32 GeoTIFFs, tiled and Deflate compressed, with nodata set and the source file's coordinate system carried through.

Things worth anticipating

  • Buildings come out about one cell too large in a DSM. Any cell a roof merely overlaps takes the roof's height, because the roof point is the highest thing in it. Every structure is dilated at its edges by up to a cell. That is inherent to a maximum, not a fault in the grid — and it is a good reason not to take building footprints from a DSM.
  • Power lines appear as ridges hanging in mid air. The cable really is the highest thing there. Correct for obstruction analysis, unwanted for a visual surface.
  • Water comes out as holes. It absorbs the beam and returns little, so lakes and rivers arrive as gaps rather than flat surfaces. Whether they get filled is the fill distance's decision.
  • Ground under dense canopy is genuinely absent. Neither a classification nor a filter can recover a measurement that was never made. The terrain model interpolates across it, which is the right answer for the surface and still worth knowing about — the coverage bar in the result says how much of the raster is measurement and how much is interpolation.
  • A terrain model is only as good as its ground. If the output looks wrong, the problem is nearly always in how the ground was found, not in how it was interpolated afterwards.

Check it before you use it

The result is shown hillshaded, in place, before anything is downloaded, because the checks that matter are visual ones. On a terrain model, look at where the buildings were: they should be gone, and the ground should not be lumpy where they stood. On a surface model, look for isolated spikes, which are noise that was never flagged as noise. Switch the hillshade off and on — a colour ramp hides metre-scale errors that a raking light makes obvious immediately.

Frequently asked questions

What is the difference between the DSM and the DTM here?
The DSM takes the highest point in each cell, so it keeps roofs, canopy, vehicles and anything else the survey saw from above. The DTM is bare earth: whatever stands on the ground is removed and the surface beneath it reconstructed. Tick both and you get both from one pass over the cloud — the points only have to be read once either way.
What cell size should I choose?
Roughly the average point spacing, which is what the field is filled in with when you open a file. Finer than that and most cells hold no points at all, so their values have to be interpolated — the raster looks more detailed without containing more measurement. Much coarser and you are discarding detail the survey paid for. A DSM can usually carry a finer grid than a DTM from the same cloud, because it draws on every point rather than on the ground-classified minority.
Does it use the classification already in my file?
For the terrain model, yes, when there is a usable amount of it — that is what the Automatic setting checks for. If the cloud has been classified and checked, its own class 2 is better than anything that can be inferred from scratch. If the classification is absent or you do not trust it, choose the ground filter instead and the classification is ignored entirely. Either way, points marked as noise (classes 7 and 18) and points carrying the withheld flag are dropped before anything is gridded.
How are gaps in the data handled?
Small holes are interpolated from their edges; holes wider than the fill distance you set are left as nodata, and so is everything beyond the edge of the cloud. The distinction is the point. A couple of empty cells between returns is a sampling artefact and filling it is uncontroversial. A gap the size of a lake, a building shadow or the ragged edge of the flight block is missing data, and filling that produces a smooth, plausible, confident invention that nothing downstream can tell apart from measurement.
Will the GeoTIFF land in the right place?
It carries the coordinate system the LAS file declared. Files that store the CRS as GeoTIFF projection records — LAS 1.0 to 1.3 — have those records copied through key for key, including any this app does not itself interpret. Files that store WKT instead, which is the LAS 1.4 way, have the EPSG code read out of it and written as a GeoTIFF key, with the CRS name kept as the citation. The page says which of these happened before you start, and says so plainly when the file declares no coordinate system at all. Nothing is reprojected: the coordinates are the file's own.
What does the output look like as a file?
A tiled, Deflate-compressed, single-band Float32 GeoTIFF with GDAL_NODATA set, 256×256 tiles, and the floating-point predictor — the shape GDAL, QGIS and ArcGIS all open without complaint, and small enough that the predictor typically takes it to a fraction of the raw grid size. Nodata cells are written as -9999 and read back as holes.
How large a file can it handle?
There is no fixed limit on the point cloud. The points are read once and folded straight into the grid, so memory is set by the size of the site rather than by the number of points — a multi-gigabyte survey and a small one over the same ground cost the same. What is bounded is the grid: a very fine cell size over a very large extent will be coarsened to fit, and the page tells you before it starts and again in the result if that happened.

Related tools

Learn more