├── .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 |
40 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-110-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-120-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-140-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-20-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-40-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-50-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/ankuendigungstafel-70-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitsanzeiger-10-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
67 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitsanzeiger-40-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitsanzeiger-70-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
66 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-10-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-110-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-120-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-140-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
44 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-20-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-40-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-50-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitstafel-70-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
40 |
--------------------------------------------------------------------------------
/symbols/at/geschwindigkeitsvoranzeiger-10-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/symbols/at/weiterfahrt-erlaubt.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/symbols/at/weiterfahrt-verboten.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/symbols/de/bostrab/g4-60.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
--------------------------------------------------------------------------------
/symbols/de/bostrab/sh1.svg:
--------------------------------------------------------------------------------
1 |
2 |
48 |
--------------------------------------------------------------------------------
/symbols/de/bostrab/so5.svg:
--------------------------------------------------------------------------------
1 |
2 |
43 |
--------------------------------------------------------------------------------
/symbols/de/bostrab/so6.svg:
--------------------------------------------------------------------------------
1 |
2 |
48 |
--------------------------------------------------------------------------------
/symbols/de/bostrab/st7.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/symbols/de/bue0-ds-repeated.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
74 |
--------------------------------------------------------------------------------
/symbols/de/bue0-ds.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
63 |
--------------------------------------------------------------------------------
/symbols/de/bue0-dv-repeated.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
74 |
--------------------------------------------------------------------------------
/symbols/de/bue0-dv.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
63 |
--------------------------------------------------------------------------------
/symbols/de/bue3.svg:
--------------------------------------------------------------------------------
1 |
2 |
55 |
--------------------------------------------------------------------------------
/symbols/de/bue4-ds-only-transit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
68 |
--------------------------------------------------------------------------------
/symbols/de/bue4-ds.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
51 |
--------------------------------------------------------------------------------
/symbols/de/bue5-only-transit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
68 |
--------------------------------------------------------------------------------
/symbols/de/bue5.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
46 |
--------------------------------------------------------------------------------
/symbols/de/el1.svg:
--------------------------------------------------------------------------------
1 |
2 |
57 |
--------------------------------------------------------------------------------
/symbols/de/el1v.svg:
--------------------------------------------------------------------------------
1 |
2 |
49 |
--------------------------------------------------------------------------------
/symbols/de/el2.svg:
--------------------------------------------------------------------------------
1 |
2 |
39 |
--------------------------------------------------------------------------------
/symbols/de/el3.svg:
--------------------------------------------------------------------------------
1 |
2 |
43 |
--------------------------------------------------------------------------------
/symbols/de/el4.svg:
--------------------------------------------------------------------------------
1 |
2 |
39 |
--------------------------------------------------------------------------------
/symbols/de/el5.svg:
--------------------------------------------------------------------------------
1 |
2 |
39 |
--------------------------------------------------------------------------------
/symbols/de/el6.svg:
--------------------------------------------------------------------------------
1 |
2 |
43 |
--------------------------------------------------------------------------------
/symbols/de/fahrtanzeiger.svg:
--------------------------------------------------------------------------------
1 |
2 |
51 |
--------------------------------------------------------------------------------
/symbols/de/hl0.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
55 |
--------------------------------------------------------------------------------
/symbols/de/hl1.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
62 |
--------------------------------------------------------------------------------
/symbols/de/hl10.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
64 |
--------------------------------------------------------------------------------
/symbols/de/hl12a.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
74 |
--------------------------------------------------------------------------------
/symbols/de/hl3a.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
74 |
--------------------------------------------------------------------------------
/symbols/de/hp0-semaphore.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
53 |
--------------------------------------------------------------------------------
/symbols/de/hp1-semaphore.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
53 |
--------------------------------------------------------------------------------
/symbols/de/hp2-semaphore.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
61 |
--------------------------------------------------------------------------------
/symbols/de/ks-distant-repeated.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/symbols/de/ks-distant-shortened.svg:
--------------------------------------------------------------------------------
1 |
2 |
62 |
--------------------------------------------------------------------------------
/symbols/de/ks-distant.svg:
--------------------------------------------------------------------------------
1 |
2 |
52 |
--------------------------------------------------------------------------------
/symbols/de/ks-main.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
63 |
--------------------------------------------------------------------------------
/symbols/de/ne12.svg:
--------------------------------------------------------------------------------
1 |
2 |
39 |
--------------------------------------------------------------------------------
/symbols/de/ne4-dwarf.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
85 |
--------------------------------------------------------------------------------
/symbols/de/ne6.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
45 |
--------------------------------------------------------------------------------
/symbols/de/ne7-yellow-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
35 |
--------------------------------------------------------------------------------
/symbols/de/pf1-dv-only-transit.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
68 |
--------------------------------------------------------------------------------
/symbols/de/pf1-dv.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
51 |
--------------------------------------------------------------------------------
/symbols/de/ra10.svg:
--------------------------------------------------------------------------------
1 |
2 |
37 |
--------------------------------------------------------------------------------
/symbols/de/ra11-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
41 |
--------------------------------------------------------------------------------
/symbols/de/ra11b.svg:
--------------------------------------------------------------------------------
1 |
2 |
41 |
--------------------------------------------------------------------------------
/symbols/de/sh0-light-dwarf.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
52 |
--------------------------------------------------------------------------------
/symbols/de/sh0-semaphore-dwarf.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
58 |
--------------------------------------------------------------------------------
/symbols/de/sh1-light-normal.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
54 |
--------------------------------------------------------------------------------
/symbols/de/sh2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
40 |
--------------------------------------------------------------------------------
/symbols/de/so106.svg:
--------------------------------------------------------------------------------
1 |
2 |
47 |
--------------------------------------------------------------------------------
/symbols/de/subway.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
65 |
--------------------------------------------------------------------------------
/symbols/de/zs10-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
41 |
--------------------------------------------------------------------------------
/symbols/de/zs13-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
67 |
--------------------------------------------------------------------------------
/symbols/de/zs3-10-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
42 |
--------------------------------------------------------------------------------
/symbols/de/zs3-100-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-110-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-120-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-130-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-140-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-150-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-160-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-70-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3-80-sign-up.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-100-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-110-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-120-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-130-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-140-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-150-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-70-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-80-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs3v-90-sign-down.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/symbols/de/zs6-sign.svg:
--------------------------------------------------------------------------------
1 |
2 |
55 |
--------------------------------------------------------------------------------
/symbols/etcs-stop-marker-arrow-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/symbols/etcs-stop-marker-triangle-left.svg:
--------------------------------------------------------------------------------
1 |
2 |
7 |
--------------------------------------------------------------------------------
/symbols/signal-deactivated.svg:
--------------------------------------------------------------------------------
1 |
2 |
58 |
--------------------------------------------------------------------------------
/symbols/tram-stop.svg:
--------------------------------------------------------------------------------
1 |
2 |
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 |
--------------------------------------------------------------------------------