Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Subway Preprocessor

Here you see a list of scripts that can be used for preprocessing all the metro systems in the world from OpenStreetMap. produces a list of disjunct systems that can be used for routing and for displaying of metro maps.

How To Validate

  • Choose transport data source:
    1. Download or update a planet file in o5m format (using osmconvert and osmupdate). Run osmfilter to extract a portion of data for all subways. Or
    2. If you don't specify --xml or --source option to the script it tries to fetch data over Overpass API. Not suitable for whole planet or large countries.
  • Run with appropriate set of command line arguments to build metro structures and receive a validation log.
  • Run on that log to create readable HTML tables.

Validation Script

There is a in the scripts directory. The author uses it for updating both the planet and a city he's working on. Here is an example of a script for updating the London Underground network:

export PLANET="$PLANET_PATH/london.o5m"
export HTML_DIR=tmp_html
export BBOX=-0.681152,51.286758,0.334015,51.740636
export CITY="London"
export DUMP=london.yaml


The bounding box can be found in the Google Spreadsheet.

This can be simplified by using the script, which fetches the bbox from the web:

scripts/ london.o5m London

Daily updates of validation results are available at this website.

Adding Stop Areas To OSM

To quickly add stop_area relations for the entire city, use the script from the stop_area directory. Give it a bounding box or a .json file download from Overpass API. It would produce an JOSM XML file that you should manually check in JOSM. After that just upload it.

Author and License

All scripts were written by Ilya Zverev for MAPS.ME. Published under Apache Licence 2.0.


Subway Preprocessor and Validator




No releases published


No packages published