Source Copenhagen transit data from Rejseplanen GTFS

- Replace OSM Overpass transit data with the Rejseplanen GTFS feed
  (routes keyed by (agency, short name); styles from modes.yaml)
- Draw one shape per (style, ref, direction), choosing the shape that
  serves the most in-area stops so lines pass the stops we show
- Collapse stops by names (verified unambiguous); prune stops whose
  serving refs have no drawn line within 300 m
- Patch Københavns Havn + Nordhavn into the area polygon so ferry
  routes and sub-harbour metro tunnels survive clipping; 100 m buffer
  closes relation boundary slivers
- Drop OSM download pipeline; keep tiled basemap
This commit is contained in:
2026-09-17 21:07:40 +02:00
parent 4aca62ca1a
commit b7d51ca29f
12 changed files with 522 additions and 751 deletions
+27 -33
View File
@@ -1,40 +1,34 @@
# Mapping of map modes to OSM route filters, GTFS route types, and style keys.
# `style` references a key in styling.yaml.
# Mapping of map styles to GTFS agency / route_type filters.
#
# OSM filter keys map directly to Overpass tag filters. A key suffixed with
# `_neq` emits a negated tag filter (["k"!="v"]); any other key emits an
# equality filter (["k"="v"]). The bbox is appended by download_osm.py.
# Used by prepare.py to classify GTFS routes (lines layer) and the routes
# serving each stop pole (stops/stations layers). Style keys are referenced
# by styling.yaml (palette, zorder, widths).
#
# S-tog are tagged route=light_rail in OSM (NOT route=train); they are scoped
# by network="Takst Sjælland". The separate `light_rail` mode catches other
# light rail (e.g. Hovedstadens Letbane, opened Aug 2026) via network!=Takst.
# GTFS route_type: 0=tram,1=subway,2=rail,3=bus,4=ferry.
# `agencies` matches GTFS agency_name from agency.txt.
# `route_types` optionally restricts GTFS route_type values, including the
# extended codes used in this feed (109 = S-tog suburban rail, 700/715 =
# Movia bus service types). Without `route_types`, all of the agency's
# routes match (e.g. Movia including harbour ferries 991/992).
#
# ORDER MATTERS: the styles listed here are also the priority order when a
# pole is served by several modes (e.g. S-tog and regional trains share
# platforms at hub stations — the higher style wins).
modes:
subway:
osm:
route: subway
gtfs_route_type: 1
style: metro
metro:
agencies: [Metroselskabet]
s_tog:
osm:
route: light_rail
network: "Takst Sjælland"
gtfs_route_type: 2
style: s_tog
agencies: [DSB S-tog]
route_types: [109, 2]
light_rail:
osm:
route: light_rail
network_neq: "Takst Sjælland"
gtfs_route_type: 2
style: light_rail
agencies: [Hovedstadens Letbane]
regional:
osm:
route: train
gtfs_route_type: 2
style: regional
agencies: [DSB, Lokaltog A/S, Skånetrafiken, Snälltåget AB, DSB Vores Tog]
route_types: [2]
ferry:
# harbour buses 991/992 (route_type 4); their shapes cross the harbour
# water and are intentionally NOT clipped to the land area polygon
agencies: [Movia]
route_types: [4]
bus:
osm:
route: bus
network: Movia
gtfs_route_type: 3
style: bus
agencies: [Movia]
route_types: [3, 700, 715]