Documents

Geoskill: LiDAR Point Cloud Analysis

Try it

Read LAS/LAZ/COPC point clouds, compute statistics, classification QA, DEM/DSM/CHM rasters, cross-sections, density maps, and quality reports. Use when analyzing LiDAR point cloud data, generating terrain models, checking point cloud quality, or producing canopy height models.

What it does

Read LAS/LAZ/COPC point clouds, compute statistics, classification QA, DEM/DSM/CHM rasters, cross-sections, density maps, and quality reports. Use when analyzing LiDAR point cloud data, generating terrain models, checking point cloud quality, or producing canopy height models.

The skill document

Prerequisites / 先准备 X 文件

⚠️ 必读 — 本 skill 不属于即用型,需要先准备特定文件才能跑。

本 skill 需要 LAS/LAZ 点云文件,不自动下载(数据太大且按需购买)。

👉 完整教程见仓库根目录 PREREQUISITES.md 2.5 节。

先准备 X 文件:不传 --input 直接跑,用合成点云验证工作流。

快速试跑命令:

python lidar_point_cloud_analysis.py --output-dir ./test

LiDAR Point Cloud Analysis

Reads LAS/LAZ/COPC point clouds, computes statistics, classification QA, DEM/DSM/CHM rasters, cross-sections, density maps, and quality reports.

Trigger

Use when the user wants to:

  • Generate DEM/DSM/CHM from LiDAR point cloud data
  • Check point cloud density, classification, and quality
  • Extract cross-section profiles from point clouds
  • Compute multi-temporal DEM differences for change detection
  • Produce canopy height models for forestry analysis
  • Assess point cloud data quality and coverage

CLI Usage

# Synthetic demo mode (no input files needed)
python scripts/lidar_point_cloud_analysis.py --output-dir ./lpca-output

# With custom resolution and all products
python scripts/lidar_point_cloud_analysis.py \
  --resolution 0.5 \
  --products dem,dsm,chm,density,qa \
  --output-dir ./lpca-output

# DEM only with specific bounding box (legacy 4-floats form)
python scripts/lidar_point_cloud_analysis.py \
  --bbox-bounds 0 0 500 500 \
  --products dem \
  --resolution 1.0 \
  --output-dir ./lpca-output

Data Download (interface reserved)

This skill works on local LAS/LAZ point clouds and does not auto-download from any data source. The standard --bbox / --date-range / --aoi-file CLI flags are exposed (from the shared _geoskill_data_fetcher library) so that a future integration with the USGS 3DEP, OpenTopography, or ESA Copernicus DEM endpoints can be added without changing the CLI surface.

# Reserved: --bbox is parsed to drive the synthetic-data bounds.
# (no actual download happens; this is the interface contract.)
python scripts/lidar_point_cloud_analysis.py \
  --bbox 116,39,117,40 \
  --date-range 2024-06-01,2024-06-30 \
  --output-dir ./lpca-output

Parameters

ParameterDefaultDescription
--inputNoneInput LAS/LAZ file path (optional, uses synthetic data if omitted)
--output-dir./lpca-outputOutput directory
--resolution1.0Raster resolution in meters
--ground-methodgrid_minGround classification: grid_min, pmf
--productsdem,dsm,chm,density,qaComma-separated products to generate
--tile-size100.0Tile size in meters for QA
--bbox-boundsNone(legacy) Bounding box for synthetic data: xmin ymin xmax ymax
--bboxNoneBounding box W,S,E,N (shared flag, drives synthetic-data bounds)
--date-rangeNoneDate range START,END in ISO-8601 (reserved for future DEM endpoint)
--aoi-fileNoneOptional GeoJSON AOI polygon (reserved)

Output

FileDescription
dem.tifDigital Elevation Model (bare earth)
dsm.tifDigital Surface Model (first return)
chm.tifCanopy Height Model (DSM - DEM)
density.tifPoint density map (points/m²)
profiles.geojsonCross-section profiles as GeoJSON
pointcloud_qa.jsonPoint cloud statistics and QA results
request.jsonAnalysis request metadata
dataset-manifest.jsonDataset inventory
output-manifest.jsonOutput file inventory and raster info
qa.jsonQuality assurance checks

Products

CodeNameDescription
demDigital Elevation ModelGround surface (minimum Z per cell)
dsmDigital Surface ModelSurface including objects (maximum Z per cell)
chmCanopy Height ModelHeight above ground (DSM - DEM)
densityPoint DensityPoints per square meter
qaQuality ReportStatistics and quality checks

Ground Classification Methods

MethodDescription
grid_minGrid-based lowest point classification with slope threshold
pmfProgressive Morphological Filter (requires scipy)

ASPRS Classification Codes

CodeName
0Created, Never Classified
1Unassigned
2Ground
3Low Vegetation
4Medium Vegetation
5High Vegetation
6Building
7Low Point (Noise)
8Model Key-point
9Water
10-18Reserved (Rail, Road, Wire, Bridge, etc.)

Exit Codes

CodeMeaning
0Success
2Argument error
3Dependency missing
6Data validation failure
7Processing failure

Limitations

  • LAS/LAZ reading requires laspy (falls back to synthetic data if not installed)
  • Ground classification is simplified; production workflows should use PDAL
  • Large files may require streaming/chunking (not yet implemented for LAS input)
  • Vertical datum is assumed consistent; no datum transformation
  • Multi-temporal difference requires co-registered point clouds

References

  • ASPRS LAS Specification (ASPRS 1.4)
  • IPCC Good Practice Guidance for Land Use
  • OpenTopography Point Cloud Processing Guidelines

Related skills

Extract building footprints and estimate height, floor count proxy, and volume from DSM/DTM/LiDAR data. Produces 2.5D urban models for 3D city modeling, population downscaling, and risk exposure analysis.

1 installs

Analyze land subsidence from InSAR displacement data. Use when the user wants to analyze changes, detect hazards, or generate assessment reports.

1 installs

Automated watershed delineation from DEM. Computes D8 flow direction, flow accumulation, delineates watersheds from outlet points, extracts stream networks, and generates statistics. Use when the user wants to delineate a watershed, compute flow accumulation, extract streams, or analyze hydrological characteristics from a DEM.

1 installs