Chapter 8: The SLEUTH Urban Growth Model
8.1 What is SLEUTH?
SLEUTH is the most widely used CA-based urban growth model, developed by Keith Clarke at UC Santa Barbara. The name is an acronym for its input data layers:
- • Slope
- • Land use
- • Exclusion (protected areas, water bodies)
- • Urban extent (historical urban maps)
- • Transportation (road network)
- • Hillshade (for visualisation)
SLEUTH simulates urban growth through five distinct growth rules, each controlled by a coefficient in the range \([0, 100]\). The model is calibrated by brute-force Monte Carlo search over the five-dimensional parameter space.
8.2 The Five Growth Rules
Rule 1: Spontaneous Growth
Random urbanisation of any non-excluded, non-urban cell. Models new development seeds unrelated to existing urban areas. Controlled by the dispersion coefficient\(C_d\):
$$P_{\text{spont}}(i,j) = \frac{C_d}{100} \cdot \left(1 - \frac{\text{slope}(i,j)}{\text{slope}_{\max}}\right)^{C_s}$$
where \(C_s\) is the slope resistance coefficient.
Rule 2: New Spreading Centre Growth
When two or more spontaneous growth cells occur near each other, they form a new urban cluster (“spreading centre”). Controlled by the breed coefficient\(C_b\):
$$\text{If } |\{k \in \mathcal{N}_3(i,j) : s_k^{\text{new}} = 1\}| \geq 2 \text{ and } \text{rand} < C_b/100 \text{, spawn new centre}$$
Rule 3: Edge Growth (Organic Growth)
Existing urban edges expand outward. For each urban cell at the boundary, neighbouring non-urban cells may become developed. Controlled by the spread coefficient\(C_p\):
$$P_{\text{edge}}(i,j) = \frac{C_p}{100} \cdot \frac{n_{\text{urban}}(i,j)}{|\mathcal{N}|} \cdot \left(1 - \frac{\text{slope}(i,j)}{\text{slope}_{\max}}\right)^{C_s}$$
Rule 4: Road-Influenced Growth
New development is attracted to transportation corridors. When a new urban cell forms, it may “walk” toward the nearest road and develop along it. Controlled by road gravity \(C_g\):
$$d_{\text{walk}} = C_g / 100 \cdot d_{\max}, \qquad \text{develop along road within } d_{\text{walk}} \text{ cells}$$
Rule 5: Slope Resistance
All rules are modulated by slope. Steep terrain resists urbanisation:
$$R_{\text{slope}}(i,j) = \left(1 - \frac{\text{slope}(i,j)}{\text{slope}_{\max}}\right)^{C_s / 100 \cdot \text{MAX\_SLOPE\_RESISTANCE}}$$
8.3 Calibration: Brute-Force Monte Carlo
SLEUTH is calibrated by searching over the five-dimensional parameter space\((C_d, C_b, C_p, C_g, C_s) \in [0, 100]^5\). For each parameter combination, the model is run multiple times (Monte Carlo replicates) and the output is compared to historical data.
Figure of Merit: Jaccard Index
The primary calibration metric is the Figure of Merit (FoM), based on the Jaccard index between the simulated urban extent\(A\) and the observed extent\(B\):
$$\text{FoM} = J(A, B) = \frac{|A \cap B|}{|A \cup B|} = \frac{|A \cap B|}{|A| + |B| - |A \cap B|}$$
Properties:
- • \(\text{FoM} = 1\): perfect agreement
- • \(\text{FoM} = 0\): no overlap
- • Penalises both omission errors (observed but not simulated) and commission errors (simulated but not observed)
Three-Phase Calibration
SLEUTH uses a hierarchical calibration strategy:
- Coarse: step = 25, range [0, 100] (5 values per parameter = 3125 combinations)
- Fine: step = 5, range around best coarse values
- Final: step = 1, range around best fine values
8.4 Self-Modification Rules
A distinctive feature of SLEUTH is that its coefficients evolve during the simulation via self-modification rules. If growth is too fast or too slow compared to a target, the coefficients are adjusted:
$$\text{If growth rate} > \text{critical}_{\text{high}}: \quad C_d \leftarrow C_d \cdot \text{boom}, \quad C_b \leftarrow C_b \cdot \text{boom}$$
$$\text{If growth rate} < \text{critical}_{\text{low}}: \quad C_d \leftarrow C_d \cdot \text{bust}, \quad C_b \leftarrow C_b \cdot \text{bust}$$
where \(\text{boom} > 1\) and\(\text{bust} < 1\) are multipliers. This creates boom-bust cycles that mimic real urban growth dynamics.
8.5 Python: SLEUTH Growth Rules & Calibration
Implementation of the five SLEUTH growth rules with a simplified calibration loop.
SLEUTH: Growth Rules & Calibration Loop
PythonClick Run to execute the Python code
Code will be executed with Python 3 on the server
8.6 Summary & Key Takeaways
- • SLEUTH uses five growth rules: spontaneous, new spreading, edge, road-influenced, slope resistance
- • Five coefficients \((C_d, C_b, C_p, C_g, C_s) \in [0, 100]\) control growth behaviour
- • Calibration via brute-force Monte Carlo with three-phase refinement
- • Figure of Merit = Jaccard index: \(\text{FoM} = |A \cap B| / |A \cup B|\)
- • Self-modification rules create realistic boom-bust growth cycles
- • Widely applied globally but computationally expensive to calibrate