PointCloud-ID
Implements Profile 1.1.2
A deterministic identity for a point cloud, not for one file of it. The same survey as LAS, LAZ or COPC gives three different file hashes; this gives one identity. Drop a LAS file below and watch it computed here in your browser — nothing is uploaded.
Guided reproduction
Five claims, five checks
Each step states what should happen, then runs in this browser against the committed test vector. Nothing to install, nothing to upload.
How it works
Five construction stages, plus optional signing
Follow one point from the committed test vector through every stage. Select a stage to see where it happens on this page.
Schematic cross-encoding example
Three encodings, three SHA-256 digests, one PointCloud-ID
This example models one way LAS, LAZ, and COPC differ: record order. Real conversions also rewrite headers, add and drop VLRs, and can renegotiate scale and offset, none of which a browser page reproduces. Even from record order alone a file hash disagrees on all three. Canonicalize the content first, and the PointCloud-ID is identical. The three panels are JSON stand-ins that carry the same points in different orders, not parsed LAS/LAZ/COPC binaries; the manuscript’s E1 evaluation runs the same experiment on real files. Hashes below are computed live with Web Crypto SHA-256.
Reproduce it yourself
Compute a PointCloud-ID
Paste or edit a JSON array of points, then compute. Anything that is not a usable point is named before hashing starts, so you get a specific reason rather than a wrong identity. Attributes are LAS-native domains (intensity u16, classification u8, GPS time float64, RGB u16, returns u8). The profile is the paper’s toy profile (scale 0.5, offset 0, chunk depth 1). The unedited vector must return 526048e1…, the ID committed in the repository.
The rules this identity is computed under
Two files get the same identity when they hold the same points and agree on these rules. Change any of them and watch what happens.
LAZ and COPC are compressed; this page reads uncompressed LAS. JSON points work too.
Tamper laboratory
Try five changes
Every experiment runs on the toy vector in this tab. The table underneath shows which per-attribute root moved and which did not, which is what “attribute-aware localization” means in practice.
Canonicalization table — every intermediate value for the toy vector
What the profile does
Canonicalization explorer
The same points, quantized to the grid, encoded as 63-bit Morton codes, and put in canonical order. This order is a pure function of content, which is why reordering a file changes nothing. Chunks are the Morton prefix. A single in-place attribute edit ordinarily localizes to one chunk–attribute pair; insertions, deletions and coincident-point cases may affect more.
| # | x | y | z | qx | qy | qz | morton | chunk |
|---|
Check a claim without the cloud
Verify a proof or a signed manifest
A membership proof shows one (chunk × attribute) leaf is committed to a published ID using only an O(log n) sibling path. A signed manifest checks the COSE / Ed25519 signature over the canonical bytes. Both run here with Web Crypto.
What this settles, and what it leaves open
Scope
What it settles, and what it leaves open
Worth reading before you rely on any of this. The boundary is deliberate, and most of the value comes from knowing exactly where it sits.
PointCloud-ID can establish
- Two encodings canonicalize to the same in-scope content
- Signed canonical content has not changed since signing
- Which spatial regions and which attribute domains differ
- That a leaf belongs to a committed attribute tree
It cannot establish
- That the scene recorded was truthful
- That the signer is trustworthy
- That a conversion followed one particular history
- That nothing moved below one grid step
- That attributes outside the declared profile are unchanged
Committed test vectors
Committed, reproducible
Test vectors
The browser recomputes or verifies the browser-compatible vectors below; the final row provides the command for the separately implemented NumPy reproduction.
Everything else
Docs, API, and source
Reference API
Reproduce locally
Resources
Open source & research
Reference impl (TypeScript, zero runtime deps), a separately implemented Python/NumPy recomputation, and a deterministic evaluation harness accompany the paper. Identity is defined only under a declared canonicalization profile.