LiDAR

LiDAR Point Clouds,
Queried at Cloud Scale

GeoQ reads LAZ 1.4 and COPC (Cloud-Optimized Point Cloud) files via the DuckDB PDAL extension, applying spatial filters, SQL analytics, and exporting results, all without downloading the full file.

What You Can Do

Full SQL power over LAZ/COPC point clouds, locally or streaming
from cloud object storage. Filter by bounding box or WKT,
run DuckDB analytics on the points table, and export only what you need.

LAZ 1.4 & COPC Support
Read any conformant LAZ 1.4 or Cloud-Optimized Point Cloud file. COPC's spatial octree enables efficient range-request streaming, only the tiles you need are fetched.
Bounding Box Spatial Filter
Pass --bbox "minX,minY,maxX,maxY" to push the spatial predicate into the PDAL reader. Only matching points are returned, zero over-read.
WKT Polygon Filter
Supply an arbitrary WKT polygon via --filter-wkt for precise area-of-interest clipping beyond simple rectangles.
Full SQL Analytics
Use --sql to run any DuckDB query against the points table: GROUP BY classification, percentile intensities, density grids, or spatial aggregations.
S3 & HTTPS Sources
Point --source at an s3:// URI or HTTPS URL. DuckDB httpfs fetches only the byte ranges needed, no full file download.
3D Web Visualization
Register a COPC source in the web UI and the Three.js point cloud viewer renders it in the browser with interactive pan, zoom, and classification coloring.
Multi-Format Export
Results stream to CSV, GeoJSON, JSON, or native LAZ. Export a spatial subset back as a COPC-structured LAZ for downstream pipelines.
On-Demand Extension Loading
The PDAL extension is loaded the first time a point cloud command runs, no manual install step. Community extensions are auto-downloaded from the DuckDB extension registry.

Point Cloud Commands

# Classify and count points in a bounding box from S3 geoq cloud point-cloud \ --source s3://lidar-bucket/city.copc.laz \ --bbox "-122.5,37.7,-122.3,37.9" \ --sql "SELECT classification, COUNT(*) as cnt, AVG(intensity) as avg_intensity FROM points GROUP BY classification ORDER BY cnt DESC" \ --output csv # Polygon filter for a specific building footprint geoq cloud point-cloud \ --source data.copc.laz \ --filter-wkt "POLYGON((-122.41 37.80,-122.40 37.80,-122.40 37.81,-122.41 37.81,-122.41 37.80))" \ --output geojson # Export a filtered subset as LAZ geoq cloud point-cloud \ --source https://cdn.example.com/survey.copc.laz \ --bbox "-122.5,37.7,-122.3,37.9" \ --output laz \ --out-file filtered.laz # Open interactive DuckDB SQL UI for live exploration geoq cloud point-cloud \ --source data.copc.laz \ --ui

Who Uses Point Cloud Queries?

Urban Planning & Digital Twins

Urban Planning & Digital Twins

Extract building heights, tree canopy coverage, and impervious surface ratios from city-wide COPC scans stored in S3, all without a full dataset download.

Urban LiDARDigital Twin
Infrastructure Inspection

Infrastructure Inspection

Compare repeat LAZ surveys of powerline corridors or pipeline routes. Query point density changes and detect anomalies using SQL aggregations in seconds.

PowerlinesPipeline Survey
Forestry & Biomass Estimation

Forestry & Biomass Estimation

Calculate canopy height models, tree density, and volume estimates from airborne LiDAR, using SQL GROUP BY and spatial aggregations against COPC files on cloud storage.

ForestryBiomass

Ready to Query the Sky?

One command. Any LAZ or COPC file. Local or cloud. Start in seconds.

Get the CLI → ← Back to Home