Here you see a list of scripts that can be used for preprocessing all the metro
systems in the world from OpenStreetMap. subway_structure.py
produces
a list of disjunct systems that can be used for routing and for displaying
of metro maps.
- Choose transport data source:
- Download or update a planet file in o5m format (using
osmconvert
andosmupdate
). Runosmfilter
to extract a portion of data for all subways. Or - If you don't specify
--xml
or--source
option to theprocess_subways.py
script it tries to fetch data over Overpass API. Not suitable for whole planet or large countries.
- Download or update a planet file in o5m format (using
- Run
process_subways.py
with appropriate set of command line arguments to build metro structures and receive a validation log. - Run
validation_to_html.py
on that log to create readable HTML tables.
There is a process_subways.sh
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:
PLANET_PATH=$HOME/osm/planet
export OSMCTOOLS="$PLANET_PATH"
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
scripts/process_subways.sh
The bounding box can be found in the Google Spreadsheet.
This can be simplified by using the build_city.sh
script, which fetches the bbox from the web:
scripts/build_city.sh london.o5m London
Daily updates of validation results are available at this website.
To quickly add stop_area
relations for the entire city, use the make_stop_areas.py
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.
All scripts were written by Ilya Zverev for MAPS.ME. Published under Apache Licence 2.0.