On this page
Confirm the file boundary before parsing points
Record a neutral artifact ID, digest, file extension, file size, and whether the first bytes identify the expected LAS family. Then record file source and compression state separately. A .las or .laz suffix is a hint, not a parsed header. The American Society for Photogrammetry and Remote Sensing, (opens in a new tab) header includes a public header block and point data records; the Open Geospatial Consortium, (opens in a new tab) announcement describes LAZ as lossless compression of point-cloud data rather than a different coordinate system.
| Boundary field | Record | Stop if |
|---|---|---|
| Signature | Observed magic value and byte offset | Suffix is the only evidence |
| Version | Major and minor version | Reader silently upgrades or downgrades it |
| Header size | Declared size and observed point-data offset | Offsets overlap or leave an unexplained gap |
| Compression | LAS, LAZ, or unknown | Compression is inferred from a filename only |
| File identity | Neutral ID and digest | A derivative cannot be matched to its source |
Preserve the original header snapshot and the normalized report. If decoding software repairs a truncated or contradictory header, report the repair as reader behavior and do not replace the source evidence with the repaired values.
Match point format, length, and count
The point data record format identifies the fields available per point, while the point record length gives the byte width. For an uncompressed .las file only, after accounting for the public header, VLRs, EVLRs, and point-data offset, compare the declared point count multiplied by record length with the available uncompressed point-data range. That bounded byte-span check is structural evidence, not proof that every point is valid or that the file covers an intended area. Do not apply that multiplication to a compressed .laz payload; use counts reported by decoding software plus documented chunk or seek metadata instead, and retain the software version.
| Header observation | What it supports | What remains open |
|---|---|---|
| Point data record format | Declared field layout | Whether producer populated fields correctly |
| Point record length | Expected byte stride | Whether extension bytes have meaning |
| Uncompressed LAS byte span | Count × record length after header, VLR, and EVLR accounting | Applying byte arithmetic to compressed LAZ or skipping records |
| Legacy point count | Count in the header field | Whether extended count is also present |
| Extended point count | Large-file count where declared | Whether a reader selected the right field |
| Return and classification fields | Available point attributes | Whether values are semantically trustworthy |
| Extra bytes | Named or unknown extensions | Whether an application can decode them |
Synthetic header row
{
"artifact": "fixture-point-cloud-01",
"version": "1.4",
"point_format": 6,
"record_length": "fixture-declared",
"point_count": "fixture-declared",
"decision": "compare before decode"
}Do not paste real coordinates or identifiers into a public worksheet. A synthetic header row is enough to exercise the comparison logic. If the header and file length disagree, hold the file before sampling and retain the contradiction as an evidence item.
Keep integer coordinates, scale, offset, and bounds together
LAS coordinates are stored through integer fields plus scale and offset values. Record the raw integer domain, scale, offset, and reported minimum and maximum for each axis. A display coordinate is a derived value, not a replacement for the header fields. A plausible range can still belong to the wrong CRS or a transformed copy.
| Axis evidence | Record | Do not infer |
|---|---|---|
| Raw integer range | Minimum and maximum as stored | That an integer value is a meter |
| Scale | X, Y, Z typed values | That equal scale means equal uncertainty |
| Offset | X, Y, Z typed values | That offset identifies a datum |
| Header bounds | Reported min and max | That bounds prove all points are inside them |
| CRS records | VLR or EVLR IDs, length, and payload presence | That a missing CRS means WGS84 |
| Units | Declared or unknown | That decimal places prove precision |
The Open Geospatial Consortium, (opens in a new tab) standard is an exchange contract, not a guarantee that a source producer filled every optional field correctly. Record a disagreement between calculated bounds and header bounds, and do not clip points to make the ranges agree. Keep source and transformed coordinates in separate artifacts.
Review VLR, EVLR, and LAZ evidence separately
Variable Length Records and Extended Variable Length Records can carry CRS descriptions, waveform information, extra bytes, or producer-specific metadata. Record user ID, record ID, payload length, location, and a redacted summary. Do not treat a CRS record as a positional-accuracy certificate. For LAZ, record the decoding software, compression mode, point count reported before and after decoding, and whether chunk or seek behavior is documented for the reader.
| Finding | Decision | Next action |
|---|---|---|
| Known CRS record and matching scale | Conditional continue | Compare axis, units, and producer context |
| Multiple CRS records disagree | Hold | Ask which record is authoritative |
| Unknown VLR or EVLR | Preserve unknown | Classify without copying payload data |
| LAZ count from decoding software differs | Hold | Check software version and chunk boundary |
| Point count is zero | Empty artifact | Record empty state, not missing evidence |
| Header metadata contains sensitive labels | Restricted report | Redact values and retain field names only |
The Open Geospatial Consortium, (opens in a new tab) announcement describes LAZ as lossless compression, which is a statement about the compression design. It does not establish that a particular decoding implementation, source, or derivative has preserved every business field. Keep compression verification and data-quality review as different findings.
Use stop conditions before a qualified next step
Stop conditions
- Stop if the signature, version, header size, or point-data offset is missing or contradictory.
- Stop if uncompressed LAS point format, record length, counts, or the accounted point-data range disagree, including legacy and extended count fields.
- Stop if LAZ review relies on point-count × record-length arithmetic instead of counts from decoding software and chunk or seek metadata.
- Stop if scale, offset, units, bounds, or CRS records cannot be reconciled without a reader assumption.
- Stop if LAZ decoding changes the reported structural counts or decoding software cannot explain its boundary.
- Stop before sampling precise coordinates when the handling boundary or owner authority is unknown.
Pair this guide with the data provenance log for source and transformation history and the data card template for collection context. A header report can document structure without claiming survey accuracy, privacy clearance, or sharing permission.
For a supported non-health collection, after the owner has authority to describe the scope and a controlled metadata packet, the qualified appraisal request path may be a preparation step. It does not read LAS or LAZ files, decode points, assess positional accuracy, create a quote, match a buyer, issue a legal opinion, or grant a license.