Paper codes for ML Geocoding Africa
# Graph-Based Geocoding for Africa — QGIS Plugin & Python Pipeline
Automated geocoding and structured address generation for African cities using
graph-based street network topology, trained on European reference cities and
progressively adapted to sub-Saharan Africa.
---
## Paper
This repository accompanies:
> **Graph-Based Geocoding and Address Generation for Africa: A QGIS-Integrated Approach
> Using Street Network Topology Trained on European Reference Cities**
> Mwimangire C.B., Zephania A.E., Mutabesha E., Rawiel P., Schroder D.
> *ISPRS International Journal of Geo-Information (MDPI), 2025 (under review)*
### Key results
| Metric | V1 baseline | V5 final | Improvement |
|--------|------------|----------|-------------|
| EU–Africa quality gap | 0.214 | 0.098 | −54.2% |
| Named-street coverage (Africa) | 38.7% | 71.3% | +84.2% |
| Address completeness score | 0.521 | 0.683 | +31.1% |
---
## What this code does
1. Downloads street networks and building footprints from OpenStreetMap, Google Open Buildings, and Microsoft Building Footprints
2. Constructs primal graph G_p=(V_p, E_p) and dual graph G_d=(V_d, E_d)
3. Runs the Intersection Continuity Negotiation (ICN) algorithm for stroke detection
4. Applies four supervised ML classifiers (GBDT connectivity, Random Forest road-type, GBRT quality scoring)
5. Generates quality-scored addresses compliant with UPU S42 and ISO 19160-1:2015
6. Exports to OpenStreetMap XML, GeoJSON/GeoPackage, CSV
---
## Repository structure
```
urban_address_manager.py Main CLI entry point
requirements.txt
core/
address_assigner.py Building-to-street assignment (GBDT)
batch_processor.py Multi-city batch pipeline
cache_manager.py OSM data caching
config.py Configuration and constants
database_manager.py SQLite address database
external_db_connector.py PostGIS / external DB export
format_converter.py GeoJSON, OSM XML, CSV export
logger.py Structured loggin …