Visualisateur de nuages de points .las / .laz 100 % frontend (React + MapLibre + three.js).
Le « bake » LAS/LAZ → .bin (format PCBK, voir docs/adr/0001)
est écrit en Rust (webassembly/), compilé en WebAssembly et exécuté dans un Web Worker.
Le nuage baké s'affiche géoréférencé sur une carte MapLibre (orthophotos IGN) via un custom
layer three.js partageant le contexte WebGL (voir docs/adr/0002) ;
les .bin déjà bakés se rouvrent directement.
Vocabulaire du domaine : voir CONTEXT.md.
- Node ≥ 20 (npm)
- Rust (le target
wasm32-unknown-unknownest ajouté par rustup :rustup target add wasm32-unknown-unknown) wasm-packest fourni en devDependency npm
npm install
npm run build:wasm # compile webassembly/ → webassembly/pkg/ (requis avant dev/build)
npm run devnpm run build produit le bundle de production (rebuilder le wasm d'abord si le Rust a changé).
cd webassembly && cargo testPour générer des fichiers d'essai (spirale colorée de 100 k points, en Lambert-93 au centre
de Paris, plus une variante sample-nocrs.las sans CRS pour tester la saisie d'EPSG) :
cd webassembly && cargo run --release --example generate-sample .webassembly/— crate Rustpointcloud-baker: bake LAS/LAZ → PCBK (bake_to_pcbk, export wasmbake), extraction de l'EPSG des VLRs (src/crs.rs)src/lib/baked-pointcloud.ts— parseur PCBK (vues TypedArray zero-copy)src/lib/epsg-registry.ts/src/lib/map-anchor.ts— reprojection proj4 du World Offset vers l'ancre cartesrc/lib/pointcloud-layer.ts/src/lib/pointcloud-shaders.ts— custom layer MapLibre rendu en three.js (modes RGB / intensité / classification / altitude)src/workers/bake-worker.ts— exécute le wasm hors du main thread, remonte la progressionsrc/hooks/use-bake.ts/src/components/— UI : input fichier (.las/.laz/.bin), progression, stats, carte plein écran, réglages, saisie d'EPSG