QGIS Integration Guide
Learn how to visualize and analyze enriched LiDAR files in QGIS with geometric features for building component analysis.
Overviewβ
Enriched LAZ files from this library are fully compatible with QGIS and include 30+ geometric features perfect for:
- Building component visualization
- Surface analysis (walls, roofs, ground)
- Edge detection and linearity analysis
- Density and roughness mapping
Prerequisitesβ
QGIS Requirementsβ
- QGIS 3.10+ with point cloud support
- LAZ/LAS reader plugin (usually included)
Verify Installationβ
# Check if QGIS can read point clouds
# Open QGIS and look for: Layer > Add Layer > Add Point Cloud Layer
Step 1: Enrich LAZ Filesβ
First, create enriched LAZ files with geometric features:
# Enrich tiles with all features
ign-lidar-hd enrich \
--input-dir /path/to/raw_tiles/ \
--output /path/to/enriched_tiles/ \
--mode full \
--num-workers 4
This adds 30+ attributes to each point including:
- Surface properties: planarity, sphericity, linearity
- Geometric features: normals, curvature, roughness
- Building analysis: verticality, wall_score, roof_score
- Height metrics: height_above_ground, vertical_std
Step 2: Load in QGISβ
Import Point Cloudβ
- Open QGIS
- Menu: Layer β Add Layer β Add Point Cloud Layer
- Browse: Select your enriched LAZ file
- Click Add: Point cloud appears in the map
Initial Displayβ
The point cloud will initially display with default elevation coloring. You'll see your LiDAR data as colored points.
Step 3: Visualize Featuresβ
Access Symbologyβ
- Right-click on the layer β Properties
- Symbology tab
- Rendered by: Attribute
- Attribute: Select feature to visualize
Available Featuresβ
Core Geometric Featuresβ
Feature | Description | Range | Use Case |
---|---|---|---|
planarity | Surface flatness score | 0-1 | Detect walls, roofs, ground |
linearity | Edge/line score | 0-1 | Find building edges, cables |
sphericity | 3D spherical score | 0-1 | Identify vegetation, rounded objects |
curvature | Surface curvature | varies | Edge detection, surface analysis |
roughness | Surface texture | varies | Material classification |
Building-Specific Featuresβ
Feature | Description | Range | Use Case |
---|---|---|---|
verticality | Vertical orientation score | 0-1 | Wall detection |
wall_score | Wall probability | 0-1 | Building facade analysis |
roof_score | Roof probability | 0-1 | Roof surface detection |
height_above_ground | Normalized height | meters | Multi-story analysis |
Normal Vectorsβ
Feature | Description | Range | Use Case |
---|---|---|---|
normal_x | X component of surface normal | -1 to 1 | Surface orientation |
normal_y | Y component of surface normal | -1 to 1 | Surface orientation |
normal_z | Z component of surface normal | -1 to 1 | Surface orientation |
Step 4: Recommended Visualizationsβ
Building Wall Detectionβ
Goal: Highlight building walls
Settings:
- Attribute:
wall_score
- Color Ramp: RdYlGn (Red-Yellow-Green)
- Min: 0.0, Max: 1.0
- Filter:
wall_score > 0.7
(optional)
Interpretation:
- Red (0.0-0.3): Non-wall points (ground, vegetation)
- Yellow (0.4-0.6): Possible walls
- Green (0.7-1.0): High confidence walls
Roof Surface Analysisβ
Goal: Identify flat roof surfaces
Settings:
- Attribute:
planarity
- Color Ramp: Viridis
- Min: 0.0, Max: 1.0
- Filter:
roof_score > 0.5 AND verticality < 0.3
Interpretation:
- Dark blue (0.0-0.3): Irregular surfaces
- Green-yellow (0.7-1.0): Flat surfaces (roof candidates)
Building Edge Detectionβ
Goal: Find building corners and edges
Settings:
- Attribute:
linearity
- Color Ramp: Hot (Black to White)
- Min: 0.0, Max: 1.0
- Filter:
linearity > 0.6
Interpretation:
- Black (0.0-0.3): Flat surfaces
- White (0.7-1.0): Linear features (edges, corners)
Height-based Analysisβ
Goal: Visualize building stories
Settings:
- Attribute:
height_above_ground
- Color Ramp: Turbo or Plasma
- Min: 0, Max: 30 (adjust to your data)
- Filter:
wall_score > 0.5
Interpretation:
- Blue (0-3m): Ground floor
- Green (3-6m): First floor
- Yellow-Red (6m+): Upper floors
Advanced Filteringβ
Multi-attribute Filteringβ
Use QGIS expressions for complex filtering:
-- High-confidence building walls above ground floor
"wall_score" > 0.8 AND "height_above_ground" > 3 AND "height_above_ground" < 20
-- Flat roof surfaces
"planarity" > 0.7 AND "roof_score" > 0.6 AND "verticality" < 0.2
-- Building edges at upper levels
"linearity" > 0.6 AND "height_above_ground" > 3
-- Vegetation points (high sphericity, low planarity)
"sphericity" > 0.5 AND "planarity" < 0.4
Expression Builderβ
- Right-click layer β Filter
- Expression builder opens
- Enter expression using attribute names
- Test and Apply
Visualization Examplesβ
Example 1: Building Component Classificationβ
Steps:
- Load enriched LAZ file
- Create 3 separate layers (duplicate the layer)
- Layer 1: Walls (
wall_score > 0.7
, red color) - Layer 2: Roofs (
roof_score > 0.7 AND verticality < 0.3
, blue color) - Layer 3: Ground (
height_above_ground < 1
, green color)
Result: Color-coded building components
Example 2: Surface Quality Analysisβ
Steps:
- Visualize by
roughness
attribute - Use discrete classes: Smooth (0-0.1), Medium (0.1-0.3), Rough (0.3+)
- Apply to identify material types
Example 3: Architectural Detail Detectionβ
Steps:
- Filter:
linearity > 0.6 AND height_above_ground > 2
- Color by
height_above_ground
- Result: Building edges and architectural details colored by height
Troubleshootingβ
Issue: LAZ File Won't Openβ
Symptoms: "Cannot read file" error
Solutions:
- Check QGIS version (needs 3.10+)
- Verify LAZ support: Plugins β Manage Plugins β Search "LAZ"
- Try converting to LAS format if needed
Issue: No Custom Attributes Visibleβ
Symptoms: Only X, Y, Z, Intensity available
Verification:
# Check if enrichment worked
python -c "
import laspy
las = laspy.read('enriched_file.laz')
print('Extra dimensions:', las.point_format.extra_dimension_names)
"
Solutions:
- Re-run enrichment process
- Ensure enrichment completed successfully
- Check file wasn't overwritten
Issue: Visualization Looks Noisyβ
Symptoms: Point cloud shows scan line artifacts
Cause: Using old fixed k-neighbors instead of adaptive radius
Solution: Update to latest version with radius-based feature computation
Issue: Performance Problemsβ
Symptoms: QGIS slow with large files
Solutions:
- Limit point display: Set maximum points in layer properties
- Use Level of Detail: Enable in rendering settings
- Clip to area: Use spatial filter for region of interest
- Simplify: Process smaller tiles or downsample
Data Exportβ
Export Filtered Pointsβ
- Right-click layer β Export β Save Features As
- Format: LAS/LAZ
- Filter: Use current filter or create new one
- Save: Filtered point cloud as new file
Export to Other Formatsβ
- CSV: For spreadsheet analysis
- Shapefile: For vector GIS analysis (centroids)
- GeoJSON: For web mapping
Performance Tipsβ
Large Dataset Handlingβ
# Process smaller tiles for better QGIS performance
ign-lidar-hd process \
--input large_tile.laz \
--output patches/ \
--patch-size 20.0 # Smaller patches
# Or clip large files geographically
# Use QGIS Clip tool or command line utilities
Display Optimizationβ
- Point budget: Limit to 1M points for smooth interaction
- Level of detail: Enable automatic point reduction
- Attribute caching: QGIS will cache attribute statistics
Integration with Other Toolsβ
Combine with Vector Dataβ
- Building footprints: Overlay building polygons
- Road networks: Add context with street data
- Property boundaries: Combine with cadastral data
Export Resultsβ
- Screenshots: High-resolution map exports
- Analysis results: Statistical summaries
- Filtered datasets: Export classified points
See Alsoβ
- Basic Usage Guide - Creating enriched LAZ files
- CLI Commands - Enrichment command reference
- QGIS Troubleshooting - Common issues and solutions
- Memory Optimization - Performance tuning