Files
jetlag-maps/copenhagen/config/styling.yaml
T
marvin eb3cf7b7d9 Cluster same-name stops within 50m into single markers
Same-name stops within 50m (opposite sides of a road, different
platforms/entrances) are now merged into one marker at the cluster
centroid. Uses scipy hierarchical clustering (single linkage, distance
criterion).

Stop counts after clustering:
  bus:  1610 -> 892 markers
  metro:   91 ->  46 markers
  s_tog:   76 ->  34 markers
  regional: 27 ->  10 markers

Threshold configurable via styling.yaml stations.stop_cluster_m.
2026-09-13 23:15:29 +02:00

93 lines
2.1 KiB
YAML

# Styling for the Copenhagen transit map. Referenced by render.py and prepare.py.
# Colours keyed by `style` (from modes.yaml) then route ref.
# zorder is draw order bottom->top (higher drawn later / on top).
zorder:
bus: 1
s_tog: 2
light_rail: 3
regional: 4
metro: 5
line_width: # body width in points (outline = body + outline_width)
bus: 0.8
s_tog: 2.0
light_rail: 2.0
regional: 1.8
metro: 2.6
outline_width: 1.2 # added to line_width for the dark casing
outline_color: "#2b2b2b"
alpha:
bus: 0.45
s_tog: 0.95
light_rail: 0.95
regional: 0.9
metro: 1.0
# Fallback palette when no GTFS route_color and no OSM colour tag are present.
# Metro / S-tog values mirror the OSM colour tags (verified). Regional trains
# have no OSM colour, so the palette supplies one.
palette:
metro:
M1: "#008d41"
M2: "#ffc600"
M3: "#ff0a0a"
M4: "#009cd3"
s_tog:
A: "#00a4eb"
B: "#50ae30"
Bx: "#adce6d"
C: "#f68b1f"
E: "#7670b3"
F: "#fcc019"
H: "#e63511"
regional:
default: "#7a1b3e"
light_rail:
default: "#e89b3a"
bus:
A: "#d6264a"
C: "#16a085"
S: "#2a6fb5"
default: "#c8a80e"
bus_filters:
# ref-based bus categorisation (regex applied to route ref)
categories:
A: "^\\d+A$"
C: "^\\d+C$"
S: "^\\d+S$"
regular: "^\\d+$"
mask:
fade_distance_m: 2500 # shapeburst fade width outside the area
max_alpha: 0.85
color: white
basemap:
provider: Esri.WorldGrayCanvas
zoom: 14
stations:
show: true # draw station markers (symbols without text)
styles: [metro, s_tog, regional, bus]
stop_cluster_m: 50 # merge same-name stops within this distance (opposite sides of road)
marker:
shape: circle # circle | square
fill: white
edge: "#2b2b2b"
size: # diameter in points
metro: 3.5
s_tog: 3.0
regional: 2.5
bus: 1.5
linewidth: 0.8
labels:
show: false # off by default; enable via --labels
styles: [metro, s_tog] # which station types to label
min_fontsize: 5
max_fontsize: 9