Troubleshooting Guide
Solutions to common issues encountered when processing LiDAR data with IGN LiDAR HD.
Installation Issuesβ
Dependency Installation Failureβ
Problem: Python package installation fails
ERROR: Failed building wheel for some-package
Solutions:
-
Update pip
pip install --upgrade pip setuptools wheel
-
Install with conda
conda install -c conda-forge ign-lidar-hd
-
Manual dependency installation
pip install numpy scipy laspy pdal
pip install ign-lidar-hd
CUDA/GPU Issuesβ
Problem: CUDA not detected
CUDA not available, falling back to CPU processing
Diagnosis:
# Check CUDA
nvidia-smi
python -c "import torch; print(torch.cuda.is_available())"
Solutions:
- Install NVIDIA drivers
- Install CUDA Toolkit
- Install PyTorch with CUDA support
Processing Issuesβ
Memory Errorsβ
Problem: Insufficient memory
MemoryError: Unable to allocate array
Solutions:
-
Reduce chunk size
processor = Processor(chunk_size=100000)
-
Process in small batches
for batch in split_large_file(input_file, max_points=500000):
process_batch(batch) -
Use pagination
processor = Processor(use_pagination=True, page_size=50000)
GPU Out of Memoryβ
Problem: Insufficient VRAM
CUDA out of memory. Tried to allocate 2.00 GiB
Solutions:
-
Limit GPU memory
processor = Processor(gpu_memory_limit=0.5)
-
Clear GPU cache
import torch
torch.cuda.empty_cache() -
Hybrid CPU/GPU processing
processor = Processor(
use_gpu=True,
fallback_to_cpu=True
)
File Errorsβ
Problem: Corrupted LAS file
LASError: Invalid LAS file header
Diagnosis:
# Verify with PDAL
pdal info input.las
# Validate with laspy
python -c "import laspy; f=laspy.read('input.las'); print('OK')"
Solutions:
-
Repair with PDAL
pdal translate input.las output_fixed.las --writers.las.forward=all
-
Validate and clean
from ign_lidar.utils import validate_and_clean
clean_file = validate_and_clean("input.las")
Performance Issuesβ
Slow Processingβ
Problem: Very poor performance
Diagnosis:
from ign_lidar import Profiler
with Profiler() as prof:
result = processor.process_tile("input.las")
prof.print_bottlenecks()
Solutions:
-
Optimize parameters
processor = Processor(
n_jobs=-1, # All cores
chunk_size=1000000,
use_gpu=True
) -
Check disk speed
# Test disk speed
dd if=/dev/zero of=test_file bs=1M count=1000 -
Monitor resources
htop # CPU and RAM
iotop # Disk I/O
nvidia-smi # GPU
I/O Bottlenecksβ
Problem: Slow read/write
Solutions:
-
Optimize buffers
processor = Processor(
read_buffer_size='128MB',
write_buffer_size='128MB',
io_threads=4
) -
Use fast storage
- Prefer NVMe SSDs
- Avoid network drives for processing
-
Adaptive compression
# Balance compression/speed
processor = Processor(
output_format='laz',
compression_level=1
)
Configuration Issuesβ
Invalid Configurationβ
Problem: Parameter errors
ConfigurationError: Invalid feature configuration
Solutions:
-
Validate configuration
from ign_lidar import Config
config = Config.from_file("config.yaml")
config.validate() -
Use default configuration
config = Config.get_default()
config.features = ['buildings', 'vegetation'] -
Generate configuration templates
# Generate template
ign-lidar-hd config --template > config.yaml
Path Issuesβ
Problem: Files not found
FileNotFoundError: No such file or directory
Solutions:
-
Verify paths
import os
assert os.path.exists("input.las"), "File not found" -
Use absolute paths
input_path = os.path.abspath("input.las")
-
Check permissions
ls -la input.las
chmod 644 input.las
Specific Issuesβ
RGB Augmentationβ
Problem: Color augmentation failure
OrthophotoError: Cannot read orthophoto file
Solutions:
-
Verify format
gdalinfo orthophoto.tif
-
Convert format
gdal_translate -of GTiff input.jp2 output.tif
-
Check georeferencing
from ign_lidar.utils import check_crs_match
match = check_crs_match("input.las", "orthophoto.tif")
Building Detectionβ
Problem: Poor building detection
Solutions:
-
Adjust parameters
config = Config(
building_detection={
'min_points': 100,
'height_threshold': 2.0,
'planarity_threshold': 0.1
}
) -
Adaptive preprocessing
processor = Processor(
ground_classification=True,
noise_removal=True
)
Logging and Debuggingβ
Enable Detailed Loggingβ
import logging
logging.basicConfig(level=logging.DEBUG)
processor = Processor(verbose=True)
Save Logsβ
import logging
logging.basicConfig(
filename='ign_lidar.log',
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
Debug Modeβ
# Debug execution
IGN_LIDAR_DEBUG=1 python script.py
# Detailed profiling
IGN_LIDAR_PROFILE=1 python script.py
Support and Helpβ
Documentationβ
Diagnostic Toolsβ
# System information
ign-lidar-hd system-info
# Configuration test
ign-lidar-hd config-test
# Data validation
ign-lidar-hd validate input.las
Bug Reportingβ
-
Collect information
ign-lidar-hd system-info > system_info.txt
-
Minimal example
# Minimal code reproducing the issue
from ign_lidar import Processor
processor = Processor()
# Error here... -
Test files
- Provide small test LAS file if possible
- Include configuration used
Useful Resourcesβ
- GitHub Repository: Issues and discussions
- Documentation: Detailed guides and API
- Examples: Sample scripts
- Community: Discussion forums
Quick Solutionsβ
General Checklistβ
- β Python 3.8+ installed
- β Dependencies correctly installed
- β Valid input files
- β Read/write permissions
- β Sufficient disk space
- β Available RAM for chunks
- β Updated GPU drivers (if used)
Useful Commandsβ
# Quick diagnostics
ign-lidar-hd doctor
# Clear cache
ign-lidar-hd cache --clear
# Reset configuration
ign-lidar-hd config --reset
# Performance test
ign-lidar-hd benchmark --quick