A quality assurance tool for railway station mapping in OpenStreetMap

FOSS4G.be · Brussels


Julien Minet, Marc Ducobu, Nina Willems, Julien Fastré, Pacôme Beru, Pierre Marchand


Champs-Libres ~ atelier cartographique



OSM in railway stations ?

a railway station in osm

not simple...

SNCF Transilien & OSM

  • Since 2013
  • Indoor mapping of railway stations, hackathons, collaborations...
osm-sncf osm-sncf osm-sncf

SNCF Transilien & OSM

  • Used for pedestrian routing
osm-sncf osm-sncf

SNCF Transilien & OSM

  • Used for mapping (map background) and showing POI

SNCF Transilien & OSM

another osm sncf pic

Qarto: a Quality Assurance tool for mapping

  • Champs-Libres & atelier cartographique
  • PostGIS, Django, Typescript (cartostation)
  • Software bricks from the OSM ecosystem: Osmium, Osmosis, Osmose
  • Quality analysis, change detection, comparison, routing


qarto screenshot


  • ~ 50 quality analysis and change detection rules
  • Links to external OSM services (osmcha, osm history viewer, ...)
  • As in Osmose, you can edit in the app or with external editor (JOSM, iD)
  • Raised issues can be corrected or discarded as false positives
qarto qa


  • For change detection, a quick view of the modifications of the tags and geometries is available
qarto modif

QA in OSM: Osmose

  • One of the most known QA OSM tool
  • hosted at osmose.openstreetmap.fr
  • A rule for detecting potential static errors in OSM
  • Examples:
    • This house address does not match the adjacent street name
    • This osm object should be a polygon but it is a line
    • Intersection between waterway and road

Change detection in OSM

Osmose does not make change detection!

Some other tools exist

  • osmcha.org
  • Overpass API
  • MagOSM, osm-compare, ...

But there are some limitations...

  • Small modifications of geometries should not be reported.
  • When an object changes of tag, it can appeared as deleted with Overpass.
  • Osmcha is a great tool, but the changeset unit is problematic...

Change detection in OSM

We want a tool based on the OSM object (>< changeset) and we should be able to write some rules.

  • original approach based on Osmosis & Osmose
  • at every OSM update, some "triggers" fill database tables {nodes, ways, relations}_history and {nodes, ways, relations}_deleted
  • then, Osmose make some requests on the database

Qarto architecture

qarto archi

How Osmosis was adapted?

  • create database tables for history of osm objects + deleted objects + actions (changes)
  • create triggers that fills these tables at every update
  • hourly OSM update
  • See https://www.champs-libres.coop/blog/post/2022-09-22-osmose-change-detection/
image archi osmosis

How Osmose was adapted?

  • Used for dynamic potential errors
  • Use the `Analyser_Osmosis` class
  • Look for modification in history tables, for deletion in "deleted" tables
  • Store the results and send them to the Qarto application
  • Examples:
    • Un téléphone d'urgence a été déplacé de plus de deux mètres.
    • Le nom d'une gare ("railway=station") a été modifié.
    • Le niveau (level=*) d'un élément node a été modifié.
archi osmose

How Osmose was adapted?

Ex: "Un téléphone d'urgence a été déplacé de plus de deux mètres"

ex analyseur

How Osmose was adapted?

Ex: "Sens d'un escalator modifié."

ex analyseur

Change detection in other contexts?

  • Dynamic vs static warnings
  • For monitoring particular osm objects: hiking trails, shops, addresses, roads, ...

Change detection in other contexts?

Ex: knooppuntnet.nl


Thanks for your attention

Julien Minet - julien.minet@champs-libres.coop

Contact SNCF: Tri Tue Nguyen - tri-tue.nguyen@sncf.fr