OpenLiDARViewerSCIENCE · v0.6.9
Launch viewer
Scientific standing // EVIDENCE MODEL

Precision is not accuracy.
The register keeps them apart.

Every scientific claim the viewer makes is tracked in a machine-readable register with a current evidence level and a required one. A level is earned by evidence that exists today, never by intent. This page is the plain-language reading of that register as of v0.6.9.

0Claims at E4Independent implementation agrees
0Claims at E5No field study has been run
0Reference toolsGDAL, OGR/SpatiaLite, PDAL, SAGA, GRASS, PROJ, GeographicLib, R
0Claims tracked2 at E1 · 6 at E2 · 9 at E3 · 17 at E4
02 The ladder

Seven rungs, one load-bearing boundary.

Ordered weakest to strongest. Everything at or below E3 is verified only against our own code or our own synthetic data, so nothing there may claim independent or field-grade accuracy. Independent evidence begins at E4. Field-grade validity begins at E5.

E0

Implemented

Code exists and runs. Correctness not assessed.

E1

Unit verified

Unit tests pin the implementation against hand-worked expectations.

E2

Analytically verified

Output checked against a closed-form ground truth: the slope of a synthetic plane equals atan of its gradient, the volume of a cone equals πR²H/3, a saddle’s lobes cancel.

E3

Synthetically validated

Validated end-to-end against generated known-truth fixtures: synthetic surfaces and labelled clouds we created.

E4

Cross-implementation validated

17 CLAIMS

A second, independent implementation agrees within a stated tolerance, ideally one registered before the reference was generated. The slope, hillshade and contour tolerances were fixed weeks ahead of their results. The aspect tolerance was carried over from slope and is recorded as such, not as preregistered.

E5

Externally validated

0 · REQUIRED FOR DTM

Validated against external field ground truth by a prospective study: protocol and tolerance frozen before the observations, operators independent of this project. Data alone does not buy it.

E6

Independently reproduced

An independent party reproduced the result from the archived artifact.

03 Validated products

Seventeen claims at E4. What each one agreed with, and what it does not prove.

Each row names the independent reference and the fixture. All but one are agreement on frozen synthetic or analytic fixtures; the E57 row decodes a real public terrestrial scan. None is accuracy against a surveyed monument.

ProductClaim idReferenceAgreement and scope
Slope rasterSLOPE-RASTERGDAL 3.13.1 gdaldemWithin 0.5° on a frozen analytic fixture; tolerance registered before the reference existed.
Aspect rasterASPECT-RASTERGDAL 3.13.1 gdaldemWithin 0.5° with flat ground excluded; tolerance carried over from slope, not preregistered.
HillshadeHILLSHADEGDAL 3.13.1 gdaldemWithin the preregistered one-level tolerance on the 0 to 255 scale, single-direction model only. The maximum difference against GDAL is exactly one level, because the two encode the same 0 to 1 value differently.
ContoursCONTOURSGDAL gdal_contourContour-position distance under 0.05 m on a frozen analytic plane, agreement to 2.9e-5 m.
AreaMEAS-AREAGDAL/OGR OGR_GEOM_AREAPlanar-polygon fixture. Not a field measurement.
DSMDSMPDAL 2.10.2 writers.gdalMax-return grid over 7,500 cells, difference under 4e-6 m within a 0.05 m tolerance. Covers gridding, not ground classification.
DTMDTMPDAL 2.10.2 writers.gdalMin-return grid over 7,500 cells, same tolerance. Required bar remains E5.
Canopy heightCHMPDAL 2.10.2 writers.gdalClamped DSM − DTM against PDAL max minus min over 7,500 cells, under 8e-6 m within 0.1 m.
TPITPIgdaldem 3.13.1 + closed form3,364 interior cells under 9e-7 within 1e-5 on a low-amplitude quadratic chosen to keep the reference’s float32 accumulation below tolerance.
VRMVRMSAGA 7.8.2 + closed form3,136 interior cells within 1e-4 on a smooth tilted quadratic; reproduces closed-form Sappington VRM to under 1e-9.
Cross-section profileMEAS-PROFILEOGR/SpatiaLite 5.1.0 + R quantile751 stations across three parameter sets, largest difference 3.6e-15 m against a 1e-6 m preregistered tolerance. Points held clear of bin and corridor edges, so tie-breaking is untested.
E57 ingestE57-INGESTPDAL 2.10.2 readers.e57All 1,788,994 points, nine dimensions, exact quantised-integer sum at 1e-6. Intensity excluded because PDAL rescales it differently. One CloudCompare re-export tested, not a scanner-native write.
UTM projectionCRS-UTM-PROJECTIONGeographicLib 2.7 + PROJ 9.8.136 geodetic fixtures including Norway 32V and the Svalbard zones. Easting and northing under 1.5 mm. Same datum both sides, so no datum transformation is exercised.
Change rasterCHANGE-RASTERGRASS 8.5.0 r.mapcalcEight synthetic epoch pairs, 3,007 comparable cells, largest relative difference 7e-6 under a 1e-5 gate. Co-registration error absent by construction.
Change volumeCHANGE-VOLUMEGRASS 8.5.0 r.univar + closed formSame eight pairs. The threshold-applied gain and loss volumes agree with r.univar and with the closed form; the raw net volume is outside the check. Uncertainty band stays exploratory.
Hold-out RMSEHOLDOUT-RMSEbase RSix frozen residual vectors; bias, RMSE and max residual agree to about 4.4e-16. Confirms the computation, not field accuracy: held-out points share the source of the interpolated ones.
NVA / VVA statisticNVA-VVAbase R1.96 × pooled RMSE agrees to about 8.9e-16. Not ASPRS checkpoint accuracy; still requires E5.
Partial, and said so. The ground filter stays partial in the register, where its own evidence is synthetic known truth. Agreement against external reference labels on real airborne scenes (OpenGF expert labels, ASPRS producer class-2 ground) is reported separately, with its weak regimes intact: mountain F1 near 0.5, dense-canopy precision near 0.34, and building roofs read as ground. Those labels are a classifier’s output, not survey checkpoints. Field checkpoints at two public USGS sites gave 2.8 cm RMSE over 101 points at Marsh Island, and 58 usable checkpoints across 57 Coconino tiles pooled to 11.11 cm RMSEz. That is absolute-accuracy evidence, recorded, but it is retrospective rather than a prospective study, so it does not lift the DTM to E5.
04 What E5 costs

Why data alone does not buy it.

Downloading a public checkpoint database and computing an RMSE is retrospective. A result chosen after the fact from a database one had access to is not evidence that the method would pass a test it did not know was coming.

01

Frozen protocol

The study design, the tolerance and the pass condition are written down and committed before any observation is made. The harness commit that fixed the slope, hillshade and contour tolerances on 2026-07-05 is the model.

02

Independent operators

People who did not write the code collect the reference and run the comparison. The project supplies the archived artifact and the protocol, then steps back.

03

External ground truth

Surveyed monuments, GNSS checkpoints or a metrology-grade reference, with their own uncertainty stated, not another point cloud from the same sensor.

Until such a study runs, the DTM, contours and every product built on them read as validated against independent implementations and as preview or review wherever field accuracy would be implied. An evidence boundary inspector and a scientific artifact passport are implemented and tested, but no user path reaches either in v0.6.9. Both are recorded in the project’s unreachable-module register, so they are inventory rather than delivered features, and this site does not count them as shipped.

05 Reproducibility

Verify before you trust.

Every release archive carries a Sigstore-signed SLSA provenance statement binding it to the workflow run and commit that produced it, a SHA256SUMS manifest, a CycloneDX SBOM and an evidence record that cites the mutation score, the coverage and the gate that ran. A record with no mutation result, or one under the 75 threshold, is refused.

# download the release assets, then
shasum -a 256 -c SHA256SUMS
npm run release:verify -- --dir <downloaded-assets>
gh attestation verify <archive> --repo Aurtechmx/openlidarviewer

# rebuild the evidence yourself
git clone https://github.com/Aurtechmx/openlidarviewer.git
cd openlidarviewer && npm ci
npm run gate            # 15,598 passed, 49 skipped
npm run validation:study:verify # the PDAL / GDAL / GRASS / SAGA / R study records
node scripts/verify-oracle-versions.mjs # the oracle versions on this machine

Independent tool versions are declared, not assumed. Every study record names the version behind its reference: GDAL 3.13.1 with 3.13.3 recorded where that is what ran, PDAL 2.10.2, GRASS 8.5.0, SAGA 7.8.2, PROJ 9.8.1, GeographicLib 2.7, SpatiaLite 5.1.0 and the R release used. A re-run on a version outside the accepted set fails loudly instead of quietly drifting.

Datasets are cited with their licence. Every registered dataset carries a licence and a licence URL in the dataset register, and a lint refuses a citation that does not resolve. Public fixtures are CC BY 4.0 Zenodo depositions and USGS 3DEP tiles. A dataset of unknown licence is never used.

Method versions are stamped. Each product records the identifier of the method that made it, so a receipt from an older release is comparable to a newer one only when the method id matches.

06 Threats to validity

The parts we would attack first.

Synthetic fixtures are kind

Analytic planes and quadratics avoid the confounds real terrain carries: void interpolation, mixed returns, vegetation under canopy. Agreement there bounds implementation error, not field error.

Hold-out is not independent

Held-out points share the sensor, flight and processing of the interpolated ones. An RMSE from them is a self-consistency figure.

One E57 file

The E57 cross-decode used a CloudCompare re-export. Vendor extension blocks, multi-scan files and spherical coordinates are untested.

Same datum both sides

The UTM projection check never exercised a datum transformation, a PROJ grid or a vertical reference. It proves the projection formula, nothing about datums.

Tie-breaking untested

Profile fixtures hold every point clear of a bin boundary and a corridor edge, so behaviour exactly on an edge is unverified.

Test volume is not completeness

A previous gate still passed 6,182 tests with 16 skipped while all 18 corrected defects remained present. The count is reported; it is not the argument.

Full threats-to-validity record ↗

07 Cite

Archived on Zenodo. Cite the version you used.

The concept DOI always resolves to the newest release. A version DOI pins one archived build. Both carry the CITATION.cff metadata from the repository.

# CITATION.cff (excerpt)
title: "OpenLiDARViewer"
type: software
authors:
  - family-names: "Urias"
    given-names: "A."
    affiliation: "Aurtech"
    orcid: "https://orcid.org/0009-0007-3147-323X"
license: AGPL-3.0-only
repository-code: "https://github.com/Aurtechmx/openlidarviewer"
identifiers:
  - type: doi
    value: "10.5281/zenodo.21544619"
    description: "Concept DOI, resolves to the newest version"

Releases through v0.6.6 remain under MIT. The licence change at v0.6.7 is forward-looking and does not alter any earlier archive. v0.6.9 is deposited under the same concept.

↑↓ MOVE↵ OPENESC CLOSE