The command line
The service runs the same binary you would. Every operation is a subcommand over a file on disk, every one is scriptable, and every one can emit machine-readable output instead of prose.
The engine is pure Rust and needs no PDAL or PROJ installation to run its native commands.
The list below is the engine's own, transcribed at the version this platform is pinned to. Flags, defaults and class numbers are quoted rather than paraphrased — see the note at the foot of the page.
On this page
- Ask about a file
- Clean and classify
- Place it correctly
- Make deliverables
- Corridors and canopy
- Split and reassemble
- Publish and exchange
- Operate it
Transcribed from the engine repository's README, at the pinned commit
Ask about a file
| Command | What it does |
|---|---|
lazweaver info <file.laz> | header, bounds, CRS (horizontal + vertical), warnings |
lazweaver stats <file.laz> | class histogram, intensity, elevation percentiles, density |
lazweaver georef show <file.laz> | the CRS record: horizontal/vertical EPSG, units, origin offset |
lazweaver georef set <in> --out <out> --h-epsg 32643 [--v-epsg 3855] | stamp a CRS (LAS 1.4 WKT VLR) |
lazweaver validate <file.laz> | integrity/sanity checks; exit 1 on failure |
Clean and classify
| Command | What it does |
|---|---|
lazweaver thin <in> --out <out> --spacing 0.5 | voxel-grid thinning (native) |
lazweaver denoise <in> --out <out> [--method gap|sor|radius|zrange] [--drop] | noise → class 7/18 or removed |
lazweaver classify <in> --out <out> [--cell 1 --max-window 20 --slope 0.15] | ground (PMF), veg by height, buildings |
lazweaver clip <in> --out <out> [--bbox] [--polygon] [--zmin/--zmax] [--classes] [--returns] [--invert] | subset by extent, polygon, height, class or return |
lazweaver colorize <in> --out <out> --by elevation|intensity|class|height|image [--image ortho.tif] | colour the points, from a ramp or from an orthophoto |
lazweaver equalize <in> --out <out> [--reference id --angle] | match per-strip intensity histograms |
Place it correctly
| Command | What it does |
|---|---|
lazweaver transform <in> --out <out> --dx --dy --dz --scale --rotate [--pivot x,y] | rigid/affine correction |
lazweaver reproject <in> --out <out> --to EPSG:7755 [--from ...] [--dz] [--geoid f.gtx --vertical ...] | reproject horizontally, and vertically through a geoid grid |
lazweaver compare truth.laz result.laz | confusion matrix / precision / recall per class |
lazweaver qa control <in> --points gcp.csv [--apply fixed.laz --html r.html] | ground-control residuals, rigid solve |
lazweaver qa overlap <in> [--cell 2 --out dz.tif --warn 0.10 --fail 0.25] | flight-strip dz statistics per pair |
lazweaver qa coverage <in> [--cell 2 --min-density 4 --out-dir d --warn-gap-area 50 --fail-gap-area 200] | density, gaps, overlap %, scan angle |
lazweaver qa adjust <in> --out <out.laz> [--cell 2 --fix id|--fix-mean --tilt --max-shift 1.0 --html r.html] | solve + apply per-strip vertical/tilt correction |
Make deliverables
| Command | What it does |
|---|---|
lazweaver section <in> --out <out> --line x1,y1,x2,y2 --thickness 2 [--profile p.csv] | vertical cross-section |
lazweaver raster <in> --out <out.tif> --type dtm|dsm|chm|density|intensity --cell 1 | GeoTIFF with CRS |
lazweaver contour <in> --out c.geojson --interval 1 | contours from ground points (marching squares) |
lazweaver process <file|dir> --out-dir out/ | the whole baseline in one command + HTML report |
lazweaver render <in> --out v.png --view top|profile|oblique [--by class|elevation|intensity|height|rgb] | offscreen image + .json sidecar |
lazweaver sections <in> --out-dir d --line x1,y1,x2,y2[,...] --interval 20 --width 30 [--png --dxf] | cross-sections per station + long profile |
lazweaver measure area|distance|height|volume ... | numbers as JSON: polygon area, ground-following distance, height at a point, cut/fill |
lazweaver contour ... --format dxf | contours as DXF polylines (CONTOUR_<z>, CONTOUR_INDEX layers) |
lazweaver raster ... --png | colour preview beside the GeoTIFF |
lazweaver mesh <in> --out <tin.obj|glb|xml> [--tolerance 0.2] [--from-dtm dtm.tif] | ground TIN as OBJ, glTF, LandXML |
lazweaver contour|sections|powerline|clearance ... --shp / --format shp | shapefiles with .prj |
lazweaver render ... --title "..." | scale bar, north arrow, axis labels; sections --sheet N |
lazweaver diff before.laz after.laz --out-dir d [--cell 1 --clearance 3 --threshold 0.10] | change detection between two epochs |
Corridors and canopy
| Command | What it does |
|---|---|
lazweaver powerline <in> --out <out> [--report w.json --geojson w.geojson --dxf w.dxf] | conductors (14) + structures (15) + curve per conductor |
lazweaver clearance <in> --distance 3 [--out flagged.laz --geojson e.geojson --report c.json] | vegetation near conductors, ground clearance |
lazweaver canopy <in> --out-dir d [--grid 10 --height-break 2] | forestry canopy metrics: percentiles, cover, strata, rumple, LAI proxy |
Split and reassemble
| Command | What it does |
|---|---|
lazweaver plan <file.laz> --target-points N | bbox grid for fan-out, from the header alone |
lazweaver split <file.laz> --plan p.json --out-dir d | one streaming pass → per-chunk LAZ |
lazweaver merge a.laz b.laz --out m.laz [--dedupe-spacing 0.5] | concatenate, drop strip overlap |
lazweaver pipeline <in> --out <out.copc.laz> --tier terrain [--dry-run] | PDAL bridge (SMRF ground + COPC) |
lazweaver job spec.json | plan → split → parallel stage → merge → manifest.json |
lazweaver stitch <dir> --plan plan.json --out <out> | reassemble halo-split chunks, each point exactly once |
lazweaver chain ... {"type":"ids.assign"} | denoise.low | classify.buildings | classify.water | mesh | new stages |
Publish and exchange
| Command | What it does |
|---|---|
lazweaver synth out.laz --points N | synthetic labelled test cloud (UTM 43N + EGM2008) |
lazweaver tile <in> --out-dir tiles/ [--copc] | overview + per-tile LOD pyramid + tileset.json |
lazweaver copc <in> --out <out.copc.laz> [--node-points 100000] | Cloud Optimised Point Cloud, native (no PDAL) |
lazweaver import <e57|ply|csv|xyz|pts> --out <out.laz> [--h-epsg] [--columns x,y,z,i,r,g,b,c] | device-native formats in |
lazweaver export <in.laz> --out <file> --format e57|ply|csv | and back out |
lazweaver tile ... --format 3dtiles | 3D Tiles 1.1 (glb point tiles + tileset.json) |
Operate it
| Command | What it does |
|---|---|
lazweaver worker --queue-url <sqs-url | dir> | long-running consumer for EC2 / ECS / Kubernetes |
lazweaver doctor [--bucket s3://... --queue ...] | deployment readiness checks; version --json for build info |
Read from README.md in the engine repository at commit 005c1e97488c43174c1890a14a7ca26fffd1f355, the version contracts/engine/PIN names.
Where the list lives
This platform consumes the engine as a released image and a pinned contract, never as source, so there is no README on this side to generate the table from. It is a transcription with the source line recorded against every row, re-read by hand when the pin moves — which is a weaker guarantee than the API reference on the next page, and is said here rather than left to be assumed.