Forecasting Urban Landcover Dynamics in Obuasi Municipality, Ghana:
# CA-Markov Obuasi Landcover Forecasting Project
This package contains separate Jupyter notebooks and reusable Python functions for the CA-Markov landcover forecasting study for Obuasi Municipality, Ghana.
## Project purpose
The workflow uses Hybrid GNN-ViT multimodal classified landcover maps from 2018-2025 to forecast landcover dynamics from 2026-2030 using CA-Markov modelling.
## Folder structure
```text
ca_markov_obuasi_project/
├── Data/
│ ├── input_rasters/
│ └── boundary/
├── notebooks/
│ ├── 00_main_ca_markov_pipeline.ipynb
│ ├── 01_project_setup.ipynb
│ ├── 02_raster_loading_preprocessing.ipynb
│ ├── 03_historical_landcover_dynamics.ipynb
│ ├── 04_transition_matrix_analysis.ipynb
│ ├── 05_model_validation_backcasting.ipynb
│ ├── 06_future_landcover_forecasting.ipynb
│ └── 07_spatial_change_gain_loss_analysis.ipynb
├── src/
│ └── ca_markov_utils.py
├── outputs/
│ ├── plots/
│ ├── tables/
│ ├── predicted_maps/
│ ├── validation/
│ └── change_maps/
└── docs/
```
## Required input files
Place the classified GeoTIFF maps in:
```text
Data/input_rasters/
```
Use these filenames:
```text
landcover_2018.tif
landcover_2019.tif
landcover_2020.tif
landcover_2021.tif
landcover_2022.tif
landcover_2023.tif
landcover_2024.tif
landcover_2025.tif
```
## Landcover class codes
| Code | Class |
|---:|---|
| 1 | Water |
| 2 | Trees |
| 3 | Crops |
| 4 | Built-up Areas |
| 5 | Bare Ground |
## How to run
Open:
```text
notebooks/00_main_ca_markov_pipeline.ipynb
```
Run all cells. The main notebook calls the other notebooks in sequence.
## Required Python packages
Install the following packages if needed:
```bash
pip install numpy pandas matplotlib rasterio geopandas openpyxl
```
If `geopandas` is not needed for your current workflow, it can be omitted. `rasterio` is required for reading and writing GeoTIFF files.
## Main outputs
The workflow produces:
- Historical landcover statistics table
- Historical trend graph
- Average tr …