Function & Workflow Reference: LAD and ALS Processing
Introduction
This tutorial provides an advanced and reproducible workflow to generate ENVI-met 3DPLANT vegetation objects from Airborne Laser Scanning (ALS) data using voxel-based LAD profiles and species classification. It leverages expert functions with embedded documentation and explains the theory behind each computational step.
Theory and Formula Reference
Beer–Lambert Law for LAD
\[ LAD = -\frac{\ln(1 - p)}{k \cdot \Delta z} \]
Where:
- \(p\) is the normalized proportion of pulses (relative to max column density)
- \(k\) is the extinction coefficient (typically 0.3–0.5)
- \(\Delta z\) is the vertical slice height (e.g., 2 m)
This models beam extinction through foliage as a function of vertical occlusion.
LAI (Leaf Area Index)
\[ LAI = \sum_{i=1}^{n} LAD_i \cdot \Delta z \]
The vertical integral of LAD, optionally clipped at 95th percentile for stability.
Vertical Entropy (Evenness)
Given vertical slice fractions \(p\_i\) (LAD share per layer):
\[ H = -\sum_{i=1}^{n} p_i \log(p_i) \quad\text{(Shannon)} \]
Normalized:
\[ H^* = \frac{H}{\log(n)} \]
Assesses uniformity of vertical LAD distribution.
Kurtosis & Skewness
For LAD vector \(x\):
- Skewness:
\[ \gamma_1 = \frac{E[(x - \mu)^3]}{\sigma^3} \]
- Kurtosis:
\[ \gamma_2 = \frac{E[(x - \mu)^4]}{\sigma^4} - 3 \]
Canopy Height (CHM)
From DSM and DTM:
\[ CHM = DSM - DEM \]
Used to estimate maximum vegetation height per voxel column.
PCA Component Selection
\(\lambda\) (lambda) refers in PCA to the eigenvalue of a principal component, i.e. the amount of variance that component explains. λᵢ is then eigenvalue of the \(i\)-th principal component in PCA and represents how much variance that component explains. Larger λᵢ indicate more informative components.
Cumulative Variance
\[ \sum_{i=1}^k \frac{\lambda_i}{\sum_j \lambda_j} \geq \text{cutoff} \]
Kaiser Criterion
Keep \(\lambda\_i > 1\)
Elbow Method
Find \(i\) where:
\[ \Delta \lambda_i = \lambda_{i} - \lambda_{i+1}\text{ is minimal} \]
Function Library Documentation (Embedded in Code)
The function file new_utils.R
includes:
preprocess_voxels()
convert_to_LAD_beer()
suggest_n_pcs()
compute_traits_from_lad()
export_lad_to_envimet_p3d()
- Additional helpers:
pointsByZSlice()
,int_to_base36()
,recommend_dem_interpolation()
Each includes inline documentation with assumptions, references, and formulas where relevant.
Control Script Stages
1. Merge + Normalize
<- merge_las_tiles(...)
las_fn <- readLAS(las_fn)
las <- classify_ground(las, csf_params)
las <- rasterize_terrain(las, ...)
dem <- normalize_height(las, ...) las_norm
2. Generate Topography
Includes slope, aspect, terrain position index (TPI)
3. Voxelization + LAD
<- preprocess_voxels(las_norm, ...)
voxels <- convert_to_LAD_beer(voxels, ...) lad_df
4. Add Topo + Species
Extracts topographic values to LAD points via buffered zonal statistics
5. Metrics + Clustering
- Computes LAD entropy, kurtosis, skewness, vertical evenness
- Filters LAD matrix
- Runs PCA and selects
k
usingNbClust
- Clusters using
ClusterR::KMeans_arma
6. Profiles + Traits
- Aggregates LAD by cluster
- Recomputes LAD
- Converts to long format for
.pld
export
7. Export
- Traits via
compute_traits_from_lad()
- XML via
export_lad_to_envimet_p3d()
- Spatial GPKG point layer for linking
.pld
to grid
Sources
- Jolliffe (2002): Principal Component Analysis. Springer.
- Kaiser (1960): Educational and Psychological Measurement
- Cattell (1966): Multivariate Behavioral Research
- Zhang et al. (2016): CSF LiDAR ground filtering, Remote Sensing
- Chen et al. (2024): Roughness-based DEM interpolation, ISPRS
- ENVI-met 3DPLANT format documentation
Appendix: Additional Metrics
Gap Fraction
\[ GF = \frac{n_{\text{empty}}}{n_{\text{total}}} \]
Where empty = layers with LAD = 0.
Canopy Cover in Top Third
\[ CC_{top} = \frac{\sum_{i = 2n/3}^n \mathbb{1}_{LAD_i > 0}}{n/3} \]
Assesses vertical canopy compactness in the upper crown.
LAD Coefficient of Variation
\[ CV = \frac{\sigma_{LAD}}{\mu_{LAD}} \]
Useful for structure-based clustering.