openstreetmap-tools/README.md
Edward Betts 3223d4b063 Add API docs page and update README/AGENTS
- Add /docs route serving web/templates/api.html: full Bootstrap 5
  documentation page covering all three API endpoints with parameter
  tables, example requests, and example responses
- Add 'API docs' link to the navbar on the main map page
- Update README.md: add web frontend section with feature list, dev
  server instructions, and API endpoint summary table
- Update AGENTS.md: add web/ layout, API endpoint table, Flask run
  instructions, and route_master example relation IDs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 19:03:37 +00:00

2.6 KiB

openstreetmap-tools

A collection of tools for working with OpenStreetMap public transport data.

Tools

osm-pt-geojson

Fetch an OSM public transport route relation and list its stops, or export the route as GeoJSON.

CLI usage

osm-pt-geojson list-stations <relation_id>
osm-pt-geojson route-between <relation_id> <from_station> <to_station> [-o FILE]
osm-pt-geojson full-route <relation_id> [-o FILE]

List stops on a route:

$ osm-pt-geojson list-stations 18892969
Route: Bus A1: Bristol Airport → Bristol Bus Station
Stops (21):
   1. Airport Terminal
   2. Airport Tavern
   ...
  21. Bus Station

Export a segment between two stops as GeoJSON:

$ osm-pt-geojson route-between 18892969 "Airport Terminal" "East Street" -o segment.geojson

Export the full route as GeoJSON:

$ osm-pt-geojson full-route 18892969 -o route.geojson

Omit stop points from GeoJSON output:

$ osm-pt-geojson full-route 18892969 --no-stops -o route.geojson

GeoJSON is written to stdout if -o is not given.

Output format

A GeoJSON FeatureCollection containing:

  • A LineString feature for the route geometry, with name, ref, from, to, and route properties from the OSM relation tags.
  • A Point feature for each stop, with a name property (omitted with --no-stops).

Installation

pip install osm-geojson

Or from source:

git clone https://git.4angle.com/edward/openstreetmap-tools
cd openstreetmap-tools
pip install -e .

Web frontend

An interactive map interface for browsing and downloading public transport routes as GeoJSON.

Features

  • Enter a relation ID or OSM URL to load a route onto the map.
  • Click stops in the sidebar list or on the map to set start and end points.
  • Preview the selected segment highlighted on the map.
  • Toggle stop points in/out of the GeoJSON before downloading.
  • Download a segment or the full route as a .geojson file.
  • Entering a route_master ID shows all directions on the map with links to each individual route.
  • Bookmarkable URLs: /<relation_id> loads that route directly.

Running the dev server

cd web
flask --app app.py run

Open http://127.0.0.1:5000.

API

The web frontend exposes a JSON API. Full documentation is available at /docs when the server is running.

Endpoint Description
GET /api/route/<id> Full route GeoJSON, stop list, and sibling routes
GET /api/segment/<id>?from=NAME&to=NAME Segment between two named stops
GET /api/route_master/<id> All member routes of a route_master

Licence

MIT License. Copyright (c) 2026 Edward Betts.