Skip to content
LidarKit

Classify a point cloud

Find ground, vegetation and buildings in a LAS or LAZ file automatically. Runs on your machine — no upload, no size limit.

Drop a LAS or LAZ file to classify

or choose a file

Ground, vegetation and buildings · nothing leaves your machine

No upload. Conversion 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

Classification is the step that turns a cloud of undifferentiated points into something you can measure with: a terrain model needs ground points only, a volume needs the stockpile separated from the pad it sits on, a planning drawing needs the buildings. Most clouds arrive with every point set to class 0, and labelling 50 million points by hand is not work anyone wants.

The hard part is not the labelling. It is deciding where the ground is, because every other decision is made relative to it. This runs in three stages:

  1. Read the cloud into a raster. Every point is folded into a grid of per-cell summaries — lowest and highest elevation, how much the elevation varies within the cell, and the average colour. Typically a 20 to 25 cm grid, chosen from the point density.
  2. Extract the ground. A morphological filter opens the lowest-elevation surface at steadily growing window sizes. Anything that disappears faster than terrain plausibly could is cut, and the gaps left behind are interpolated from their edges. That gives a bare earth model under the whole site.
  3. Label every point. The cloud is read a second time. Each point gets its height above that ground model, its own colour is turned into a greenness value, and the roughness of its neighbourhood says whether it sits on something flat. Those three numbers decide the class, and the labelled point is written straight out — into the LAZ compressor if that is the format you picked, so no uncompressed copy of a large cloud is ever created.

The rules, in plain terms

ClassWhat has to be true
2 — GroundWithin 25 cm of the terrain model, and not visibly green.
3, 4, 5 — VegetationGreen, or rough and high; split into low, medium and high at 0.5 m and 2 m above ground.
6 — BuildingAt least 2 m above ground, on a smooth surface, part of a contiguous patch of at least 12 m², and not green. Facade points within a metre of a roof are included.
1 — UnclassifiedAbove the ground and none of the above.

Where it struggles

  • Ground under dense canopy. Photogrammetry cannot see through leaves, so there are no ground points to classify there. The terrain model interpolates across the gap, which is the right answer for the surface but means class 2 is genuinely absent under trees.
  • Buildings wider than the largest filter window. A roof the filter cannot span stays in the terrain model, and the whole building then reads as ground rather than as a building. The window spans 100 m, which covers most industrial roofs. Widening it further is not free: it starts removing real terrain as well, so there is no setting that suits every site.
  • Green roofs and dark foliage. Colour is doing real work here, so anything that breaks the colour assumption breaks the class — a moss-covered roof reads as vegetation, and deep shadow under a crown reads as neither.
  • Vehicles and site clutter. Left unclassified on purpose. ASPRS has no class for them, and guessing would only hide them.

Other ways to do it

  • PDALpdal translate in.laz out.laz smrf runs the same family of ground filter, with far more control, and composes with everything else in a pipeline. The right tool for batch work.
  • CloudCompare — the CSF plugin for ground, then manual segmentation for the rest. Best when you want to see and correct every decision.
  • LAStoolslasground and lasclassify are the long-standing commercial answer, and are better than this on airborne LiDAR with real return information.
  • This page — when the data cannot leave the machine, nothing can be installed, or a rough classification in a minute is worth more than a perfect one in an afternoon.

Frequently asked questions

Does this work on photogrammetry clouds, or only LiDAR?
It is built for photogrammetry first. A cloud from Metashape, RealityCapture or Pix4D has one return per point and usually no intensity, so the return-based filters that classical LiDAR classification depends on have nothing to work with. This uses height above ground, surface roughness and per-point colour instead, all of which a photogrammetric cloud does have. It works on LiDAR too, as long as the file carries RGB.
Which classes does it assign?
The ASPRS standard values: 2 ground, 3 low vegetation, 4 medium vegetation, 5 high vegetation, 6 building, and 1 unclassified for everything it will not commit to. It does not invent classes outside the standard, so the result opens correctly in CloudCompare, QGIS, ArcGIS and PDAL.
What ends up unclassified?
Vehicles, fences, poles, machinery, site clutter — anything above the ground that is neither green enough to be foliage nor part of a surface flat and large enough to be a roof. Leaving those as class 1 is deliberate. A wrong class is worse than no class, because it is much harder to find later.
Can I trust it for deliverables?
Treat it as a first pass that removes most of the manual work, not as a final product. It is a rules-based classifier, and on a site it has not been tuned for it will make mistakes — most often at building edges, on rooftop plant, and on ground under dense canopy that photogrammetry never saw in the first place. Check the result in CloudCompare before it goes to a client.
Should I choose LAS or LAZ for the output?
LAZ unless something downstream cannot read it. It is lossless — the points, header, extra bytes and coordinate reference system are identical either way — and it is typically four to five times smaller. That matters more than it sounds: browsers write a download by copying the whole file, and multi-gigabyte copies fail often enough on Windows that the smaller file is simply more likely to arrive. A 3.2 GB cloud comes out around 1.1 GB as LAZ. There is no extra pass and no speed penalty, because labelled points go straight into the compressor.
How large a file can it handle?
There is no fixed limit. Nothing but a coarse raster of the site is held in memory, so a multi-gigabyte survey uses roughly the same memory as a small one. Expect on the order of a minute per gigabyte. Disk is the real constraint rather than memory: the output is written to browser storage first and then copied again into your downloads folder, so allow roughly twice the output size in free space. Choosing LAZ cuts both of those to about a quarter.