Methodology¶
This page describes the analytical approach used by the Spatiotemporal LULC Analysis plugin.
Overview¶
The plugin performs post-classification change detection on categorical land use/land cover rasters. Rather than comparing raw spectral data, it compares classified maps to identify where and how land cover classes have changed.
graph LR
A[Classified Raster Year 1] --> C[Change Analysis]
B[Classified Raster Year 2] --> C
C --> D[Transition Matrix]
C --> E[Area Statistics]
C --> F[Spatial Outputs]
Analysis Framework¶
Spatial Units¶
The fundamental unit of analysis is the pixel. Each pixel in each input raster contains a categorical class value representing the dominant land cover type at that location.
Temporal Structure¶
The plugin analyzes change across intervals - pairs of consecutive years in your time series:
| Input Years | Intervals Analyzed |
|---|---|
| 2010, 2015, 2020 | 2010→2015, 2015→2020 |
| 2000, 2005, 2010, 2015 | 2000→2005, 2005→2010, 2010→2015 |
Additionally, a first-to-last comparison ignores intermediate years to show cumulative change.
Valid Pixel Set¶
For each interval, analysis considers only pixels that are valid in both years:
Where:
- \(\Omega_{t_0}\) = pixels valid at time 0 (not NoData, within AOI)
- \(\Omega_{t_1}\) = pixels valid at time 1 (not NoData, within AOI)
- \(\Omega\) = pixels analyzed for this interval
This ensures fair comparison by excluding pixels with missing data in either year.
Core Metrics¶
Area by Class¶
For each year, the plugin counts how many pixels belong to each class:
- Pixel count: Number of pixels with that class value
- Area: Pixel count × pixel area (in selected units)
- Percentage: Class area / total valid area × 100
Transition Accounting¶
For each interval, every pixel falls into one of two categories:
- Persistence: Same class in both years
- Transition: Different class between years
The transition matrix records all pixel movements:
| To Class A | To Class B | To Class C | |
|---|---|---|---|
| From Class A | Persistence | A→B | A→C |
| From Class B | B→A | Persistence | B→C |
| From Class C | C→A | C→B | Persistence |
Gain and Loss¶
From the transition matrix, we derive:
- Gain for class k: Sum of column k (excluding diagonal)
- Loss for class k: Sum of row k (excluding diagonal)
- Net change: Gain - Loss
- Gross change: Gain + Loss
Change Intensity¶
Intensity metrics normalize change by total area and time:
- Interval intensity: Fraction of pixels that changed
- Annual intensity: Interval intensity ÷ number of years
Spatial Analysis¶
Change Frequency¶
The change frequency raster counts how many times each pixel changed across the entire time series:
- Value 0: Pixel never changed (persistent)
- Value 1: Pixel changed once
- Value n-1: Pixel changed in every interval
This highlights areas of repeated change vs. stable areas.
Change Hotspots¶
Hotspot maps use Kernel Density Estimation (KDE) to create smooth surfaces showing change concentration:
- Changed pixels are converted to point locations
- A Gaussian kernel is applied to each point
- Kernels are summed to create a continuous density surface
- Higher values indicate more concentrated change
Parameters:
- Kernel: Gaussian
- Radius: 1000 map units
- Sample limit: 50,000 points (for performance)
Processing Approach¶
Block-Based Processing¶
To handle rasters of any size without exhausting memory, the plugin uses block-based processing:
- Rasters are divided into 256×256 pixel blocks
- Each block is processed independently
- Results are aggregated across all blocks
- Memory usage remains bounded regardless of raster size
+-------+-------+-------+-------+
| Block | Block | Block | Block |
| (0,0) | (1,0) | (2,0) | (3,0) |
+-------+-------+-------+-------+
| Block | Block | Block | Block |
| (0,1) | (1,1) | (2,1) | (3,1) |
+-------+-------+-------+-------+
Data Flow¶
graph TD
A[Input Rasters] --> B[Block Iterator]
B --> C[Read Block from All Rasters]
C --> D[Apply NoData Mask]
D --> E[Apply AOI Mask]
E --> F[Compute Block Statistics]
F --> G[Aggregate Results]
G --> H[Write Outputs]
Methodological Considerations¶
Classification Consistency¶
The plugin assumes that:
- Class definitions are consistent across all input years
- The same class ID represents the same land cover type
- Classification accuracy is acceptable for change detection
Garbage In, Garbage Out
Change detection quality depends entirely on input classification quality. Misclassification in either year appears as false change.
Scale Effects¶
Results depend on the spatial resolution of input data:
- Coarse resolution: May miss small-scale changes
- Fine resolution: Captures detailed patterns but increases processing time
- Mixed pixels: Pixel values represent dominant cover type
Temporal Considerations¶
- Interval length matters: Longer intervals capture more cumulative change
- Seasonality: Ensure comparable acquisition dates across years
- Intermediate changes: May be missed if not captured by input years
Comparison with Other Methods¶
| Approach | This Plugin | Alternative Methods |
|---|---|---|
| Input data | Classified rasters | Raw imagery, spectral data |
| Change detection | Post-classification comparison | Image differencing, trajectory analysis |
| Metrics | Area, transitions, intensity | Spectral change vectors, time series analysis |
| Spatial outputs | Frequency, hotspots | Change maps, trend surfaces |
References¶
The methods implemented in this plugin draw from established LULC change analysis literature:
- Post-classification comparison is a standard approach for categorical change detection
- Transition matrices follow conventional from-to accounting frameworks
- Change intensity metrics are normalized measures suitable for cross-study comparison
- Kernel density estimation provides spatial smoothing for pattern visualization
For detailed formulas, see the Formulas page.