Output Format Preferences
Configure how enriched LAZ files are saved to balance feature completeness with software compatibility.
Overviewβ
The library supports two output format strategies:
- Augmented LAZ (LAZ 1.4) - Full feature preservation (default)
- QGIS-Compatible LAZ (LAZ 1.2) - Maximum compatibility (optional)
Default Behaviorβ
By default, the library preserves all geometric features using LAZ 1.4 format:
# Default: Creates augmented LAZ with all features
ign-lidar-hd enrich \
--input-dir raw_tiles/ \
--output enriched_tiles/ \
--mode full
Output: enriched_tiles/tile.laz
(LAZ 1.4 with 30+ features)
Configuration Optionsβ
Prefer Augmented LAZ (Default)β
Setting: PREFER_AUGMENTED_LAZ = True
- Format: LAZ 1.4
- Features: All 30+ geometric attributes preserved
- Compatibility: Modern LiDAR software (CloudCompare, FME, etc.)
- File Size: Slightly larger due to extended attributes
Benefits:
- Complete feature set available
- No data loss during processing
- Future-proof format
QGIS Compatibility Modeβ
Setting: AUTO_CONVERT_TO_QGIS = False
(manual conversion)
For QGIS compatibility, use the conversion utility:
# Method 1: Convert after enrichment
ign-lidar-hd enrich --input-dir raw/ --output enriched/
python scripts/batch_convert_qgis.py enriched/
# Method 2: Use QGIS converter directly
python -m ign_lidar.qgis_converter enriched/tile.laz
Output:
enriched/tile.laz
(LAZ 1.4, full features)enriched/tile_qgis.laz
(LAZ 1.2, QGIS-compatible)
Format Comparisonβ
Feature | Augmented LAZ | QGIS LAZ |
---|---|---|
Format Version | LAZ 1.4 | LAZ 1.2 |
Geometric Features | 30+ attributes | Selected attributes |
File Size | ~310MB | ~305MB |
QGIS Compatibility | Modern versions | All versions |
CloudCompare | β Full support | β Full support |
FME | β Full support | β Full support |
Custom Analysis | β All features | β οΈ Limited features |
Available Features by Formatβ
Augmented LAZ (Full Feature Set)β
Geometric Features:
normal_x
,normal_y
,normal_z
- Surface normalscurvature
- Surface curvatureplanarity
,linearity
,sphericity
- Shape descriptorsroughness
- Surface textureanisotropy
- Directional variation
Building-Specific Features:
verticality
- Wall orientation scorewall_score
,roof_score
- Component probabilitiesheight_above_ground
- Normalized elevationdensity
- Local point densityvertical_std
- Height variation
Advanced Features:
eigenvalue_1
,eigenvalue_2
,eigenvalue_3
- Principal componentsnum_points_2m
- Neighborhood sizeneighborhood_extent
- Spatial extentheight_extent_ratio
- Geometric ratios
QGIS LAZ (Compatible Subset)β
Core Features (guaranteed compatibility):
normal_x
,normal_y
,normal_z
curvature
planarity
,linearity
,sphericity
height_above_ground
wall_score
,roof_score
verticality
Excluded Features (compatibility limitations):
- Advanced eigenvalue decomposition
- Complex neighborhood statistics
- Extended geometric ratios
When to Use Each Formatβ
Use Augmented LAZ When:β
- Research applications requiring full feature set
- Custom analysis with machine learning models
- Advanced visualization in CloudCompare or specialized tools
- Future processing where feature completeness matters
- Archival storage for long-term data preservation
Use QGIS LAZ When:β
- GIS workflows primarily using QGIS
- Visualization focused on basic geometric properties
- Sharing data with users who have older software
- Web mapping applications with format constraints
- Teaching/demos where compatibility is critical
Configuration Examplesβ
Research/Development Workflowβ
# Full feature extraction for ML research
ign-lidar-hd enrich \
--input-dir raw_tiles/ \
--output research_data/ \
--mode full
# Keep all 30+ features in LAZ 1.4 format
# Use for: scikit-learn, PyTorch, custom analysis
GIS/Visualization Workflowβ
# Basic enrichment
ign-lidar-hd enrich \
--input-dir raw_tiles/ \
--output enriched_tiles/ \
--mode full
# Convert for QGIS
python scripts/batch_convert_qgis.py enriched_tiles/
# Result: Both formats available
ls enriched_tiles/
# tile.laz (full features)
# tile_qgis.laz (QGIS-compatible)
Production Workflowβ
# Process with smart skip detection
ign-lidar-hd enrich \
--input-dir large_dataset/ \
--output processed/ \
--mode full
# Selectively convert tiles needing QGIS compatibility
python -m ign_lidar.qgis_converter processed/priority_tiles/
Programmatic Configurationβ
Python APIβ
from ign_lidar import LiDARProcessor, config
# Option 1: Use configuration
config.PREFER_AUGMENTED_LAZ = True
config.AUTO_CONVERT_TO_QGIS = False
processor = LiDARProcessor()
processor.enrich_file('input.laz', 'output/')
# Option 2: Direct format control
processor = LiDARProcessor(
output_format='augmented' # or 'qgis'
)
Configuration Fileβ
Create config/local_settings.py
:
# Format preferences
PREFER_AUGMENTED_LAZ = True
AUTO_CONVERT_TO_QGIS = False
# Processing preferences
DEFAULT_MODE = 'full'
DEFAULT_WORKERS = 4
# Output preferences
PRESERVE_DIRECTORY_STRUCTURE = True
COPY_METADATA_FILES = True
File Naming Conventionsβ
Standard Outputβ
enriched_tiles/
βββ LIDARHD_FXX_0123_4567_LA93_IGN69_2020.laz # Augmented LAZ
βββ metadata/
βββ LIDARHD_FXX_0123_4567_LA93_IGN69_2020.json
With QGIS Conversionβ
enriched_tiles/
βββ LIDARHD_FXX_0123_4567_LA93_IGN69_2020.laz # Augmented LAZ
βββ LIDARHD_FXX_0123_4567_LA93_IGN69_2020_qgis.laz # QGIS-compatible
βββ metadata/
βββ LIDARHD_FXX_0123_4567_LA93_IGN69_2020.json
Quality Verificationβ
Check Format Versionβ
import laspy
# Check file format
las = laspy.read('enriched_tile.laz')
print(f"LAZ version: {las.header.version}")
print(f"Point format: {las.point_format.id}")
print(f"Extra dimensions: {las.point_format.extra_dimension_names}")
Validate QGIS Compatibilityβ
# Test QGIS compatibility
python scripts/validation/test_qgis_compatibility.py enriched_tile_qgis.laz
# Expected output:
# β
LAZ 1.2 format detected
# β
Compatible point format (ID 6)
# β
Standard dimensions present
# β
Compatible extra dimensions: 8 found
# β
File should load properly in QGIS
Troubleshootingβ
QGIS Won't Load Fileβ
Issue: "Unsupported file format" in QGIS
Solution: Convert to QGIS format
python -m ign_lidar.qgis_converter problematic_file.laz
# Creates: problematic_file_qgis.laz
Missing Features in Analysisβ
Issue: Can't find expected attributes
Cause: Using QGIS-compatible format instead of full format
Solution: Use augmented LAZ for analysis
# Load full feature set
las = laspy.read('tile.laz') # Not tile_qgis.laz
features = las.point_format.extra_dimension_names
print(f"Available features: {len(features)}")
Large File Sizesβ
Issue: Files larger than expected
Cause: Full feature set increases file size
Solution:
- Use QGIS format for storage-constrained applications
- Compress with higher LAZ compression levels
- Filter to essential features only
Performance Considerationsβ
Processing Speedβ
- Augmented LAZ: Faster (no conversion overhead)
- QGIS LAZ: Slower (requires attribute filtering/conversion)
Storage Requirementsβ
- Augmented LAZ: ~5-10% larger files
- QGIS LAZ: Standard LAZ file sizes
- Both formats: 2x storage if keeping both
Memory Usageβ
- Augmented LAZ: Higher memory during processing
- QGIS LAZ: Lower memory (fewer attributes)
See Alsoβ
- QGIS Integration Guide - Using files in QGIS
- Smart Skip Features - Avoid reprocessing files
- CLI Commands - Command-line options