├── .editorconfig ├── .gitignore ├── COPYING ├── Dockerfile ├── Dockerfile.db ├── Dockerfile.import ├── Makefile ├── README.md ├── SETUP.md ├── common.mss ├── common_disused.mss ├── doc └── from_mapcss_to_cartocss.md ├── docker-compose.yml ├── docker-startup.sh ├── electrification.mml ├── electrification.mss ├── electrification_signals.mss ├── fonts.mss ├── gauge.mml ├── gauge.mss ├── maxspeed.mml ├── maxspeed.mss ├── maxspeed_signals.mss ├── orm-simple.style ├── setup ├── openstreetmap-carto.lua ├── openstreetmap-carto.style └── tune-postgis.sh ├── signal_boxes.mss ├── signals.mml ├── signals.mss ├── signals_deactivated.mss ├── sql ├── functions.sql ├── get_station_importance.sql ├── osm_carto_views.sql └── update_station_importance.sql ├── standard.mml ├── standard.mss ├── standard_labels.mss ├── standard_symbols.mss ├── symbols ├── at │ ├── ankuendigungstafel-10-sign.svg │ ├── ankuendigungstafel-100-sign.svg │ ├── ankuendigungstafel-110-sign.svg │ ├── ankuendigungstafel-120-sign.svg │ ├── ankuendigungstafel-130-sign.svg │ ├── ankuendigungstafel-140-sign.svg │ ├── ankuendigungstafel-20-sign.svg │ ├── ankuendigungstafel-30-sign.svg │ ├── ankuendigungstafel-40-sign.svg │ ├── ankuendigungstafel-50-sign.svg │ ├── ankuendigungstafel-60-sign.svg │ ├── ankuendigungstafel-70-sign.svg │ ├── ankuendigungstafel-80-sign.svg │ ├── ankuendigungstafel-90-sign.svg │ ├── geschwindigkeitsanzeiger-10-sign.svg │ ├── geschwindigkeitsanzeiger-100-light.svg │ ├── geschwindigkeitsanzeiger-100-sign.svg │ ├── geschwindigkeitsanzeiger-110-sign.svg │ ├── geschwindigkeitsanzeiger-120-light.svg │ ├── geschwindigkeitsanzeiger-120-sign.svg │ ├── geschwindigkeitsanzeiger-160-sign.svg │ ├── geschwindigkeitsanzeiger-20-sign.svg │ ├── geschwindigkeitsanzeiger-30-light.svg │ ├── geschwindigkeitsanzeiger-30-sign.svg │ ├── geschwindigkeitsanzeiger-40-light.svg │ ├── geschwindigkeitsanzeiger-40-sign.svg │ ├── geschwindigkeitsanzeiger-50-light.svg │ ├── geschwindigkeitsanzeiger-50-sign.svg │ ├── geschwindigkeitsanzeiger-60-light.svg │ ├── geschwindigkeitsanzeiger-60-sign.svg │ ├── geschwindigkeitsanzeiger-70-light.svg │ ├── geschwindigkeitsanzeiger-70-sign.svg │ ├── geschwindigkeitsanzeiger-80-light.svg │ ├── geschwindigkeitsanzeiger-80-sign.svg │ ├── geschwindigkeitsanzeiger-90-light.svg │ ├── geschwindigkeitsanzeiger-90-sign.svg │ ├── geschwindigkeitstafel-10-sign.svg │ ├── geschwindigkeitstafel-100-sign.svg │ ├── geschwindigkeitstafel-110-sign.svg │ ├── geschwindigkeitstafel-120-sign.svg │ ├── geschwindigkeitstafel-130-sign.svg │ ├── geschwindigkeitstafel-140-sign.svg │ ├── geschwindigkeitstafel-15-sign.svg │ ├── geschwindigkeitstafel-150-sign.svg │ ├── geschwindigkeitstafel-160-sign.svg │ ├── geschwindigkeitstafel-20-sign.svg │ ├── geschwindigkeitstafel-25-sign.svg │ ├── geschwindigkeitstafel-30-sign.svg │ ├── geschwindigkeitstafel-35-sign.svg │ ├── geschwindigkeitstafel-40-sign.svg │ ├── geschwindigkeitstafel-45-sign.svg │ ├── geschwindigkeitstafel-50-sign.svg │ ├── geschwindigkeitstafel-55-sign.svg │ ├── geschwindigkeitstafel-60-sign.svg │ ├── geschwindigkeitstafel-65-sign.svg │ ├── geschwindigkeitstafel-70-sign.svg │ ├── geschwindigkeitstafel-75-sign.svg │ ├── geschwindigkeitstafel-80-sign.svg │ ├── geschwindigkeitstafel-85-sign.svg │ ├── geschwindigkeitstafel-90-sign.svg │ ├── geschwindigkeitstafel-95-sign.svg │ ├── geschwindigkeitsvoranzeiger-10-sign.svg │ ├── geschwindigkeitsvoranzeiger-100-light.svg │ ├── geschwindigkeitsvoranzeiger-100-sign.svg │ ├── geschwindigkeitsvoranzeiger-120-light.svg │ ├── geschwindigkeitsvoranzeiger-20-sign.svg │ ├── geschwindigkeitsvoranzeiger-30-light.svg │ ├── geschwindigkeitsvoranzeiger-30-sign.svg │ ├── geschwindigkeitsvoranzeiger-40-light.svg │ ├── geschwindigkeitsvoranzeiger-40-sign.svg │ ├── geschwindigkeitsvoranzeiger-50-light.svg │ ├── geschwindigkeitsvoranzeiger-50-sign.svg │ ├── geschwindigkeitsvoranzeiger-60-light.svg │ ├── geschwindigkeitsvoranzeiger-60-sign.svg │ ├── geschwindigkeitsvoranzeiger-70-light.svg │ ├── geschwindigkeitsvoranzeiger-70-sign.svg │ ├── geschwindigkeitsvoranzeiger-80-light.svg │ ├── geschwindigkeitsvoranzeiger-80-sign.svg │ ├── geschwindigkeitsvoranzeiger-90-light.svg │ ├── geschwindigkeitsvoranzeiger-90-sign.svg │ ├── hauptsignal-frei-mit-40.svg │ ├── hauptsignal-frei-mit-60.svg │ ├── hauptsignal-frei.svg │ ├── hauptsignal-halt.svg │ ├── verschubverbot-aufgehoben.svg │ ├── vorsicht-semaphore.svg │ ├── vorsignal-hauptsignal-frei-mit-40.svg │ ├── vorsignal-hauptsignal-frei-mit-60.svg │ ├── vorsignal-hauptsignal-frei.svg │ ├── vorsignal-vorsicht.svg │ ├── vorsignal_frei_formsignal.svg │ ├── weiterfahrt-erlaubt.svg │ └── weiterfahrt-verboten.svg ├── border.svg ├── crossing.svg ├── de │ ├── avg │ │ ├── bue201.svg │ │ ├── bue201v.svg │ │ ├── ra14.svg │ │ └── wv1.svg │ ├── blockkennzeichen.svg │ ├── bostrab │ │ ├── a1.svg │ │ ├── f0.svg │ │ ├── f1.svg │ │ ├── f2.svg │ │ ├── f3.svg │ │ ├── f5.svg │ │ ├── g1a-10.svg │ │ ├── g1a-15.svg │ │ ├── g1a-20.svg │ │ ├── g1a-25.svg │ │ ├── g1a-30.svg │ │ ├── g1a-35.svg │ │ ├── g1a-40.svg │ │ ├── g1a-50.svg │ │ ├── g1a-60.svg │ │ ├── g2a-10.svg │ │ ├── g2a-15.svg │ │ ├── g2a-20.svg │ │ ├── g2a-25.svg │ │ ├── g2a-30.svg │ │ ├── g2a-35.svg │ │ ├── g2a-40.svg │ │ ├── g2a-5.svg │ │ ├── g2a-50.svg │ │ ├── g2a-60.svg │ │ ├── g3.svg │ │ ├── g4-20.svg │ │ ├── g4-25.svg │ │ ├── g4-30.svg │ │ ├── g4-35.svg │ │ ├── g4-40.svg │ │ ├── g4-50.svg │ │ ├── g4-60.svg │ │ ├── g4-70.svg │ │ ├── sh1.svg │ │ ├── so1.svg │ │ ├── so2.svg │ │ ├── so5.svg │ │ ├── so6.svg │ │ ├── st7.svg │ │ ├── st9.svg │ │ └── w5.svg │ ├── bue0-ds-repeated.svg │ ├── bue0-ds-shortened.svg │ ├── bue0-ds.svg │ ├── bue0-dv-repeated.svg │ ├── bue0-dv-shortened.svg │ ├── bue0-dv.svg │ ├── bue1-ds-repeated.svg │ ├── bue1-ds-shortened.svg │ ├── bue1-ds.svg │ ├── bue1-dv-repeated.svg │ ├── bue1-dv-shortened.svg │ ├── bue1-dv.svg │ ├── bue2-ds-reduced-distance.svg │ ├── bue2-ds.svg │ ├── bue3.svg │ ├── bue4-ds-only-transit.svg │ ├── bue4-ds.svg │ ├── bue5-only-transit.svg │ ├── bue5.svg │ ├── correlation-arrow-left.svg │ ├── correlation-arrow-right.svg │ ├── el1.svg │ ├── el1v.svg │ ├── el2.svg │ ├── el3.svg │ ├── el4.svg │ ├── el5.svg │ ├── el6-left.svg │ ├── el6-right.svg │ ├── el6-through.svg │ ├── el6.svg │ ├── fahrtanzeiger.svg │ ├── hha │ │ ├── h0.svg │ │ ├── h1.svg │ │ ├── l1-30-sign.svg │ │ ├── l1-40-sign.svg │ │ ├── l1-50-sign.svg │ │ ├── l1-60-sign.svg │ │ ├── l1-70-sign.svg │ │ ├── l4.svg │ │ ├── sh3.svg │ │ └── v1.svg │ ├── hl0.svg │ ├── hl1-distant.svg │ ├── hl1.svg │ ├── hl10.svg │ ├── hl11.svg │ ├── hl12a.svg │ ├── hl12b.svg │ ├── hl2.svg │ ├── hl3a.svg │ ├── hl3b.svg │ ├── hp0-light.svg │ ├── hp0-semaphore.svg │ ├── hp1-light.svg │ ├── hp1-semaphore.svg │ ├── hp2-light.svg │ ├── hp2-semaphore.svg │ ├── ks-combined-shortened.svg │ ├── ks-combined.svg │ ├── ks-distant-repeated.svg │ ├── ks-distant-shortened.svg │ ├── ks-distant.svg │ ├── ks-main.svg │ ├── lf4-ds301-0-sign-down.svg │ ├── lf4-ds301-10-sign-down.svg │ ├── lf4-ds301-15-sign-down.svg │ ├── lf4-ds301-20-sign-down.svg │ ├── lf4-ds301-30-sign-down.svg │ ├── lf4-ds301-40-sign-down.svg │ ├── lf4-ds301-50-sign-down.svg │ ├── lf4-ds301-60-sign-down.svg │ ├── lf4-ds301-70-sign-down.svg │ ├── lf4-ds301-80-sign-down.svg │ ├── lf5-ds301-sign.svg │ ├── lf5-dv301-sign.svg │ ├── lf6-10-sign-down.svg │ ├── lf6-100-sign-down.svg │ ├── lf6-110-sign-down.svg │ ├── lf6-120-sign-down.svg │ ├── lf6-130-sign-down.svg │ ├── lf6-140-sign-down.svg │ ├── lf6-15-sign-down.svg │ ├── lf6-150-sign-down.svg │ ├── lf6-160-sign-down.svg │ ├── lf6-170-sign-down.svg │ ├── lf6-180-sign-down.svg │ ├── lf6-190-sign-down.svg │ ├── lf6-20-sign-down.svg │ ├── lf6-200-sign-down.svg │ ├── lf6-30-sign-down.svg │ ├── lf6-40-sign-down.svg │ ├── lf6-5-sign-down.svg │ ├── lf6-50-sign-down.svg │ ├── lf6-60-sign-down.svg │ ├── lf6-70-sign-down.svg │ ├── lf6-80-sign-down.svg │ ├── lf6-90-sign-down.svg │ ├── lf6-empty-sign-down.svg │ ├── lf7-10-sign.svg │ ├── lf7-100-sign.svg │ ├── lf7-110-sign.svg │ ├── lf7-120-sign.svg │ ├── lf7-130-sign.svg │ ├── lf7-140-sign.svg │ ├── lf7-15-sign.svg │ ├── lf7-150-sign.svg │ ├── lf7-160-sign.svg │ ├── lf7-170-sign.svg │ ├── lf7-180-sign.svg │ ├── lf7-190-sign.svg │ ├── lf7-20-sign.svg │ ├── lf7-200-sign.svg │ ├── lf7-30-sign.svg │ ├── lf7-40-sign.svg │ ├── lf7-5-sign.svg │ ├── lf7-50-sign.svg │ ├── lf7-60-sign.svg │ ├── lf7-70-sign.svg │ ├── lf7-80-sign.svg │ ├── lf7-90-sign.svg │ ├── lf7-empty-sign.svg │ ├── lzb-section-start.svg │ ├── ne1.svg │ ├── ne12.svg │ ├── ne13a.svg │ ├── ne2-dv301-reduced-distance.svg │ ├── ne2-reduced-distance.svg │ ├── ne2.svg │ ├── ne4-dwarf.svg │ ├── ne4-normal.svg │ ├── ne5-light.svg │ ├── ne5-sign.svg │ ├── ne6.svg │ ├── ne7-yellow-up.svg │ ├── pf1-dv-only-transit.svg │ ├── pf1-dv.svg │ ├── ra10.svg │ ├── ra11-sh1.svg │ ├── ra11-sign.svg │ ├── ra11b.svg │ ├── sh0-light-dwarf.svg │ ├── sh0-semaphore-dwarf.svg │ ├── sh1-light-normal.svg │ ├── sh1-semaphore-normal.svg │ ├── sh2.svg │ ├── so106.svg │ ├── subway.svg │ ├── sv-hp0.svg │ ├── sv-sv0.svg │ ├── vr-light.svg │ ├── vr0-light-repeated.svg │ ├── vr0-light.svg │ ├── vr0-semaphore.svg │ ├── vr1-light-repeated.svg │ ├── vr1-light.svg │ ├── vr1-semaphore.svg │ ├── vr2-light-repeated.svg │ ├── vr2-light.svg │ ├── vr2-semaphore.svg │ ├── wn7-semaphore-normal.svg │ ├── zlb-haltmelder-light.svg │ ├── zp8.svg │ ├── zp9-db.svg │ ├── zs1.svg │ ├── zs10-light.svg │ ├── zs10-sign.svg │ ├── zs103.svg │ ├── zs13-sign.svg │ ├── zs2-unknown.svg │ ├── zs2v-unknown.svg │ ├── zs3-10-sign-up.svg │ ├── zs3-100-light.svg │ ├── zs3-100-sign-up.svg │ ├── zs3-110-light.svg │ ├── zs3-110-sign-up.svg │ ├── zs3-120-light.svg │ ├── zs3-120-sign-up.svg │ ├── zs3-130-sign-up.svg │ ├── zs3-140-sign-up.svg │ ├── zs3-150-sign-up.svg │ ├── zs3-160-sign-up.svg │ ├── zs3-20-light.svg │ ├── zs3-20-sign-up.svg │ ├── zs3-30-light.svg │ ├── zs3-30-sign-up.svg │ ├── zs3-40-light.svg │ ├── zs3-40-sign-up.svg │ ├── zs3-50-light.svg │ ├── zs3-50-sign-up.svg │ ├── zs3-60-light.svg │ ├── zs3-60-sign-up.svg │ ├── zs3-70-light.svg │ ├── zs3-70-sign-up.svg │ ├── zs3-80-light.svg │ ├── zs3-80-sign-up.svg │ ├── zs3-90-light.svg │ ├── zs3-90-sign-up.svg │ ├── zs3-empty-sign-up.svg │ ├── zs3v-10-sign-down.svg │ ├── zs3v-100-light.svg │ ├── zs3v-100-sign-down.svg │ ├── zs3v-110-light.svg │ ├── zs3v-110-sign-down.svg │ ├── zs3v-120-light.svg │ ├── zs3v-120-sign-down.svg │ ├── zs3v-130-sign-down.svg │ ├── zs3v-140-sign-down.svg │ ├── zs3v-150-sign-down.svg │ ├── zs3v-20-light.svg │ ├── zs3v-20-sign-down.svg │ ├── zs3v-30-light.svg │ ├── zs3v-30-sign-down.svg │ ├── zs3v-40-light.svg │ ├── zs3v-40-sign-down.svg │ ├── zs3v-50-light.svg │ ├── zs3v-50-sign-down.svg │ ├── zs3v-60-light.svg │ ├── zs3v-60-sign-down.svg │ ├── zs3v-70-light.svg │ ├── zs3v-70-sign-down.svg │ ├── zs3v-80-light.svg │ ├── zs3v-80-sign-down.svg │ ├── zs3v-90-light.svg │ ├── zs3v-90-sign-down.svg │ ├── zs3v-empty-sign-down.svg │ ├── zs6-db-light.svg │ ├── zs6-sign.svg │ └── zs7-dr-light.svg ├── etcs-stop-marker-arrow-left.svg ├── etcs-stop-marker-triangle-left.svg ├── fi │ ├── eo0-new.svg │ ├── eo0-old.svg │ ├── eo1-new.svg │ ├── eo1-old.svg │ ├── eo1-po1-combined-block.svg │ ├── eo2-new.svg │ ├── lo0.svg │ ├── po0-new.svg │ ├── po0-old.svg │ ├── po1-new.svg │ ├── po1-old.svg │ ├── po2-new.svg │ ├── po2-old.svg │ ├── ro0-new.svg │ └── to1.svg ├── flex │ └── de │ │ ├── blockkennzeichen-1x1.svg │ │ ├── blockkennzeichen-1x2.svg │ │ ├── blockkennzeichen-2x1.svg │ │ ├── blockkennzeichen-2x2.svg │ │ ├── blockkennzeichen-3x1.svg │ │ ├── blockkennzeichen-3x2.svg │ │ ├── blockkennzeichen-4x1.svg │ │ └── blockkennzeichen-4x2.svg ├── level-crossing.svg ├── phone.svg ├── radio-antenna.svg ├── radio-mast.svg ├── signal-deactivated.svg └── tram-stop.svg ├── train_protection.mss └── util └── get_mml_dependencies.py /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.{mss,sql,yml}] 4 | charset = utf-8 5 | indent_size = 2 6 | indent_style = space 7 | insert_final_newline = true 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.swp 2 | data/ 3 | standard.xml 4 | maxspeed.xml 5 | signals.xml 6 | electrification.xml 7 | gauge.xml 8 | *.mapcss 9 | *.d 10 | tmp 11 | .kosmtik-config.yml 12 | .env 13 | *.osm.pbf 14 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:12-slim 2 | 3 | # https://serverfault.com/questions/949991/how-to-install-tzdata-on-a-ubuntu-docker-image 4 | ARG DEBIAN_FRONTEND=noninteractive 5 | 6 | # Style dependencies 7 | RUN apt-get update \ 8 | && apt-get install --no-install-recommends -y \ 9 | ca-certificates \ 10 | curl \ 11 | gnupg \ 12 | postgresql-client \ 13 | python3 \ 14 | python3-distutils \ 15 | fonts-hanazono \ 16 | fonts-noto-cjk \ 17 | fonts-noto-hinted \ 18 | fonts-noto-unhinted \ 19 | mapnik-utils \ 20 | nodejs \ 21 | npm \ 22 | fonts-unifont \ 23 | unzip \ 24 | git \ 25 | && rm -rf /var/lib/apt/lists/* \ 26 | && apt-get clean 27 | 28 | # Kosmtik with plugins, forcing prefix to /usr because Ubuntu sets 29 | # npm prefix to /usr/local, which breaks the install 30 | # We install kosmtik not from release channel, but directly from a specific commit on github. 31 | RUN npm set prefix /usr && npm install -g --unsafe-perm "git+https://git@github.com/kosmtik/kosmtik.git" 32 | 33 | WORKDIR /usr/lib/node_modules/kosmtik/ 34 | RUN kosmtik plugins --install kosmtik-overpass-layer \ 35 | --install kosmtik-fetch-remote \ 36 | --install kosmtik-overlay \ 37 | --install kosmtik-open-in-josm \ 38 | --install kosmtik-map-compare \ 39 | --install kosmtik-osm-data-overlay \ 40 | --install kosmtik-mapnik-reference \ 41 | --install kosmtik-geojson-overlay \ 42 | && cp /root/.config/kosmtik.yml /tmp/.kosmtik-config.yml 43 | 44 | # Closing section 45 | RUN mkdir -p /openrailwaymap 46 | WORKDIR /openrailwaymap 47 | 48 | USER 1000 49 | ENTRYPOINT ["sh", "docker-startup.sh", "kosmtik"] 50 | -------------------------------------------------------------------------------- /Dockerfile.db: -------------------------------------------------------------------------------- 1 | FROM postgis/postgis:10-2.5-alpine 2 | 3 | COPY ./setup/tune-postgis.sh /docker-entrypoint-initdb.d/tune-postgis.sh 4 | -------------------------------------------------------------------------------- /Dockerfile.import: -------------------------------------------------------------------------------- 1 | FROM debian:12-slim 2 | 3 | # https://serverfault.com/questions/949991/how-to-install-tzdata-on-a-ubuntu-docker-image 4 | ARG DEBIAN_FRONTEND=noninteractive 5 | 6 | RUN apt-get update && apt-get install -y --no-install-recommends \ 7 | ca-certificates \ 8 | curl \ 9 | gnupg \ 10 | osm2pgsql \ 11 | osmium-tool \ 12 | gdal-bin \ 13 | python3-psycopg2 \ 14 | python3-yaml \ 15 | python3-requests \ 16 | unzip \ 17 | postgresql-client \ 18 | && rm -rf /var/lib/apt/lists/* \ 19 | && apt-get clean 20 | 21 | ADD setup/openstreetmap-carto.style setup 22 | 23 | RUN mkdir -p /openrailwaymap 24 | WORKDIR /openrailwaymap 25 | 26 | CMD ["sh", "docker-startup.sh", "import"] 27 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | CARTO = carto 2 | 3 | mmls = $(shell find -maxdepth 1 -type f -name "*.mml") 4 | xmls = $(mmls:.mml=.xml) 5 | deps = $(xmls:.xml=.d) 6 | 7 | all: $(xmls) 8 | 9 | -include $(deps) 10 | 11 | %.xml: %.mml 12 | $(CARTO) $^ > $@ 13 | 14 | %.d: %.mml ./util/get_mml_dependencies.py 15 | ./util/get_mml_dependencies.py $< > $@ 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OpenRailwayMap CartoCSS Map Styles 2 | 3 | This is a port of the OpenRailwayMap Infrastructure map style from 4 | MapCSS to CartoCSS to be able to use Mapnik to render maps. 5 | 6 | ## Differences to the MapCSS Style 7 | 8 | There are a couple of smaller and larger differences to the MapCSS style: 9 | 10 | * The rendering of station labels is more sophisticated because Osm2pgsql. 11 | Stations are ranked by their importance. The importance is defined by the 12 | number of route relations a station and its platforms and stop position nodes 13 | belong to. Matching from stops and platforms to stations is based on names 14 | and spatial proximity. Stop area relations (`type=public_transport` 15 | + `public_transport=stop_area` are not used). The matching is sensitive to 16 | differences in spelling. 17 | * Icons (radio towers, level crossings) have a higher priority than most labels. 18 | * The map style uses the Noto Sans font. 19 | * Railway lines have a white halo to improve visibility on colourful background maps. 20 | 21 | ## Setup Notes 22 | 23 | See [SETUP.md](SETUP.md) for details. 24 | 25 | ## License 26 | 27 | Copyright (C) 2017–2019 Michael Reichert 28 | 29 | The [original map style](https://github.com/OpenRailwayMap/OpenRailwayMap/tree/master/styles) 30 | is Copyright (C) 2012 Alexander Matheisen 31 | 32 | This program is free software: you can redistribute it and/or modify it under 33 | the terms of the GNU General Public License as published by the Free Software 34 | Foundation, either version 3 of the License, or (at your option) any later 35 | version. 36 | 37 | This program is distributed in the hope that it will be useful, but WITHOUT ANY 38 | WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 39 | PARTICULAR PURPOSE. See the GNU General Public License for more details. 40 | 41 | You should have received a copy of the GNU General Public License along with 42 | this program. If not, see http://www.gnu.org/licenses/. 43 | -------------------------------------------------------------------------------- /common_disused.mss: -------------------------------------------------------------------------------- 1 | /** Grey color and line width for disused railway tracks and railway tracks under construction. 2 | * To be overriden by colouring for speed limits, train protection or electrification. 3 | */ 4 | 5 | #railway_line_casing[zoom>=9]::casing, 6 | #railway_line_low[zoom<=7]::casing, 7 | #railway_line_med[zoom>7][zoom<9]::casing { 8 | [zoom>=9]["railway"="disused"]["disused_railway"="rail"]["service"=null], 9 | [zoom>=11]["railway"="disused"]["disused_railway"="subway"]["service"=null], 10 | [zoom>=11]["railway"="disused"]["disused_railway"="light_rail"]["service"=null], 11 | [zoom>=12]["railway"="disused"]["disused_railway"="tram"]["service"=null], 12 | [zoom>=13]["railway"="disused"] { 13 | line-color: @railway_casing_color; 14 | line-width: 3 + @railway_casing_add; 15 | line-join: round; 16 | 17 | [service!=null] { 18 | line-width: 1.5 + @railway_casing_add; 19 | } 20 | } 21 | } 22 | 23 | #railway_line_fill[zoom>=9]::fill, 24 | #railway_line_low[zoom<=7]::fill, 25 | #railway_line_med[zoom>7][zoom<9]::fill { 26 | [zoom>=9]["railway"="disused"]["disused_railway"="rail"]["service"=null], 27 | [zoom>=11]["railway"="disused"]["disused_railway"="subway"]["service"=null], 28 | [zoom>=11]["railway"="disused"]["disused_railway"="light_rail"]["service"=null], 29 | [zoom>=12]["railway"="disused"]["disused_railway"="tram"]["service"=null], 30 | [zoom>=13]["railway"="disused"] { 31 | line-color: @railway_fill_color; 32 | line-width: 3; 33 | 34 | [service!=null] { 35 | line-width: 1.5; 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /doc/from_mapcss_to_cartocss.md: -------------------------------------------------------------------------------- 1 | # Migration of a MapCSS style sheet to CartoCSS 2 | 3 | There is no automatical migration path from a MapCSS to CartoCSS but a 4 | few regular expression will make it easier. 5 | 6 | 7 | Here are the most important commands, I entered into Vim during the migration. 8 | Theres is not garantuee that they work for you, too! 9 | 10 | ```vim 11 | :%s/\t/ /g 12 | :%s/way|z\([0-9]\+\)-\[/[zoom>=\1][/g 13 | :%s/way|z\([0-9]\+\)-\([0-9]\+\)/[zoom>=\1][zoom<=\2]/g 14 | :%s/way\[/[/g 15 | :g/z-index/d 16 | :%s/ width:/ line-width:/g 17 | :%s/\]\n[ ]*{/] {/g 18 | :%s/ dashes: / line-dasharray: /g 19 | :%s/ color: / line-color: /g 20 | :%s/ opacity: / line-opacity: /g 21 | :%s_ casing-width:\(.*\)$_/* casing-width:\1 */_g 22 | :%s/\[!\([a-z_:"]\+\)]/[\1=""]/g 23 | :%s/\["\([a-z_]\+\):\([a-z_]\+\)"/["\1_\2"/g 24 | :%s/\[\([a-z_]\+\)/\["\1"/g 25 | :%s/=\([a-z_]\+\)\]/="\1"]/g 26 | :%s/"zoom"/zoom/g 27 | :%s/"=""\]/"=null]/g 28 | ``` 29 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '2' 2 | services: 3 | kosmtik: 4 | image: kosmtik:v1 5 | platform: linux/amd64 6 | build: 7 | context: . 8 | dockerfile: Dockerfile 9 | volumes: 10 | - .:/openrailwaymap 11 | depends_on: 12 | - db 13 | ports: 14 | - "127.0.0.1:6789:6789" 15 | environment: 16 | - PGHOST=db 17 | - PGUSER=postgres 18 | command: 19 | # Edit this argument to render a different style 20 | - standard.mml 21 | db: 22 | image: db:v1 23 | build: 24 | context: . 25 | dockerfile: Dockerfile.db 26 | environment: 27 | - POSTGRES_HOST_AUTH_METHOD=trust 28 | - PG_WORK_MEM 29 | - PG_MAINTENANCE_WORK_MEM 30 | import: 31 | image: import:v1 32 | build: 33 | context: . 34 | dockerfile: Dockerfile.import 35 | volumes: 36 | - .:/openrailwaymap 37 | depends_on: 38 | - db 39 | environment: 40 | - PGHOST=db 41 | - PGUSER=postgres 42 | - PG_WORK_MEM 43 | - PG_MAINTENANCE_WORK_MEM 44 | - OSM2PGSQL_CACHE 45 | - OSM2PGSQL_NUMPROC 46 | - OSM2PGSQL_DATAFILE 47 | - EXTERNAL_DATA_SCRIPT_FLAGS 48 | -------------------------------------------------------------------------------- /orm-simple.style: -------------------------------------------------------------------------------- 1 | # osm2pgsql .style file OpenRailwayMap CartoCSS styles 2 | # OsmType Tag DataType Flags 3 | node,way abandoned text linear 4 | node,way area text polygon # hard coded support for area=1/yes => polygon is in osm2pgsql 5 | node,way bridge text linear 6 | node,way construction text linear 7 | node,way cutting text linear 8 | node,way disused text linear 9 | node ele text linear 10 | node,way embankment text linear 11 | node,way layer text linear 12 | node,way man_made text polygon 13 | node,way power text polygon 14 | node,way proposed text linear 15 | node,way public_transport text polygon 16 | node,way railway text linear 17 | node,way razed text linear 18 | node,way service text linear 19 | node,way tunnel text linear 20 | node,way usage text linear 21 | node,way z_order int4 linear # This is calculated during import 22 | way way_area real linear # This is calculated during import 23 | -------------------------------------------------------------------------------- /setup/openstreetmap-carto.style: -------------------------------------------------------------------------------- 1 | # This is the osm2pgsql .style file for openstreetmap-carto. 2 | # It is inteded to be used with openstreetmap-carto.lua and osm2pgsql Lua 3 | # transforms. Full usage details are in INSTALL.md 4 | # Among things, this means that the linear vs polygon distinction in this file 5 | # doesn't matter, because that is set in the Lua and this file is only used for 6 | # column names and types. 7 | 8 | # OsmType Tag DataType Flags 9 | node,way access text linear 10 | node,way addr:housename text linear 11 | node,way addr:housenumber text linear 12 | way addr:interpolation text linear 13 | node,way admin_level text linear 14 | node,way aerialway text linear 15 | node,way aeroway text polygon 16 | node,way amenity text polygon 17 | node,way barrier text linear 18 | way bicycle text linear 19 | way bridge text linear 20 | node,way boundary text linear 21 | node,way building text polygon 22 | way construction text linear 23 | way covered text linear 24 | way foot text linear 25 | node,way highway text linear 26 | node,way historic text polygon 27 | way horse text linear 28 | node,way junction text linear 29 | node,way landuse text polygon 30 | node,way layer int4 linear 31 | node,way leisure text polygon 32 | node,way lock text linear 33 | node,way man_made text polygon 34 | node,way military text polygon 35 | node,way name text linear 36 | node,way natural text polygon 37 | node,way oneway text linear 38 | node,way place text polygon 39 | node,way power text polygon 40 | node,way railway text linear 41 | node,way ref text linear 42 | node,way religion text linear 43 | way route text linear 44 | way service text linear 45 | node,way shop text polygon 46 | way surface text linear 47 | node,way tourism text polygon 48 | way tracktype text linear 49 | way tunnel text linear 50 | node,way water text polygon 51 | node,way waterway text polygon 52 | way way_area real linear # This is calculated during import 53 | 54 | # Columns defined in openstreetmap-carto.lua file 55 | way z_order int4 linear 56 | -------------------------------------------------------------------------------- /setup/tune-postgis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | export PGUSER="$POSTGRES_USER" 5 | 6 | psql -c "ALTER SYSTEM SET work_mem='${PG_WORK_MEM:-16MB}';" 7 | psql -c "ALTER SYSTEM SET maintenance_work_mem='${PG_MAINTENANCE_WORK_MEM:-256MB}';" 8 | -------------------------------------------------------------------------------- /signal_boxes.mss: -------------------------------------------------------------------------------- 1 | @signal_box_color: #008206; 2 | @signal_box_casing_color: white; 3 | @signal_box_text_color: #404040; 4 | @signal_box_halo_color: #bfffb3; 5 | @signal_box_halo_radius: 1.5; 6 | @signal_box_size: 7; 7 | @signal_box_size_z15: 12; 8 | @signal_box_size_z17: 18; 9 | 10 | #signal_boxes_polygon[zoom>=13] { 11 | polygon-fill: @signal_box_color; 12 | line-color: @signal_box_casing_color; 13 | line-width: 1; 14 | } 15 | 16 | #signal_boxes_point[zoom>=11] { 17 | /* render a circle, therefore marker-file is not set */ 18 | marker-fill: @signal_box_color; 19 | marker-line-width: 1; 20 | marker-line-color: @signal_box_casing_color; 21 | marker-width: @signal_box_size; 22 | marker-height: @signal_box_size; 23 | [zoom>=15] { 24 | marker-width: @signal_box_size_z15; 25 | marker-height: @signal_box_size_z15; 26 | } 27 | [zoom>=17] { 28 | marker-width: @signal_box_size_z17; 29 | marker-height: @signal_box_size_z17; 30 | } 31 | marker-allow-overlap: true; 32 | } 33 | 34 | #signal_boxes_text[zoom>=13] { 35 | text-fill: @signal_box_text_color; 36 | text-name: [name]; 37 | [zoom<=16] { 38 | text-name: [ref]; 39 | } 40 | text-face-name: @bold-fonts; 41 | text-size: 11; 42 | text-halo-radius: @signal_box_halo_radius; 43 | text-halo-fill: @signal_box_halo_color; 44 | ["is_point"=1] { 45 | text-dy: @signal_box_size; 46 | [zoom>=15] { 47 | text-dy: @signal_box_size_z15; 48 | } 49 | [zoom>=17] { 50 | text-dy: @signal_box_size_z17; 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /sql/update_station_importance.sql: -------------------------------------------------------------------------------- 1 | -- Refresh materialized view of stations and their importance 2 | 3 | REFRESH MATERIALIZED VIEW stations_with_route_counts; 4 | -------------------------------------------------------------------------------- /standard_symbols.mss: -------------------------------------------------------------------------------- 1 | @switch-color: black; 2 | @switch-local-color: yellow; 3 | 4 | #railway_symbols[zoom>=11] { 5 | [railway = 'level_crossing'][zoom >= 14], 6 | [railway = 'crossing'][zoom >= 14] { 7 | marker-file: url('symbols/level-crossing.svg'); 8 | marker-width: 12; 9 | marker-height: 7; 10 | [railway = 'crossing'] { 11 | marker-file: url('symbols/crossing.svg'); 12 | } 13 | } 14 | 15 | [railway = 'tram_stop'][zoom >= 13] { 16 | marker-file: url('symbols/tram-stop.svg'); 17 | marker-width: 8; 18 | marker-height: 8; 19 | marker-fill: @text-tram-stop-color; 20 | } 21 | 22 | [railway = 'border'], 23 | [railway = 'owner_change'][zoom >= 13] { 24 | marker-file: url('symbols/border.svg'); 25 | marker-width: 16; 26 | marker-height: 16; 27 | } 28 | 29 | [railway = 'phone'][zoom >= 17] { 30 | marker-file: url('symbols/phone.svg'); 31 | marker-width: 12; 32 | marker-height: 16; 33 | } 34 | 35 | [railway = 'radio'][man_made = 'mast'][zoom >= 13], 36 | [railway = 'radio'][man_made = 'tower'][zoom >= 13] { 37 | marker-file: url('symbols/radio-mast.svg'); 38 | marker-width: 10; 39 | marker-height: 15; 40 | } 41 | 42 | [railway = 'radio'][man_made = 'antenna'][zoom >= 13] { 43 | marker-file: url('symbols/radio-antenna.svg'); 44 | marker-width: 10; 45 | marker-height: 10; 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-10-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-110-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-120-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-140-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-20-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-40-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-50-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/ankuendigungstafel-70-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitsanzeiger-10-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 37 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 60 | 65 | 66 | 67 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitsanzeiger-40-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 37 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 61 | 62 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitsanzeiger-70-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 37 | 39 | 41 | 42 | 44 | image/svg+xml 45 | 47 | 48 | 49 | 50 | 51 | 56 | 59 | 64 | 65 | 66 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-10-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-110-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-120-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-140-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-20-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-40-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-50-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitstafel-70-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/at/geschwindigkeitsvoranzeiger-10-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /symbols/at/weiterfahrt-erlaubt.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /symbols/at/weiterfahrt-verboten.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml -------------------------------------------------------------------------------- /symbols/de/bostrab/g4-60.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 35 | 42 | 46 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /symbols/de/bostrab/sh1.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 41 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /symbols/de/bostrab/so5.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 37 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /symbols/de/bostrab/so6.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 34 | 41 | 45 | 46 | 47 | 48 | -------------------------------------------------------------------------------- /symbols/de/bostrab/st7.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 37 | 39 | 40 | 42 | image/svg+xml 43 | 45 | 46 | 47 | 48 | 49 | 51 | 56 | 61 | 62 | -------------------------------------------------------------------------------- /symbols/de/bue0-ds-repeated.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 36 | 40 | 44 | 45 | 49 | 53 | 54 | 58 | 62 | 69 | 73 | 74 | -------------------------------------------------------------------------------- /symbols/de/bue0-ds.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 36 | 40 | 44 | 45 | 49 | 53 | 54 | 58 | 62 | 63 | -------------------------------------------------------------------------------- /symbols/de/bue0-dv-repeated.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 36 | 40 | 44 | 45 | 49 | 53 | 54 | 58 | 62 | 69 | 73 | 74 | -------------------------------------------------------------------------------- /symbols/de/bue0-dv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 36 | 40 | 44 | 45 | 49 | 53 | 54 | 58 | 62 | 63 | -------------------------------------------------------------------------------- /symbols/de/bue3.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 35 | 36 | 40 | 45 | 49 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /symbols/de/bue4-ds-only-transit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 35 | 38 | 45 | 49 | 52 | 59 | 63 | 67 | 68 | -------------------------------------------------------------------------------- /symbols/de/bue4-ds.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 34 | 41 | 46 | 47 | 50 | 51 | -------------------------------------------------------------------------------- /symbols/de/bue5-only-transit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 35 | 38 | 45 | 49 | 52 | 59 | 63 | 67 | 68 | -------------------------------------------------------------------------------- /symbols/de/bue5.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 38 | 42 | 45 | 46 | -------------------------------------------------------------------------------- /symbols/de/el1.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 41 | 48 | 56 | 57 | -------------------------------------------------------------------------------- /symbols/de/el1v.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 41 | 48 | 49 | -------------------------------------------------------------------------------- /symbols/de/el2.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /symbols/de/el3.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 42 | 43 | -------------------------------------------------------------------------------- /symbols/de/el4.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /symbols/de/el5.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /symbols/de/el6.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 42 | 43 | -------------------------------------------------------------------------------- /symbols/de/fahrtanzeiger.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 29 | 33 | 40 | 45 | 46 | 50 | 51 | -------------------------------------------------------------------------------- /symbols/de/hl0.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 36 | 39 | 43 | 44 | 48 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /symbols/de/hl1.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 38 | 41 | 42 | 43 | 46 | 50 | 51 | 55 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /symbols/de/hl10.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 38 | 41 | 42 | 45 | 48 | 49 | 50 | 53 | 57 | 58 | 63 | 64 | -------------------------------------------------------------------------------- /symbols/de/hl12a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 38 | 41 | 42 | 45 | 48 | 49 | 50 | 53 | 57 | 58 | 62 | 67 | 68 | 73 | 74 | -------------------------------------------------------------------------------- /symbols/de/hl3a.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 31 | 34 | 35 | 38 | 41 | 42 | 45 | 48 | 49 | 50 | 53 | 57 | 58 | 62 | 67 | 68 | 73 | 74 | -------------------------------------------------------------------------------- /symbols/de/hp0-semaphore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 32 | 36 | 43 | 44 | 48 | 52 | 53 | -------------------------------------------------------------------------------- /symbols/de/hp1-semaphore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 32 | 36 | 43 | 44 | 48 | 52 | 53 | -------------------------------------------------------------------------------- /symbols/de/hp2-semaphore.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 32 | 39 | 40 | 44 | 48 | 52 | 56 | 60 | 61 | -------------------------------------------------------------------------------- /symbols/de/ks-distant-repeated.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 17 | 20 | 21 | 22 | 24 | 25 | 27 | image/svg+xml 28 | 30 | 31 | 32 | 33 | 34 | 41 | 45 | 50 | 51 | 55 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /symbols/de/ks-distant-shortened.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 17 | 20 | 21 | 22 | 24 | 25 | 27 | image/svg+xml 28 | 30 | 31 | 32 | 33 | 34 | 41 | 45 | 50 | 51 | 55 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /symbols/de/ks-distant.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 17 | 20 | 21 | 22 | 24 | 25 | 27 | image/svg+xml 28 | 30 | 31 | 32 | 33 | 34 | 41 | 45 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /symbols/de/ks-main.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 19 | 22 | 23 | 26 | 29 | 30 | 31 | 33 | 34 | 36 | image/svg+xml 37 | 39 | 40 | 41 | 42 | 43 | 47 | 51 | 52 | 56 | 61 | 62 | 63 | -------------------------------------------------------------------------------- /symbols/de/ne12.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 30 | 34 | 38 | 39 | -------------------------------------------------------------------------------- /symbols/de/ne4-dwarf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 21 | 23 | image/svg+xml 24 | 26 | 27 | 28 | 29 | 30 | 32 | 56 | 63 | 70 | 77 | 84 | 85 | -------------------------------------------------------------------------------- /symbols/de/ne6.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 32 | 36 | 40 | 44 | 45 | -------------------------------------------------------------------------------- /symbols/de/ne7-yellow-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 35 | -------------------------------------------------------------------------------- /symbols/de/pf1-dv-only-transit.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 35 | 38 | 45 | 49 | 52 | 59 | 63 | 67 | 68 | -------------------------------------------------------------------------------- /symbols/de/pf1-dv.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 34 | 41 | 46 | 47 | 50 | 51 | -------------------------------------------------------------------------------- /symbols/de/ra10.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 29 | 32 | 36 | 37 | -------------------------------------------------------------------------------- /symbols/de/ra11-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 33 | 36 | 40 | 41 | -------------------------------------------------------------------------------- /symbols/de/ra11b.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 33 | 36 | 40 | 41 | -------------------------------------------------------------------------------- /symbols/de/sh0-light-dwarf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 19 | 22 | 23 | 24 | 26 | 27 | 29 | image/svg+xml 30 | 32 | 33 | 34 | 35 | 36 | 40 | 43 | 46 | 51 | 52 | -------------------------------------------------------------------------------- /symbols/de/sh0-semaphore-dwarf.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 34 | 38 | 42 | 45 | 49 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /symbols/de/sh1-light-normal.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 35 | 39 | 42 | 45 | 49 | 53 | 54 | -------------------------------------------------------------------------------- /symbols/de/sh2.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 18 | 19 | 21 | image/svg+xml 22 | 24 | 25 | 26 | 27 | 28 | 31 | 38 | 39 | 40 | -------------------------------------------------------------------------------- /symbols/de/so106.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 30 | 34 | 38 | 42 | 46 | 47 | -------------------------------------------------------------------------------- /symbols/de/subway.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 20 | 21 | 23 | image/svg+xml 24 | 26 | 27 | 28 | 29 | 30 | 51 | 53 | 58 | 64 | 65 | -------------------------------------------------------------------------------- /symbols/de/zs10-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 14 | 16 | 17 | 19 | image/svg+xml 20 | 22 | 23 | 24 | 25 | 26 | 28 | 32 | 36 | 40 | 41 | -------------------------------------------------------------------------------- /symbols/de/zs13-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 16 | 37 | 39 | 40 | 42 | image/svg+xml 43 | 45 | 46 | 47 | 48 | 49 | 51 | 54 | 61 | 66 | 67 | -------------------------------------------------------------------------------- /symbols/de/zs3-10-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 15 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 31 | 35 | 40 | 41 | 42 | -------------------------------------------------------------------------------- /symbols/de/zs3-100-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-110-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-120-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-130-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-140-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-150-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-160-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /symbols/de/zs3-70-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /symbols/de/zs3-80-sign-up.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /symbols/de/zs3v-100-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-110-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-120-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-130-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-140-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-150-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /symbols/de/zs3v-70-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /symbols/de/zs3v-80-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /symbols/de/zs3v-90-sign-down.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | Slice 1 4 | Created with Sketch (http://www.bohemiancoding.com/sketch) 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /symbols/de/zs6-sign.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 29 | 33 | 34 | 38 | 43 | 44 | 48 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /symbols/etcs-stop-marker-arrow-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | image/svg+xml--> 52 | -------------------------------------------------------------------------------- /symbols/etcs-stop-marker-triangle-left.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /symbols/signal-deactivated.svg: -------------------------------------------------------------------------------- 1 | 2 | 12 | 14 | 15 | 17 | image/svg+xml 18 | 20 | 21 | 22 | 23 | 24 | 26 | 29 | 32 | 33 | 36 | 39 | 40 | 41 | 49 | 57 | 58 | -------------------------------------------------------------------------------- /symbols/tram-stop.svg: -------------------------------------------------------------------------------- 1 | 2 | 13 | 15 | 17 | 18 | 20 | image/svg+xml 21 | 23 | 24 | 25 | 26 | 27 | 30 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /util/get_mml_dependencies.py: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env python3 2 | 3 | import argparse 4 | import os 5 | import os.path 6 | import sys 7 | import yaml 8 | 9 | parser = argparse.ArgumentParser( 10 | description=""" 11 | Print the names of the .mss files used by a .mml file (CartoCSS style, YAML 12 | format) and the name of the .mml file itself as a list of dependencies of a 13 | Makefile. This script needs to be called from the directory where the Makefile 14 | is located.""") 15 | parser.add_argument( 16 | "-k", 17 | "--key", 18 | type=str, 19 | default="Stylesheet", 20 | help="Name of the YAML key on top level to query for" 21 | ) 22 | parser.add_argument( 23 | "-n", 24 | "--not-replace-suffix", 25 | action="store_true", 26 | help="Do not replace file name suffix of the input filename by .mml" 27 | ) 28 | parser.add_argument( 29 | "input_file", 30 | type=str, 31 | help="Input file" 32 | ) 33 | args = parser.parse_args() 34 | 35 | input_filename = args.input_file 36 | if not args.not_replace_suffix: 37 | input_filename = "{}.{}".format(os.path.splitext(input_filename)[0], "mml") 38 | 39 | if not os.path.isfile(input_filename) and not os.path.islink(input_filename): 40 | sys.stderr.write("Input file {} does not exist.\n".format(input_filename)) 41 | exit(1) 42 | 43 | # input_dir is an empty string if args.input_file is just a filename without a directory. 44 | input_dir = os.path.dirname(args.input_file) 45 | 46 | with open(input_filename, "rb") as input_file: 47 | mml = yaml.safe_load(input_file) 48 | mss_files = mml.get(args.key, []) 49 | if len(mss_files) == 0: 50 | sys.stderr.write("No stylesheets found\n") 51 | exit(1) 52 | # An empty string as directory does not make the result accidentially become an absolute path. 53 | mss_files = [ os.path.join(input_dir, m) for m in mss_files ] 54 | sys.stdout.write("{}.xml: ".format(os.path.splitext(input_filename)[0])) 55 | sys.stdout.write(" ".join(mss_files) + "\n") 56 | --------------------------------------------------------------------------------