Predictive Modeling · Markov-CA

Watershed Land Cover Simulation

A Markov chain–Cellular Automata model that learns 2010→2020 land-cover transitions, calibrates a spatial growth model, and forecasts where San Antonio will expand by 2030 — validated against observed data at a Figure of Merit of 0.85.

ArcGIS ProMarkov-CAPython NLCD / DEMModel validation
Predicted land cover 2030
Simulated 2030 land cover — urban growth concentrates near the existing core and major highways
01The problem

Urban growth reshapes watershed hydrology — more impervious surface means more runoff, more flood risk, and less groundwater recharge. Knowing where a city will expand lets planners act before the change happens.

This isn't a snapshot — it's a prediction, built from real transitions and validated against what actually happened.

Delineated watershed study area
Watershed of San Antonio River near Falls City (~5,453 km²)
02Method
  1. Delineate watershed from DEM (Fill → Flow Direction → Flow Accumulation → Snap → Watershed).
  2. Reclassify NLCD 2010 & 2020 into 5 classes.
  3. Compute the 2010→2020 Markov transition matrix in Python.
  4. Build CA spatial factors: distance to roads, highways, facilities, plus 3×3 neighborhood influence.
  5. Calibrate weights & threshold against observed 2020, then simulate 2030.
Calibration workflow
Iterative calibration loop — maximize Figure of Merit
03Transition probabilities

The Markov matrix quantifies how likely each land cover was to change between 2010 and 2020. Built land was highly stable (>99% stays built), while barren, agriculture, and forest fed the growth.

Neighborhood influence (β4 = 7) was the dominant driver — new growth clusters next to existing development.

From \ ToBuiltBarrenForestAgri
Built0.9940.0040.0010.001
Barren0.0410.9010.0450.012
Forest0.0220.0450.9320.001
Agriculture0.0320.0870.0000.880
Neighborhood influence layer
Neighborhood influence — the strongest driver
04Validation & forecast
0.85Figure of Merit (validation)
7.6% / 6.6%False negatives / false positives
~5,453 km²Watershed study area

Validation compared the model's predicted 2020 against observed 2020 — a strong match confirmed the model before it was used to forecast 2030. The 2030 simulation shows continued growth near the city core and along highways.

2020 validation
Predicted vs. observed 2020 (validation)
New growth forecast 2030
Where new growth is forecast by 2030
Built-up area trend 2010-2030
Built-up area share rising across 2010 → 2020 → 2030
05Code

The model is driven by two Python scripts, both on GitHub:

  • markov_transition_matrix.py — reads the 2010 and 2020 land-cover rasters and computes the Markov transition count and probability matrices with NumPy and rasterio.
  • calibration_figure_of_merit.py — compares the simulated 2020 built-up map against observed 2020 to compute the Figure of Merit, false positives, and false negatives (arcpy + NumPy).
06Limitations & next steps
  • Drivers limited to proximity and neighborhood (next: demographics, economics, policy, climate).
  • Two-date Markov assumes stationary transitions; 30 m resolution; single watershed.

Read the code

Python scripts (Markov matrix + calibration), README, and all maps on GitHub.