LAS classification flags and noise points: withheld, overlap, synthetic, key-point

Two LiDAR files can carry identical classification codes and still produce completely different terrain surfaces. The reason: a LAS point stores more than a class. It also carries a small set of status bits, the flags, that tell software how each point should be treated. Four flags do that work (withheld, key-point, synthetic, overlap), alongside two noise classes, 7 for low points and 18 for high noise. Getting them right is often the difference between a clean bare-earth model and one pocked with pits and spikes.
Code versus flag: two different questions
The class says what a point is: 2 ground, 6 building. The flags say how to handle it. A ground point can be flagged withheld; a building point can be flagged overlap. Setting a flag never changes the class, and that separation is deliberate. It lets you steer processing without rewriting the meaning of the point.
Where they live in the file depends on the point record format. Legacy formats 0 to 5 pack class and flags into one byte, which is why old files cap classes at 31 and have no overlap flag at all. LAS 1.4's formats 6 to 10 split them: a full byte for the class, a dedicated flags field for synthetic, key-point, withheld, and overlap.
| Flag | What it means | Typical use |
|---|---|---|
| withheld | Exclude this point from processing and display | Hide noise and blunders without deleting them |
| key-point | Essential to the surface shape | Protect ridge lines and slope breaks through thinning |
| synthetic | Derived, not directly sensed | Points added from breaklines or manual editing |
| overlap | Lies where two flight lines cover the same ground | Normalize density; hold out of accuracy checks |
Overlap: the old class 12 versus the flag
Overlap trips people up because the convention changed. In the legacy scheme, overlapping points were reclassified to code 12, which destroyed their real class: a ground point in an overlap zone stopped being ground. Formats 6 to 10 deprecate class 12 and use the overlap flag instead. Ground stays ground, and the flag rides on top. That matters because overlap is not an error, it is extra coverage. Left unmanaged, the doubled density along overlap seams biases surfaces and skews density statistics. Flagged, it can be thinned or held out of an accuracy check while every point keeps its true class.

Noise points: classes 7 and 18
Noise gets classes rather than flags. Class 7 catches returns well below the true surface: multipath, birds low over water, scanner artifacts, the points that would punch pits into a terrain model. Class 18 catches returns far above it: atmospheric hits, birds, aircraft. Noise is found geometrically, by asking whether a point plausibly belongs to anything around it: outlier tests flag returns sitting far from their neighbours in height, isolation tests flag returns with too few neighbours at all.
Flags have to survive the pipeline
A flag is only useful if it survives the trip to the deliverable. The formats are not the problem: LAZ is a lossless compression of LAS, COPC is a reorganized LAZ, and all three store the same point fields. The weak link is the software at each hop. Two behaviours matter. Does the tool honor withheld, excluding those points from surfaces and statistics by default? And does it preserve flags on conversion? A careless export can drop the flag bits, downgrade a format 6 file to a legacy format with no overlap flag, or collapse overlap back onto class 12. When that happens the file still opens and the points are still there, but the noise you set aside is now indistinguishable from good data.
Habits that keep a block trustworthy
The payoff is concrete. Uncaught noise is the most common cause of a wrecked ground surface; one low point can drag a terrain triangle into a pit. Key-points let a block be thinned for delivery while the ridge lines and slope breaks survive. Withheld gives reviewers a clean working view without destroying a single point. A few habits protect all of it:
- Work non-destructively: classify and flag noise rather than deleting it, so an aggressive filter can be walked back.
- Use flags for QC: withheld and the noise classes show reviewers exactly what was removed, and whether a real return was caught by mistake.
- Verify every round-trip: after a LAS, LAZ, or COPC conversion, confirm the point format is still 6 to 10 and the flag counts match the source.
- Stay in formats 6 to 10 end to end: it avoids the class
12trap and keeps the overlap flag alive through export.

This is the kind of bookkeeping a local classification tool should handle for you. Vecten Desktop runs entirely on your own workstation and reads and writes LAS, LAZ, and COPC end to end, with the classification a block carries preserved through export rather than lost to a round-trip through an outside service, which keeps a block reviewable from the raw scan to the final deliverable.
Classes tell you what a point is. Flags tell you what to do with it. A deliverable is only as trustworthy as the weaker of the two.


