Methods for running CLUMPY-style LULC allocation. The algorithm works in three stages per period:
Prediction – raw transition potentials are predicted and stored in
trans_pot_tviapredict_trans_pot().Adjustment – the adjusted view
adjusted_trans_pot_v()rescales potentials to match target rates and closes rows to [0, 1].Allocation – the whole pivot-selection + patch-growth routine runs in C++ (
allocate_clumpy_cpp()). The method is chosen automatically from the patch parameters:uSAM (Unbiased Simple Allocation Method, Mazy sec. 3.4.1) when every transition is mono-pixel (
area_mean == 1andarea_var == 0): one MuST (Multinomial Sampling Test, Mazy App. 3.B; the same test the referenceclumpycalls "GART") pass per anterior class, each selected pivot allocated as a single cell. Quantity of change is enforced in expectation.uPAM (Unbiased Patch Allocation Method, Mazy sec. 3.4.2, Fig. 3.2) otherwise: iterative MuST with a per-transition pixel quota and sampling without replacement. Affordable here because evoland's potentials come from a fixed fitted model, so the marginal density does not need to be re-estimated between patches.
(Multi-pixel patches require uPAM; "uSAM with patches larger than one pixel" is not a valid method, hence the automatic selection rather than a user switch.)
The per-cell pivot probability is divided by the mean patch area (the 1/E(sigma) factor, Mazy Fig. 3.2) so the allocated quantity of change matches the target transition rate; without it allocation over-shoots by roughly the mean patch size.
Usage
alloc_clumpy_one_period(
self,
id_period_ant,
id_period_post,
anterior_rast,
select_score,
select_maximize,
area_dist = "lognormal",
avoid_aggregation = TRUE,
batch_size = 0L
)
alloc_clumpy(
self,
id_periods,
select_score,
select_maximize,
area_dist = "lognormal",
avoid_aggregation = TRUE,
batch_size = 0L,
seed = NULL
)Arguments
- self
An evoland_db instance.
- id_period_ant
Integer anterior period ID.
- id_period_post
Integer posterior period ID.
- anterior_rast
terra::SpatRaster of the anterior LULC state.
- select_score
Character; mlr3 measure ID for model selection.
- select_maximize
Logical; whether to maximise
select_score.- area_dist
Character; patch-area distribution,
"lognormal"(default) or"normal".- avoid_aggregation
Logical; uPAM merge avoidance (default
TRUE).- batch_size
Integer; uPAM pivots attempted per MuST re-draw.
0(default) auto-scales with the source pool; seealloc_clumpy_one_period().- id_periods
Integer vector of posterior period IDs to simulate.
- seed
Optional integer random seed for reproducibility.
Value
An lulc_data_t with the simulated posterior LULC.
Functions
alloc_clumpy_one_period(): Allocate LULC changes for a single period using the CLUMPY algorithm.alloc_clumpy(): Run CLUMPY-style allocation over multiple periods.
References
Mazy, 2022 (https://theses.hal.science/tel-04382012v1), Ch. 3.