Skip to content

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

Odonyms: what nations write on their street signs

A street name is a small public decision, repeated tens of thousands of times per country: who deserves to be remembered, which places matter, which ideas a city wants to say out loud. Taken together, a country's street names are a self-portrait nobody sat for. This project builds that portrait for every country, from the same open data, with the same taxonomy, so they can be compared.

Questions the dataset is built to answer:

  • What share of a country's streets honour a person, a place, an idea, a date, a saint, a tree, or nothing at all (Rue 12)?
  • Among the persons: rulers or poets? Soldiers or scientists? Nationals or foreigners? Men or women?
  • How far back does a nation's memory reach (median death year of the people on the signs), and how fast does it renew after independence or a regime change?
  • How concentrated is the naming vocabulary (how many distinct names cover half of the streets)? A handful of names everywhere is the signature of centralised naming; a long tail is the signature of local naming.
  • Which foreign countries and cities appear on a nation's signs, and which never do?

Data

Source: OpenStreetMap, one Geofabrik country extract at a time. Every highway=* way with a name tag becomes a row; pieces of the same street are collapsed into one street per (normalised name, nearest locality). Wikidata resolves the name:etymology:wikidata tags that OSM mappers have already added (dense in Europe, thin elsewhere), and a per-country lexicon of rules classifies the rest. What neither resolves is unknown and stays visible in every figure.

Coverage is a first-class number: a country where 60 % of streets are unresolved gets a 60 % badge, never a confident chart.

data/streets/<iso2>/ways.parquet        one row per named OSM way (raw)
data/streets/<iso2>/streets.parquet     collapsed streets with core name, locality, lat/lon
data/streets/<iso2>/classified.parquet  + category, person_role, person_origin, source
data/stats/<iso2>.json                  country statistics with their basis
reports/<iso2>.md                       human-readable first pass

Columns follow taxonomy/README.md. Country Parquets stay under 100 MB; the world-scale dataset will be published on Hugging Face, this repo keeps code, taxonomy, stats and samples.

Pipeline

python pipeline/01_extract.py MA data/raw/morocco-latest.osm.pbf   # PBF -> ways + places
python pipeline/02_streets.py MA                                    # ways -> streets
python pipeline/03b_wikidata.py MA                                  # resolve OSM etymology tags
python pipeline/03_classify.py MA                                   # rules + Wikidata -> categories
python pipeline/04_stats.py MA                                      # stats json + report + chart

Requirements: Python 3.12+, pip install -r requirements.txt (pyosmium, pandas, pyarrow, duckdb, matplotlib).

First country: Morocco

See reports/ma.md. Headlines from the first pass (OSM extract of 2026-09-16, 49,185 named road pieces, 21,074 streets):

  • 22.5 % of urban streets have no name, only a number (Rue 12, Zanqa 5).
  • Of the classified named streets, 53 % honour a person, 29 % a place, 6 % nature, 2 % a date or event.
  • Among persons with an identified role: religious figures 29 % (the Sidi honorific counts here), royalty 26 %, resistance and military 17 %, scholars 12 %, politicians 12 %, writers and poets 3 %.
  • 77 % of identified persons are Moroccan, 23 % foreign (Arab, Andalusi and European figures).
  • Only 1.4 % of streets carry an OSM etymology tag, and some of those tags are wrong (Avenue Mohammed V tagged as Hassan II in 58 pieces). Morocco is the thin-coverage case the pipeline must handle everywhere outside Europe.

Roadmap

  1. Morocco: LLM-assisted classification of the 4,600 unknown names, then Wikidata matching of person names to get birth and death years, gender and occupation at scale.
  2. Second country with dense OSM etymology tags (Belgium) to calibrate the rules against ground truth.
  3. Transliteration and per-script lexicons: Arabic, Cyrillic, Chinese, Japanese (where most streets have no name at all).
  4. World run on the Overture/OSM planet, published on Hugging Face.
  5. Public site: type your country, read its portrait, compare with any other.

Prior work this builds on

EqualStreetNames (gender, 70 cities), Mapping Diversity (30 European cities), Open Etymology Map, and the paper Linking Streets in OpenStreetMap to Persons in Wikidata. All stop at gender or at Europe; none compares countries on the full taxonomy.

Licence

Code: MIT. Data: derived from OpenStreetMap, © OpenStreetMap contributors, ODbL. Wikidata: CC0.

Author: Badr Abardazzou.

About

What nations write on their street signs: a comparable, worldwide dataset of street names classified by who and what they honour (OSM + Wikidata). First country: Morocco.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages