diff --git a/SETUP.md b/SETUP.md index 11ed02a8..b7434e80 100644 --- a/SETUP.md +++ b/SETUP.md @@ -14,7 +14,7 @@ The import process will filter the file before importing it. The filtered file w Start the tile server: ```shell -docker compose up --build martin +docker compose up --build --watch martin ``` Prepare and start the API: @@ -25,15 +25,12 @@ docker compose up api Start the web server: ```shell -docker compose up --build martin-proxy +docker compose up --build --watch martin-proxy ``` The OpenRailwayMap is now available on http://localhost:8000. -To ease development, Docker Compose can automatically rebuild containers when dependent files change. Enable *watch mode* with: -```shell -docker compose watch -``` +Docker Compose will automatically rebuild and restart the `martin` and `martin-proxy` containers if relevant files are modified. ## Deployment diff --git a/docker-compose.yml b/docker-compose.yml index 493eda01..abf8fb05 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,8 +88,6 @@ services: depends_on: db: condition: service_healthy - volumes: - - ./martin:/config environment: - DATABASE_URL=postgresql://postgres@db:5432/gis ulimits: @@ -97,6 +95,12 @@ services: nofile: soft: 26677 hard: 46677 + develop: + watch: + - action: rebuild + path: martin + - action: rebuild + path: symbols martin-static: build: diff --git a/features/electrification_signals.yaml b/features/electrification_signals.yaml index 2bc9e0b0..d40716c6 100644 --- a/features/electrification_signals.yaml +++ b/features/electrification_signals.yaml @@ -750,7 +750,12 @@ electrification_signals: - description: Wskaźnik uprzedzający o opuszczeniu pantografu (we1) country: PL - icon: { default: 'pl/we1' } + icon: + match: 'railway:signal:electricity:turn_direction' + cases: + - { regex: '^right$', value: 'pl/we1b' } + - { regex: '^left$', value: 'pl/we1c' } + default: 'pl/we1a' tags: - { tag: 'railway:signal:electricity', value: 'PL-PKP:we1' } - { tag: 'railway:signal:electricity:form', value: 'sign' } @@ -777,7 +782,7 @@ electrification_signals: - { regex: '^locomotive$', value: 'pl/we3b' } default: 'pl/we3a' tags: - - { tag: 'railway:signal:electricity', values: ['PL-PKP:we3a', 'PL-PKP:we3b'] } + - { tag: 'railway:signal:electricity', values: ['PL-PKP:we3a', 'PL-PKP:we3b', 'PL-PKP:we3c'] } - { tag: 'railway:signal:electricity:form', value: 'sign' } - { tag: 'railway:signal:electricity:type', value: 'pantograph_up' } @@ -815,10 +820,58 @@ electrification_signals: - { regex: '^locomotive$', value: 'pl/we9b' } default: 'pl/we9a' tags: - - { tag: 'railway:signal:electricity', values: ['PL-PKP:we9a', 'PL-PKP:we9b'] } + - { tag: 'railway:signal:electricity', values: ['PL-PKP:we9a', 'PL-PKP:we9b', 'PL-PKP:we9c'] } - { tag: 'railway:signal:electricity:form', value: 'sign' } - { tag: 'railway:signal:electricity:type', value: 'power_on' } + - description: Wskaźniki zmiany systemu zasilania 25 kV + country: PL + icon: { default: 'pl/we10a' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10a' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + + - description: Wskaźniki zmiany systemu zasilania 25 kV + country: PL + icon: { default: 'pl/we10b' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10b' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + + - description: Wskaźniki zmiany systemu zasilania 15 kV + country: PL + icon: { default: 'pl/we10c' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10c' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + + - description: Wskaźniki zmiany systemu zasilania 15 kV + country: PL + icon: { default: 'pl/we10d' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10d' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + + - description: Wskaźniki zmiany systemu zasilania 3 kV + country: PL + icon: { default: 'pl/we10e' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10e' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + + - description: Wskaźniki zmiany systemu zasilania 3 kV + country: PL + icon: { default: 'pl/we10f' } + tags: + - { tag: 'railway:signal:electricity', value: 'PL-PKP:we10f' } + - { tag: 'railway:signal:electricity:form', value: 'sign' } + - { tag: 'railway:signal:electricity:type', value: 'power_change' } + - description: Tram isolation (ct-1) country: PL icon: { default: 'pl/ct-1' } diff --git a/features/signals_railway_signals.yaml b/features/signals_railway_signals.yaml index 5bcc2816..f5e921ea 100644 --- a/features/signals_railway_signals.yaml +++ b/features/signals_railway_signals.yaml @@ -72,6 +72,7 @@ signals_railway_signals: - 'railway:signal:steam_locomotive' - 'railway:signal:steam_locomotive:form' - 'railway:signal:stop:form' + - 'railway:signal:stop:carriages' - 'railway:signal:stop_demand' - 'railway:signal:stop_demand:form' - 'railway:signal:train_protection' @@ -84,6 +85,7 @@ signals_railway_signals: - 'railway:signal:wrong_road' - 'railway:signal:wrong_road:form' - 'railway:vacancy_detection' + - 'railway:signal:position' features: @@ -489,6 +491,7 @@ signals_railway_signals: default: 'de/bue4-ds' tags: - { tag: 'railway:signal:whistle', value: 'DE-ESO:db:bü4' } + - { tag: 'railway:signal:whistle:form', value: 'sign' } - description: crossing distant sign Bü 2 country: DE @@ -498,7 +501,8 @@ signals_railway_signals: - { regex: '^yes$', value: 'de/bue2-ds-reduced-distance', description: 'reduced distance' } default: 'de/bue2-ds' tags: - - { tag: 'railway:signal:crossing_distant', value: 'DE-ESO:db:bü4' } + - { tag: 'railway:signal:crossing_distant', value: 'DE-ESO:bü2' } + - { tag: 'railway:signal:crossing_distant:form', value: 'sign' } - description: whistle sign Bü 3 country: DE @@ -515,6 +519,7 @@ signals_railway_signals: default: 'de/pf1-dv' tags: - { tag: 'railway:signal:whistle', value: 'DE-ESO:dr:pf1' } + - { tag: 'railway:signal:whistle:form', value: 'sign' } - description: ring sign Bü 5 country: DE @@ -674,7 +679,7 @@ signals_railway_signals: tags: - { tag: 'railway:signal:passing', value: 'DE-BOStrab:so5' } - { tag: 'railway:signal:passing:form', value: 'sign' } - - { tag: 'railway:signal:passing:type', value: 'no_type' } + - { tag: 'railway:signal:passing:type', value: 'no_passing' } - description: tram passing prohibited end sign So 6 country: DE @@ -751,6 +756,12 @@ signals_railway_signals: - { tag: 'railway:signal:minor', values: ['DE-ESO:sh2', 'DE-BOStrab:sh2'] } - { tag: 'railway:signal:minor:form', value: 'sign' } + - description: tram läuten Sh 4 + country: DE + icon: { default: 'de/bostrab/sh4' } + tags: + - { tag: 'railway:signal:ring', value: 'DE-BOStrab:sh4' } + - description: Signalhaltmelder Zugleitbetrieb country: DE icon: { default: 'de/zlb-haltmelder-light' } @@ -1231,36 +1242,6 @@ signals_railway_signals: - { tag: 'railway:signal:main_repeated', value: 'NL' } - { tag: 'railway:signal:main_repeated:form', value: 'light' } - - description: H signal - country: NL - icon: { default: 'nl/H' } - tags: - - { tag: 'railway:signal:speed_limit', value: 'NL' } - - { tag: 'railway:signal:speed_limit:form', value: 'light' } - - { tag: 'railway:signal:speed_limit:states', value: 'H;off' } - - - description: L signal - country: NL - icon: { default: 'nl/L' } - tags: - - { tag: 'railway:signal:speed_limit', value: 'NL' } - - { tag: 'railway:signal:speed_limit:form', value: 'light' } - - { tag: 'railway:signal:speed_limit:states', value: 'L;off' } - - - description: main signal with speed limit - country: NL - icon: { default: 'nl/main_light_speed_limit' } - tags: - - { tag: 'railway:signal:main', value: 'NL' } - - { tag: 'railway:signal:speed_limit:form', value: 'light' } - - - description: distant signal with speed limit - country: NL - icon: { default: 'nl/distant_light_speed_limit' } - tags: - - { tag: 'railway:signal:distant', value: 'NL' } - - { tag: 'railway:signal:speed_limit:form', value: 'light' } - - description: main light country: NL icon: { default: 'nl/main_light' } @@ -1275,28 +1256,29 @@ signals_railway_signals: - { tag: 'railway:signal:distant', value: 'NL' } - { tag: 'railway:signal:distant:form', value: 'light' } - - description: speed limit only + - description: middenvoetbrugsein country: NL - icon: { default: 'nl/speed_limit_light' } + icon: { default: 'nl/215b' } tags: - - { tag: 'railway:signal:speed_limit', value: 'NL' } - - { tag: 'railway:signal:speed_limit:form', value: 'light' } + - { tag: 'railway:signal:minor', value: 'NL:middenvoetbrugsein' } + - { tag: 'railway:signal:minor:form', value: 'light' } - description: Humping ("heuvelen") country: NL icon: { default: 'nl/270a' } tags: - { tag: 'railway:signal:humping', value: 'NL:270' } - - - description: ATB codewissel - country: NL - icon: { default: 'nl/atb-codewissel' } - tags: - - { tag: 'railway:signal:train_protection', value: 'NL:330' } + - { tag: 'railway:signal:humping:form', value: 'light' } - description: train protection block markers (arrow) country: NL - icon: { default: 'general/etcs-stop-marker-arrow-left' } + icon: + # TODO, support lights (227a / 227c) + match: 'railway:signal:position' + cases: + - { regex: '^left$', value: 'general/etcs-stop-marker-arrow-right' } + - { regex: '^overhead$', value: 'general/etcs-stop-marker-arrow-down' } + default: 'general/etcs-stop-marker-arrow-left' tags: - { tag: 'railway:signal:train_protection', value: 'NL:227b' } - { tag: 'railway:signal:train_protection:form', value: 'sign' } @@ -1305,12 +1287,131 @@ signals_railway_signals: - description: train protection block markers (triangle) country: NL - icon: { default: 'general/etcs-stop-marker-triangle-left' } + icon: + # TODO, support lights (227a / 227c) + match: 'railway:signal:position' + cases: + - { regex: '^left$', value: 'general/etcs-stop-marker-triangle-right' } + - { regex: '^overhead$', value: 'general/etcs-stop-marker-triangle-down' } + default: 'general/etcs-stop-marker-triangle-left' tags: - { tag: 'railway:signal:train_protection', values: ['NL:227b', 'DE-ESO:ne14'] } - { tag: 'railway:signal:train_protection:form', value: 'sign' } - { tag: 'railway:signal:train_protection:type', value: 'block_marker' } + - description: stopplaatssein + country: NL + icon: { default: 'nl/303' } + tags: + - { tag: 'railway:signal:stop', values: ['NL:303', 'NL:stopplaatssein'] } + - { tag: 'railway:signal:stop:form', value: 'light' } + + - description: treinlengtebord + country: NL + # TODO implement partial platform train length values (railway:signal:stop:carriages_partial_platform=*) + icon: + match: 'railway:signal:stop:carriages' + cases: + # Free match to allow matching multiple values on a single sign, separated by ; + - { regex: '18', value: 'nl/304-18' } + - { regex: '16', value: 'nl/304-16' } + - { regex: '15', value: 'nl/304-15' } + - { regex: '14', value: 'nl/304-14' } + - { regex: '13', value: 'nl/304-13' } + - { regex: '12', value: 'nl/304-12' } + - { regex: '11', value: 'nl/304-11' } + - { regex: '10', value: 'nl/304-10' } + - { regex: '9', value: 'nl/304-9' } + - { regex: '8', value: 'nl/304-8' } + - { regex: '7', value: 'nl/304-7' } + - { regex: '6', value: 'nl/304-6' } + - { regex: '5', value: 'nl/304-5' } + - { regex: '4', value: 'nl/304-4' } + - { regex: '3', value: 'nl/304-3' } + - { regex: '2', value: 'nl/304-2' } + default: 'nl/304-empty' + tags: + - { tag: 'railway:signal:stop', value: 'NL:304' } + - { tag: 'railway:signal:stop:form', value: 'sign' } + + - description: distant crossing + country: NL + # TODO process caption / distant crossing position + icon: { default: 'nl/318a' } + tags: + - { tag: 'railway:signal:crossing_distant', values: ['NL:318a', 'NL:318b'] } + - { tag: 'railway:signal:crossing_distant:form', value: 'sign' } + + - description: drive on sight + country: NL + icon: { default: 'nl/317' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:317' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: station + country: NL + icon: { default: 'nl/305' } + tags: + - { tag: 'railway:signal:station_distant', value: 'NL:305' } + - { tag: 'railway:signal:station_distant:form', value: 'sign' } + + - description: ETCS cab signalling (start) + country: NL + icon: { default: 'nl/336' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:336' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ETCS cab signalling (end) + country: NL + icon: { default: 'nl/337' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:337' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ATB distant + country: NL + icon: { default: 'nl/328a' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:328a' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ATB start + country: NL + icon: { default: 'nl/328' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:328' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ATB code + country: NL + icon: { default: 'nl/328b' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:328b' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ATB end + country: NL + icon: { default: 'nl/329' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:329' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + + - description: ATB codewissel + country: NL + icon: { default: 'nl/330' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:330' } + - { tag: 'railway:signal:train_protection:form', value: 'light' } + + - description: Einde beveiligd gebied + country: NL + icon: { default: 'nl/333' } + tags: + - { tag: 'railway:signal:train_protection', value: 'NL:333' } + - { tag: 'railway:signal:train_protection:form', value: 'sign' } + # --- PL --- # - description: Semafor kształtowy diff --git a/features/speed_railway_signals.yaml b/features/speed_railway_signals.yaml index 2342bbc9..240ca1c0 100644 --- a/features/speed_railway_signals.yaml +++ b/features/speed_railway_signals.yaml @@ -660,14 +660,138 @@ speed_railway_signals: # --- NL --- # - - description: speed limit light (part of main signal) + - description: L signal + country: NL + icon: { default: 'nl/276' } + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL' } + - { tag: 'railway:signal:speed_limit:form', value: 'light' } + - { tag: 'railway:signal:speed_limit:states', value: 'L;off' } + + - description: H signal + country: NL + icon: { default: 'nl/277' } + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL' } + - { tag: 'railway:signal:speed_limit:form', value: 'light' } + - { tag: 'railway:signal:speed_limit:states', value: 'H;off' } + + - description: X/G signal + country: NL + icon: { default: 'nl/279' } + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL' } + - { tag: 'railway:signal:speed_limit:form', value: 'light' } + - { tag: 'railway:signal:speed_limit:states', value: 'X;G;off' } + + - description: distant speed limit distant (sign) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit_distant:speed' + cases: + - { regex: '^[1-9]0|1[0-4]0|125$', value: 'nl/313-{}', example: 'nl/313-80' } + default: 'nl/313-empty' + tags: + - { tag: 'railway:signal:speed_limit_distant', value: 'NL:313' } + - { tag: 'railway:signal:speed_limit_distant:form', value: 'sign' } + + - description: speed limit (sign) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^[1-9]0|1[0-46]0|[12]5|125$', value: 'nl/314-{}', example: 'nl/314-70' } + default: 'nl/314-empty' + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL:314' } + - { tag: 'railway:signal:speed_limit:form', value: 'sign' } + + - description: speed limit increase (sign) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^[3-9]0|1[0-46]0|125$', value: 'nl/316-{}', example: 'nl/316-130' } + default: 'nl/316-empty' + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL:316' } + - { tag: 'railway:signal:speed_limit:form', value: 'sign' } + + - description: distant speed limit (light) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit_distant:speed' + cases: + - { regex: '^[1-9]0|1[0-9]0$', value: 'nl/speed_limit_distant_light-{}', example: 'nl/speed_limit_distant_light-60' } + default: 'nl/speed_limit_distant_light-empty' + tags: + - { tag: 'railway:signal:speed_limit_distant', value: 'NL' } + - { tag: 'railway:signal:speed_limit_distant:form', value: 'light' } + + - description: speed limit (light) country: NL type: line - icon: { default: 'nl/speed_limit_light' } + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^[1-9]0|1[0-9]0$', value: 'nl/speed_limit_light-{}', example: 'nl/speed_limit_light-60' } + default: 'nl/speed_limit_light-empty' tags: - { tag: 'railway:signal:speed_limit', value: 'NL' } - { tag: 'railway:signal:speed_limit:form', value: 'light' } + - description: tunnel distant speed limit + country: NL + type: line + icon: + match: 'railway:signal:speed_limit_distant:speed' + cases: + - { regex: '^80$', value: 'nl/286-{}', example: 'nl/286-80' } + default: 'nl/286-empty' + tags: + - { tag: 'railway:signal:speed_limit_distant', value: 'NL:286' } + - { tag: 'railway:signal:speed_limit_distant:form', value: 'sign' } + + - description: tunnel entry speed limit + country: NL + type: line + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^[3-8]0$', value: 'nl/281-{}', example: 'nl/281-40' } + default: 'nl/281-empty' + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL:281' } + - { tag: 'railway:signal:speed_limit:form', value: 'sign' } + + - description: advisory speed (sign) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^15|35|[4-9]0|120$', value: 'nl/282-{}', example: 'nl/282-40' } + default: 'nl/282-empty' + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL:282' } + - { tag: 'railway:signal:speed_limit:form', value: 'sign' } + + - description: advisory speed (light) + country: NL + type: line + icon: + match: 'railway:signal:speed_limit:speed' + cases: + - { regex: '^15|35|[4-9]0|120$', value: 'nl/282a-{}', example: 'nl/282a-40' } + default: 'nl/282a-empty' + tags: + - { tag: 'railway:signal:speed_limit', value: 'NL:282' } + - { tag: 'railway:signal:speed_limit:form', value: 'light' } + # --- PL --- # - description: D6 Tarcza zwolnić bieg diff --git a/features/train_protection.yaml b/features/train_protection.yaml index 3a0e09ab..0302ffc0 100644 --- a/features/train_protection.yaml +++ b/features/train_protection.yaml @@ -16,28 +16,19 @@ signals_railway_line: - { train_protection: 'pzb', legend: 'Punktförmige Zugbeeinflussung (PZB)', color: '#ffb900' } - { train_protection: 'acses', legend: 'Advanced Civil Speed Enforcement System (ACSES)', color: 'pink' } - { train_protection: 'als', legend: 'Автоматическая локомотивная сигнализация (ALS)', color: 'hsl(284, 100%, 40%)' } - - { train_protection: 'ases', legend: 'Advanced Speed Enforcement System (ASES)', color: 'pink' } - { train_protection: 'atp', legend: 'Automatic Train Protection (ATP)', color: 'hsl(305, 100%, 40%)' } - { train_protection: 'aws', legend: 'Automatic Warning System (AWS)', color: 'hsl(50, 100%, 40%)' } - - { train_protection: 'bm', legend: 'Block Manuel (BM)', color: 'pink' } - - { train_protection: 'bal', legend: 'Block Automatique Lumineux (BAL)', color: 'pink' } - - { train_protection: 'bapr', legend: 'Block Automatique à Permissivité Restreinte (BAPR)', color: 'pink' } - { train_protection: 'caws', legend: 'Continuous Automatic Warning System (CAWS)', color: 'hsl(60, 100%, 40%)' } - { train_protection: 'cbtc', legend: 'Communications Based Train Control (CBTC)', color: 'hsl(336, 100%, 40%)' } - - { train_protection: 'crocodile', legend: 'Crocodile', color: 'pink' } - { train_protection: 'ebicab', legend: 'EBICAB', color: 'pink' } # portugal & bulgaria - - { train_protection: 'eevb', legend: 'Egyesített Éberségi és Vonatbefolyásoló Berendezés (EÉVB)', color: 'pink' } - { train_protection: 'etms', legend: 'Electronic Train Management System (ETMS)', color: 'hsl(48, 100%, 40%)' } - { train_protection: 'evm', legend: 'Elektronikus Vonatmegállító (EVM)', color: 'hsl(137, 100%, 40%)' } - - { train_protection: 'hkt', legend: 'HastighedsKontol og automatisk Togstop (HKT)', color: 'pink' } - - { train_protection: 'integra_signum', legend: 'Integra Signum', color: 'pink' } - { train_protection: 'itcs', legend: 'Incremental Train Control System (ITCS)', color: 'hsl(35, 100%, 40%)' } - { train_protection: 'ls', legend: 'Liniový Systém (LS)', color: 'hsl(319, 100%, 40%)' } - { train_protection: 'octys', legend: 'Open Control of Trains, Interchangeable & Integrated System (OCTYS)', color: 'hsl(360, 100%, 40%)' } - { train_protection: 'ouragan', legend: 'Offre Urbaine Renouvelée et Améliorée, Gérée par un Automatisme Nouveau (OURAGAN)', color: 'hsl(48, 100%, 40%)' } - { train_protection: 'sacem', legend: 'Système d''Aide à la Conduite, à l''Exploitation et à la Maintenance (SACEM)', color: 'hsl(190, 100%, 40%)' } - { train_protection: 'saet', legend: 'Système d''Automatisation de l''Exploitation des Trains (SAET)', color: 'hsl(305, 100%, 40%)' } - - { train_protection: 'selcab', legend: 'SELCAB', color: 'pink' } - { train_protection: 'shp', legend: 'Samoczynne Hamowanie Pociągu (SHP)', color: 'hsl(35, 100%, 40%)' } - { train_protection: 'ssc', legend: 'Sistema di Supporto alla Condotta (SSC)', color: 'hsl(155, 100%, 40%)' } - { train_protection: 'tasc', legend: '定位置停止装置 (TASC)', color: 'hsl(155, 100%, 40%)' } @@ -186,10 +177,6 @@ signals_railway_line: tags: - { tag: 'railway:integra_signum:ALSO', value: 'yes' } - - train_protection: ases - tags: - - { tag: 'railway:ases', value: 'yes' } - - train_protection: atp tags: - { tag: 'railway:atp', value: 'yes' } @@ -198,18 +185,6 @@ signals_railway_line: tags: - { tag: 'railway:aws', value: 'yes' } - - train_protection: bm - tags: - - { tag: 'railway:bm', values: ['yes', 'bmu', 'bmus', 'bmcv', 'bamu', 'bnmb', 'bmvu', 'bmvuse', 'blu', 'blus'] } - - - train_protection: bal - tags: - - { tag: 'railway:bal', value: 'yes' } - - - train_protection: bapr - tags: - - { tag: 'railway:bapr', value: 'yes' } - - train_protection: caws tags: - { tag: 'railway:caws', value: 'yes' } @@ -218,10 +193,6 @@ signals_railway_line: tags: - { tag: 'railway:cbtc', values: ['yes', 'uto', 'sto', 'dto'] } - - train_protection: crocodile - tags: - - { tag: 'railway:crocodile', value: 'yes' } - - train_protection: ctcs tags: - { tag: 'railway:ctcs', values: ['yes', '0', '1', '2', '3D', '4'] } @@ -230,10 +201,6 @@ signals_railway_line: tags: - { tag: 'railway:ebicab', values: ['yes', '700', '900'] } - - train_protection: eevb - tags: - - { tag: 'railway:eevb', value: 'yes' } - - train_protection: etms tags: - { tag: 'railway:etms', value: 'yes' } @@ -242,18 +209,6 @@ signals_railway_line: tags: - { tag: 'railway:evm', value: 'yes' } - - train_protection: hkt - tags: - - { tag: 'railway:hkt', value: 'yes' } - - - train_protection: hkt - tags: - - { tag: 'railway:f-hkt', value: 'yes' } - - - train_protection: integra_signum - tags: - - { tag: 'railway:integra_signum', value: 'yes' } - - train_protection: itcs tags: - { tag: 'railway:itcs', value: 'yes' } @@ -278,10 +233,6 @@ signals_railway_line: tags: - { tag: 'railway:saet', value: 'yes' } - - train_protection: selcab - tags: - - { tag: 'railway:selcab', value: 'yes' } - - train_protection: shp tags: - { tag: 'railway:shp', value: 'yes' } diff --git a/import/openrailwaymap.lua b/import/openrailwaymap.lua index 6043b48e..a849c689 100644 --- a/import/openrailwaymap.lua +++ b/import/openrailwaymap.lua @@ -529,7 +529,7 @@ function osm2pgsql.process_node(object) end end -local railway_values = osm2pgsql.make_check_values_func({'rail', 'tram', 'light_rail', 'subway', 'narrow_gauge', 'construction', 'preserved', 'monorail', 'miniature'}) +local railway_values = osm2pgsql.make_check_values_func({'rail', 'tram', 'light_rail', 'subway', 'narrow_gauge', 'disused', 'abandoned', 'razed', 'construction', 'proposed', 'preserved', 'monorail', 'miniature'}) local railway_turntable_values = osm2pgsql.make_check_values_func({'turntable', 'traverser'}) function osm2pgsql.process_way(object) local tags = object.tags diff --git a/import/sql/signals_with_azimuth.sql.js b/import/sql/signals_with_azimuth.sql.js index 9b7f52a3..cc2ffcbe 100644 --- a/import/sql/signals_with_azimuth.sql.js +++ b/import/sql/signals_with_azimuth.sql.js @@ -14,6 +14,7 @@ const sql = ` CREATE OR REPLACE VIEW signals_with_azimuth_view AS SELECT id, + osm_id, s.way as way, railway, ref, diff --git a/import/sql/tile_views.sql b/import/sql/tile_views.sql index 1ee5e7b1..e2d33ddf 100644 --- a/import/sql/tile_views.sql +++ b/import/sql/tile_views.sql @@ -3,6 +3,7 @@ CREATE OR REPLACE VIEW railway_line_high AS SELECT id, + osm_id, way, way_length, railway, @@ -69,6 +70,7 @@ CREATE OR REPLACE VIEW railway_line_high AS FROM (SELECT id, + osm_id, way, way_length, railway, @@ -136,6 +138,7 @@ CREATE OR REPLACE VIEW railway_line_low AS CREATE OR REPLACE VIEW standard_railway_text_stations_low AS SELECT id, + osm_id, way, railway_ref as label FROM stations_with_route_counts @@ -149,6 +152,7 @@ CREATE OR REPLACE VIEW standard_railway_text_stations_low AS CREATE OR REPLACE VIEW standard_railway_text_stations_med AS SELECT id, + osm_id, way, railway_ref as label FROM stations_with_route_counts @@ -161,6 +165,7 @@ CREATE OR REPLACE VIEW standard_railway_text_stations_med AS CREATE OR REPLACE VIEW standard_railway_text_stations AS SELECT id, + osm_id, way, railway, station, @@ -184,6 +189,7 @@ CREATE OR REPLACE VIEW standard_railway_text_stations AS FROM (SELECT id, + osm_id, way, railway, route_count, @@ -199,6 +205,7 @@ CREATE OR REPLACE VIEW standard_railway_text_stations AS CREATE OR REPLACE VIEW standard_railway_symbols AS SELECT id, + osm_id, way, CASE WHEN railway = 'crossing' THEN 'general/crossing' @@ -246,6 +253,7 @@ CREATE OR REPLACE VIEW standard_railway_symbols AS CREATE OR REPLACE VIEW railway_text_km AS SELECT id, + osm_id, way, railway, pos, @@ -254,6 +262,7 @@ CREATE OR REPLACE VIEW railway_text_km AS FROM (SELECT id, + osm_id, way, railway, COALESCE(railway_position, railway_pos_round(railway_position_exact, 1)::text) AS pos @@ -265,6 +274,7 @@ CREATE OR REPLACE VIEW railway_text_km AS CREATE OR REPLACE VIEW standard_railway_switch_ref AS SELECT id, + osm_id, way, railway, ref, @@ -278,6 +288,7 @@ CREATE OR REPLACE VIEW standard_railway_switch_ref AS CREATE OR REPLACE VIEW speed_railway_signals AS SELECT id, + osm_id, way, speed_feature as feature, speed_feature_type as type, @@ -315,6 +326,7 @@ CREATE OR REPLACE FUNCTION signals_signal_boxes(z integer, x integer, y integer) 4096, 64, true ) AS way, id, + osm_id, feature, ref, name @@ -327,6 +339,7 @@ CREATE OR REPLACE FUNCTION signals_signal_boxes(z integer, x integer, y integer) CREATE OR REPLACE VIEW signals_railway_signals AS SELECT id, + osm_id, way, railway, ref, @@ -344,6 +357,7 @@ CREATE OR REPLACE VIEW signals_railway_signals AS CREATE OR REPLACE VIEW electrification_signals AS SELECT id, + osm_id, way, electrification_feature as feature, azimuth, diff --git a/martin/configuration.yml b/martin/configuration.yml index fffc2a6b..2dd1e8e5 100644 --- a/martin/configuration.yml +++ b/martin/configuration.yml @@ -35,6 +35,7 @@ postgres: properties: # TODO calculate labels in frontend id: integer + osm_id: integer railway: string feature: string usage: string @@ -76,6 +77,7 @@ postgres: properties: # TODO calculate labels in frontend id: integer + osm_id: integer railway: string feature: string usage: string @@ -117,6 +119,7 @@ postgres: properties: # TODO calculate labels in frontend id: integer + osm_id: integer way_length: number railway: string feature: string @@ -160,6 +163,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer label: string standard_railway_text_stations_med: @@ -170,6 +174,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer label: string standard_railway_turntables: @@ -180,6 +185,7 @@ postgres: geometry_type: POLYGON properties: id: integer + osm_id: integer feature: string standard_railway_text_stations: @@ -190,6 +196,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer railway: string station: string label: string @@ -203,6 +210,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer feature: string railway_text_km: @@ -213,6 +221,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer railway: string pos: string pos_int: string @@ -226,6 +235,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer railway: string ref: string # TODO: rename local_operated @@ -241,6 +251,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer feature: string type: string ref: string @@ -257,6 +268,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer railway: string ref: string ref_multiline: string @@ -277,6 +289,7 @@ postgres: geometry_type: POINT properties: id: integer + osm_id: integer feature: string azimuth: number direction_both: boolean diff --git a/proxy/css/ui.css b/proxy/css/ui.css index 4be598a8..f7382ef8 100644 --- a/proxy/css/ui.css +++ b/proxy/css/ui.css @@ -37,7 +37,7 @@ body { height: 400px; width: 300px; - background: #fff; + background-color: rgba(var(--bs-body-bg-rgb), .9); border-radius: 4px; box-shadow: 0 0 0 2px rgba(0, 0, 0, .1); overflow-y: auto; @@ -47,40 +47,96 @@ body { height: 1400px; } -.maplibregl-ctrl-edit .maplibregl-ctrl-icon { - background-size: 24px; - background-image: url("data:image/svg+xml,%3Csvg width='800px' height='800px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.1213 2.70705C19.9497 1.53548 18.0503 1.53547 16.8787 2.70705L15.1989 4.38685L7.29289 12.2928C7.16473 12.421 7.07382 12.5816 7.02986 12.7574L6.02986 16.7574C5.94466 17.0982 6.04451 17.4587 6.29289 17.707C6.54127 17.9554 6.90176 18.0553 7.24254 17.9701L11.2425 16.9701C11.4184 16.9261 11.5789 16.8352 11.7071 16.707L19.5556 8.85857L21.2929 7.12126C22.4645 5.94969 22.4645 4.05019 21.2929 2.87862L21.1213 2.70705ZM18.2929 4.12126C18.6834 3.73074 19.3166 3.73074 19.7071 4.12126L19.8787 4.29283C20.2692 4.68336 20.2692 5.31653 19.8787 5.70705L18.8622 6.72357L17.3068 5.10738L18.2929 4.12126ZM15.8923 6.52185L17.4477 8.13804L10.4888 15.097L8.37437 15.6256L8.90296 13.5112L15.8923 6.52185ZM4 7.99994C4 7.44766 4.44772 6.99994 5 6.99994H10C10.5523 6.99994 11 6.55223 11 5.99994C11 5.44766 10.5523 4.99994 10 4.99994H5C3.34315 4.99994 2 6.34309 2 7.99994V18.9999C2 20.6568 3.34315 21.9999 5 21.9999H16C17.6569 21.9999 19 20.6568 19 18.9999V13.9999C19 13.4477 18.5523 12.9999 18 12.9999C17.4477 12.9999 17 13.4477 17 13.9999V18.9999C17 19.5522 16.5523 19.9999 16 19.9999H5C4.44772 19.9999 4 19.5522 4 18.9999V7.99994Z' fill='%23000000'/%3E%3C/svg%3E"); +/** Patch Maplibre GL to respect the page theme */ +#map-container .maplibregl-ctrl-group, +.maplibregl-ctrl-attrib.maplibregl-compact, +.maplibregl-ctrl-attrib a, +.maplibregl-ctrl-scale { + background: var(--bs-body-bg); + color: var(--bs-body-color); +} +.maplibregl-ctrl-scale { + background: rgba(var(--bs-body-bg-rgb), 0.8); + color: var(--bs-body-color); +} +[data-bs-theme="dark"] .maplibregl-ctrl-scale { + border-top-color: var(--bs-border-color); + border-right-color: var(--bs-light); + border-left-color: var(--bs-light); + border-bottom-color: var(--bs-light); +} +[data-bs-theme="dark"] .maplibregl-ctrl-attrib.maplibregl-compact-show .maplibregl-ctrl-attrib-button { + background-color: var(--bs-light); } -.maplibregl-ctrl-configuration .maplibregl-ctrl-icon { - background-size: 24px; - background-image: url("data:image/svg+xml,%3Csvg width='800' height='800' viewBox='0 0 200 200' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M36.5 75C41 89.5 54 100 70 100s29-10.5 33.5-25H170a10 10 0 0 0 0-20h-66.5C99 40.5 86 30 70 30S41 40.5 36.5 55H25a10 10 0 0 0 0 20ZM70 50a15 15 0 1 1-15 15 14.73 14.73 0 0 1 15-15Zm105 75h-11.5c-4.5-14.5-17.5-25-33.5-25s-29 10.5-33.5 25H30a10 10 0 0 0 0 20h66.5c4.5 14.5 17.5 25 33.5 25s29-10.5 33.5-25H175a10 10 0 0 0 0-20Zm-45 25a15 15 0 1 1 15-15 14.73 14.73 0 0 1-15 15Z'/%3E%3C/svg%3E"); -} -.maplibregl-ctrl-group button.maplibregl-ctrl-search { + +.maplibregl-ctrl-group button.maplibregl-ctrl-search, +.maplibregl-ctrl-group button.maplibregl-ctrl-legend { padding: 4px; width: auto; + font-size: 1rem; } -.maplibregl-ctrl-group button.maplibregl-ctrl-search .maplibregl-ctrl-icon { - background-size: contain; - background-image: url("data:image/svg+xml,%3Csvg width='800px' height='800px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.9536 14.9458L21 21M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z' stroke='%23000000' stroke-width='2.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); - background-position-x: left; -} -.maplibregl-ctrl-group button.maplibregl-ctrl-search .maplibregl-ctrl-icon span { - margin-left: 1.5rem; - font-size: 16px; + +.maplibregl-ctrl-group button.maplibregl-ctrl-search .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-legend .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-compass .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-edit .maplibregl-ctrl-icon, +.maplibregl-ctrl-group button.maplibregl-ctrl-configuration .maplibregl-ctrl-icon { + background-image: none; + background-color: var(--bs-body-color); + mask-size: contain; + mask-position: center; + display: inline-block; + vertical-align: top; } -.maplibregl-ctrl-group button.maplibregl-ctrl-legend { - padding: 4px; - width: auto; +.maplibregl-ctrl-group button.maplibregl-ctrl-search .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml,%3Csvg width='800px' height='800px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M14.9536 14.9458L21 21M17 10C17 13.866 13.866 17 10 17C6.13401 17 3 13.866 3 10C3 6.13401 6.13401 3 10 3C13.866 3 17 6.13401 17 10Z' stroke='%23000000' stroke-width='2.7' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E"); + width: 1.5rem; + height: 1.4rem; } .maplibregl-ctrl-group button.maplibregl-ctrl-legend .maplibregl-ctrl-icon { - background-size: contain; - background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg fill='%23000000' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 52 52' enable-background='new 0 0 52 52' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M26.7,42.8c0.8,0,1.5,0.7,1.5,1.5v3.2c0,0.8-0.7,1.5-1.5,1.5h-3.2c-0.8,0-1.5-0.7-1.5-1.5v-3.2 c0-0.8,0.7-1.5,1.5-1.5H26.7z'/%3E%3Cpath d='M28.2,35.1c0-2.1,1.3-4,3.1-4.8h0.1c5.2-2.1,8.8-7.2,8.8-13.2c0-7.8-6.4-14.2-14.2-14.2 c-7.2,0-13.2,5.3-14.2,12.2v0.1c-0.1,0.9,0.6,1.6,1.5,1.6h3.2c0.8,0,1.4-0.5,1.5-1.1v-0.2c0.7-3.7,4-6.5,7.9-6.5 c4.5,0,8.1,3.6,8.1,8.1c0,2.1-0.8,4-2.1,5.5l-0.1,0.1c-0.9,1-2.1,1.6-3.3,2c-4,1.4-6.7,5.2-6.7,9.4v1.5c0,0.8,0.6,1.4,1.4,1.4h3.2 c0.8,0,1.6-0.6,1.6-1.5L28.2,35.1z'/%3E%3C/g%3E%3C/svg%3E"); - background-position-x: left; -} -.maplibregl-ctrl-group button.maplibregl-ctrl-legend .maplibregl-ctrl-icon span { - margin-left: 1.5rem; - font-size: 16px; + mask-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg fill='%23000000' xmlns='http://www.w3.org/2000/svg' viewBox='0 0 52 52' enable-background='new 0 0 52 52' xml:space='preserve'%3E%3Cg%3E%3Cpath d='M26.7,42.8c0.8,0,1.5,0.7,1.5,1.5v3.2c0,0.8-0.7,1.5-1.5,1.5h-3.2c-0.8,0-1.5-0.7-1.5-1.5v-3.2 c0-0.8,0.7-1.5,1.5-1.5H26.7z'/%3E%3Cpath d='M28.2,35.1c0-2.1,1.3-4,3.1-4.8h0.1c5.2-2.1,8.8-7.2,8.8-13.2c0-7.8-6.4-14.2-14.2-14.2 c-7.2,0-13.2,5.3-14.2,12.2v0.1c-0.1,0.9,0.6,1.6,1.5,1.6h3.2c0.8,0,1.4-0.5,1.5-1.1v-0.2c0.7-3.7,4-6.5,7.9-6.5 c4.5,0,8.1,3.6,8.1,8.1c0,2.1-0.8,4-2.1,5.5l-0.1,0.1c-0.9,1-2.1,1.6-3.3,2c-4,1.4-6.7,5.2-6.7,9.4v1.5c0,0.8,0.6,1.4,1.4,1.4h3.2 c0.8,0,1.6-0.6,1.6-1.5L28.2,35.1z'/%3E%3C/g%3E%3C/svg%3E"); + width: 1.5rem; + height: 1.4rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-in .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5'/%3E%3C/svg%3E"); + width: 1.8rem; + height: 1.8rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-zoom-out .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13z'/%3E%3C/svg%3E"); + width: 1.8rem; + height: 1.8rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-compass .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='m10.5 14 4-8 4 8z'/%3E%3Cpath fill='%23ccc' d='m10.5 16 4 8 4-8z'/%3E%3C/svg%3E"); + width: 1.8rem; + height: 1.8rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-fullscreen .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 29 29'%3E%3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1z'/%3E%3C/svg%3E"); + width: 1.8rem; + height: 1.8rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-geolocate .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='29' height='29' fill='%23333' viewBox='0 0 20 20'%3E%3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1m0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7'/%3E%3Ccircle cx='10' cy='10' r='2'/%3E%3C/svg%3E"); + width: 1.8rem; + height: 1.8rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-edit .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml,%3Csvg width='800px' height='800px' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M21.1213 2.70705C19.9497 1.53548 18.0503 1.53547 16.8787 2.70705L15.1989 4.38685L7.29289 12.2928C7.16473 12.421 7.07382 12.5816 7.02986 12.7574L6.02986 16.7574C5.94466 17.0982 6.04451 17.4587 6.29289 17.707C6.54127 17.9554 6.90176 18.0553 7.24254 17.9701L11.2425 16.9701C11.4184 16.9261 11.5789 16.8352 11.7071 16.707L19.5556 8.85857L21.2929 7.12126C22.4645 5.94969 22.4645 4.05019 21.2929 2.87862L21.1213 2.70705ZM18.2929 4.12126C18.6834 3.73074 19.3166 3.73074 19.7071 4.12126L19.8787 4.29283C20.2692 4.68336 20.2692 5.31653 19.8787 5.70705L18.8622 6.72357L17.3068 5.10738L18.2929 4.12126ZM15.8923 6.52185L17.4477 8.13804L10.4888 15.097L8.37437 15.6256L8.90296 13.5112L15.8923 6.52185ZM4 7.99994C4 7.44766 4.44772 6.99994 5 6.99994H10C10.5523 6.99994 11 6.55223 11 5.99994C11 5.44766 10.5523 4.99994 10 4.99994H5C3.34315 4.99994 2 6.34309 2 7.99994V18.9999C2 20.6568 3.34315 21.9999 5 21.9999H16C17.6569 21.9999 19 20.6568 19 18.9999V13.9999C19 13.4477 18.5523 12.9999 18 12.9999C17.4477 12.9999 17 13.4477 17 13.9999V18.9999C17 19.5522 16.5523 19.9999 16 19.9999H5C4.44772 19.9999 4 19.5522 4 18.9999V7.99994Z' fill='%23000000'/%3E%3C/svg%3E"); + width: 1.5rem; + height: 1.4rem; +} +.maplibregl-ctrl-group button.maplibregl-ctrl-configuration .maplibregl-ctrl-icon { + mask-image: url("data:image/svg+xml,%3Csvg width='800' height='800' viewBox='0 0 200 200' data-name='Layer 1' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M36.5 75C41 89.5 54 100 70 100s29-10.5 33.5-25H170a10 10 0 0 0 0-20h-66.5C99 40.5 86 30 70 30S41 40.5 36.5 55H25a10 10 0 0 0 0 20ZM70 50a15 15 0 1 1-15 15 14.73 14.73 0 0 1 15-15Zm105 75h-11.5c-4.5-14.5-17.5-25-33.5-25s-29 10.5-33.5 25H30a10 10 0 0 0 0 20h66.5c4.5 14.5 17.5 25 33.5 25s29-10.5 33.5-25H175a10 10 0 0 0 0-20Zm-45 25a15 15 0 1 1 15-15 14.73 14.73 0 0 1-15 15Z'/%3E%3C/svg%3E"); + width: 1.5rem; + height: 1.4rem; } .maplibregl-ctrl.maplibregl-ctrl-attrib.maplibregl-compact { diff --git a/proxy/index.html b/proxy/index.html index 329100d0..a94d19c7 100644 --- a/proxy/index.html +++ b/proxy/index.html @@ -27,7 +27,7 @@