A quality assurance tool for railway station mapping in OpenStreetMap
FOSS4G.be · Brussels
17/11/2022
Julien Minet, Marc Ducobu, Nina Willems, Julien Fastré, Pacôme Beru, Pierre Marchand
@juminet@en.osm.town
Champs-Libres ~ atelier cartographique
OSM ?
OSM in railway stations ?
not simple...
SNCF Transilien & OSM
- Since 2013
- Indoor mapping of railway stations, hackathons, collaborations...
SNCF Transilien & OSM
- Used for pedestrian routing
SNCF Transilien & OSM
- Used for mapping (map background) and showing POI
SNCF Transilien & OSM
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
- ~ 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
- For change detection, a quick view of the modifications of the tags and geometries is available
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
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/
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é.
How Osmose was adapted?
Ex: "Un téléphone d'urgence a été déplacé de plus de deux mètres"
How Osmose was adapted?
Ex: "Sens d'un escalator modifié."
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