[Git][debian-gis-team/openstreetmap-carto][master] 4 commits: New upstream version 5.9.0

Bas Couwenberg (@sebastic) gitlab at salsa.debian.org
Thu Oct 17 23:42:22 BST 2024



Bas Couwenberg pushed to branch master at Debian GIS Project / openstreetmap-carto


Commits:
ee95d6c1 by Bas Couwenberg at 2024-10-17T17:59:13+02:00
New upstream version 5.9.0
- - - - -
6914a3c1 by Bas Couwenberg at 2024-10-17T17:59:20+02:00
Update upstream source from tag 'upstream/5.9.0'

Update to upstream version '5.9.0'
with Debian dir 5b7fe231fb26a00fbc4343afa3f51b5bcdabd227
- - - - -
3a3d45d1 by Bas Couwenberg at 2024-10-17T17:59:56+02:00
New upstream release.

- - - - -
20ea0a91 by Bas Couwenberg at 2024-10-17T18:01:26+02:00
Set distribution to unstable.

- - - - -


13 changed files:

- .github/workflows/ci.yml
- CHANGELOG.md
- CONTRIBUTING.md
- INSTALL.md
- debian/changelog
- + functions.sql
- project.mml
- style/amenity-points.mss
- style/buildings.mss
- style/landcover.mss
- style/roads.mss
- + symbols/leisure/dance.svg
- + symbols/shop/hearing_aids.svg


Changes:

=====================================
.github/workflows/ci.yml
=====================================
@@ -65,6 +65,8 @@ jobs:
         osm2pgsql -G --hstore --style openstreetmap-carto.style --tag-transform-script openstreetmap-carto.lua -d gis -r xml <(echo '<osm version="0.6"/>')
     - name: Create indexes
       run: psql -1Xq -v ON_ERROR_STOP=1 -d gis -f indexes.sql
+    - name: Load functions
+      run: psql -1Xq -v ON_ERROR_STOP=1 -d gis -f functions.sql
     - name: Load empty shapefiles
       run: scripts/get-external-data.py --no-update --cache -D scripts/empty_files
     - name: Test queries are valid


=====================================
CHANGELOG.md
=====================================
@@ -1,4 +1,14 @@
-## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v5.8.0...master)
+## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v5.9.0...master)
+
+## [v5.9.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v5.8.0...v5.9.0) - 2024-10-17
+### Changes
+- Adding rendering of shop=hearing_aids with a dedicated symbol (#4909)
+- Restoring rendering of name labels for natural=reef (#4918)
+- Adding rendering of lines with barrier=jersey_barrier (#4923)
+- Removing rendering of railway=preserved in favor of interpreting railway:preserved=yes on other railway=* (#4965)
+- Removing rendering of shop=jewellery as synonym for shop=jewelry (#4988)
+- Adding rendering of leisure=dance with a point symbol and label (#4996)
+- Interpretation of transport mode specific access tags on roads/paths (#4952)
 
 ## [v5.8.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v5.7.0...v5.8.0) - 2023-11-26
 ### Changes


=====================================
CONTRIBUTING.md
=====================================
@@ -116,6 +116,27 @@ instead of
   }
 }
 ```
+* Use the PostgreSQL quoting syntax for attributes (columns) and string-values of selectors.
+  Use no quotes or double quotes for attributes (columns) and single quotes for string-values.
+  For Example:
+
+```mss
+#layer[entrance = 'yes'] {
+  marker-width: 6.0;
+}
+#layer["generator:source" = 'wind'] {
+  marker-width: 8.0;
+}
+```
+instead of
+```mss
+#layer[entrance = "yes"] {
+  marker-width: 6.0;
+}
+#layer['generator:source' = 'wind'] {
+  marker-width: 8.0;
+}
+```
 
 ## SQL style guidelines
 Because SQL within JSON or YAML will not generally be syntax highlighted, indentation and caps are particularly important.


=====================================
INSTALL.md
=====================================
@@ -47,6 +47,13 @@ The indexes can be created in parallel with
 scripts/indexes.py -0 | xargs -0 -P0 -I{} psql -d gis -c "{}"
 ```
 
+### Database functions
+Some functions need to be loaded into the database for current versions. These can be added / re-loaded at any point using:
+
+```sh
+psql -d gis -f functions.sql
+```
+
 ## Scripted download
 Some features are rendered using preprocessed shapefiles.
 


=====================================
debian/changelog
=====================================
@@ -1,11 +1,12 @@
-openstreetmap-carto (5.8.0-2) UNRELEASED; urgency=medium
+openstreetmap-carto (5.9.0-1) unstable; urgency=medium
 
   * Team upload.
+  * New upstream release.
   * Include patterns & style directories too.
     (closes: #1067497)
   * Bump Standards-Version to 4.7.0, no changes.
 
- -- Bas Couwenberg <sebastic at debian.org>  Fri, 22 Mar 2024 15:32:52 +0100
+ -- Bas Couwenberg <sebastic at debian.org>  Thu, 17 Oct 2024 18:01:03 +0200
 
 openstreetmap-carto (5.8.0-1) unstable; urgency=medium
 


=====================================
functions.sql
=====================================
@@ -0,0 +1,74 @@
+/* Additional database functions for openstreetmap-carto */
+
+/* Access functions below adapted from https://github.com/imagico/osm-carto-alternative-colors/tree/591c861112b4e5d44badd108f4cd1409146bca0b/sql/roads.sql */
+
+/* Simplified 'yes', 'destination', 'no', 'unrecognised', NULL scale for access restriction 
+  'no' is returned if the rendering for highway category does not support 'restricted'.
+  NULL is functionally equivalent to 'yes', but indicates the absence of a restriction 
+  rather than a positive access = yes. 'unrecognised' corresponds to an uninterpretable 
+  access restriction e.g. access=unknown or motorcar=occasionally */
+CREATE OR REPLACE FUNCTION carto_int_access(accessvalue text, allow_restricted boolean)
+	RETURNS text
+	LANGUAGE SQL
+	IMMUTABLE PARALLEL SAFE
+AS $$
+SELECT
+	CASE
+		WHEN accessvalue IN ('yes', 'designated', 'permissive') THEN 'yes'
+		WHEN accessvalue IN ('destination',  'delivery', 'customers') THEN
+			CASE WHEN allow_restricted = TRUE  THEN 'restricted' ELSE 'yes' END
+		WHEN accessvalue IN ('no', 'permit', 'private', 'agricultural', 'forestry', 'agricultural;forestry') THEN 'no'
+		WHEN accessvalue IS NULL THEN NULL
+		ELSE 'unrecognised'
+	END
+$$;
+
+/* Try to promote path to cycleway (if bicycle allowed), then bridleway (if horse)
+   This duplicates existing behaviour where designated access is required */
+CREATE OR REPLACE FUNCTION carto_path_type(bicycle text, horse text)
+	RETURNS text
+	LANGUAGE SQL
+	IMMUTABLE PARALLEL SAFE
+AS $$
+SELECT
+	CASE
+		WHEN bicycle IN ('designated') THEN 'cycleway'
+		WHEN horse IN ('designated') THEN 'bridleway'
+		ELSE 'path'
+	END
+$$;
+
+/* Return int_access value which will be used to determine access marking.
+   Return values are documented above for carto_int_access function.
+
+   Note that the code handling the promotion of highway=path assumes that
+   promotion to cycleway or bridleway is based on the value of bicycle or
+   horse respectively. A more general formulation would be, for example,
+   WHEN 'cycleway' THEN carto_int_access(COALESCE(NULLIF(bicycle, 'unknown'), "access"), FALSE) */
+CREATE OR REPLACE FUNCTION carto_highway_int_access(highway text, "access" text, foot text, bicycle text, horse text, motorcar text, motor_vehicle text, vehicle text)
+  RETURNS text
+  LANGUAGE SQL
+  IMMUTABLE PARALLEL SAFE
+AS $$
+SELECT
+	CASE
+		WHEN highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary',
+					 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'unclassified', 'living_street', 'service', 'road') THEN
+			carto_int_access(
+				COALESCE(
+					NULLIF(motorcar, 'unknown'),
+					NULLIF(motor_vehicle, 'unknown'),
+					NULLIF(vehicle, 'unknown'),
+					"access"), TRUE)
+		WHEN highway = 'path' THEN
+			CASE carto_path_type(bicycle, horse)
+				WHEN 'cycleway' THEN carto_int_access(bicycle, FALSE)
+				WHEN 'bridleway' THEN carto_int_access(horse, FALSE)
+				ELSE carto_int_access(COALESCE(NULLIF(foot, 'unknown'), "access"), FALSE)
+			END
+		WHEN highway IN ('pedestrian', 'footway', 'steps') THEN carto_int_access(COALESCE(NULLIF(foot, 'unknown'), "access"), FALSE)
+		WHEN highway = 'cycleway' THEN carto_int_access(COALESCE(NULLIF(bicycle, 'unknown'), "access"), FALSE)
+		WHEN highway = 'bridleway' THEN carto_int_access(COALESCE(NULLIF(horse, 'unknown'), "access"), FALSE)
+		ELSE carto_int_access("access", TRUE)
+	END
+$$;


=====================================
project.mml
=====================================
@@ -444,32 +444,25 @@ Layer:
         (SELECT
             way,
             (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_link') THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
             tracktype,
             int_surface,
-            access,
+            int_access,
             construction,
             service,
             link,
+            preserved,
             layernotnull
           FROM ( -- subselect that contains both roads and rail
             SELECT
                 way,
-                'highway_' || highway AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
+                'highway_' || (CASE WHEN highway = 'path' THEN carto_path_type(bicycle, horse) ELSE highway END) AS feature,
                 tracktype,
                 CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
                                       'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay', 'ice', 'snow') THEN 'unpaved'
                   WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
                                       'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved'
                 END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                carto_highway_int_access(highway, access, foot, bicycle, horse, tags->'motorcar', tags->'motor_vehicle', tags->'vehicle') AS int_access,
                 construction,
                 CASE
                   WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
@@ -479,6 +472,7 @@ Layer:
                   WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes'
                   ELSE 'no'
                 END AS link,
+                'no' as preserved,
                 COALESCE(layer,0) AS layernotnull,
                 z_order
               FROM planet_osm_line
@@ -487,22 +481,20 @@ Layer:
             UNION ALL
             SELECT
                 way,
-                'railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text
+                'railway_' || (CASE
                                  WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
                                  WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service'
                                  ELSE railway END) AS feature,
-                horse,
-                foot,
-                bicycle,
                 tracktype,
                 'null',
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                NULL,
                 construction,
                 CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
                 'no' AS link,
+                (CASE
+                  WHEN tags->'railway:preserved' = 'yes' THEN 'yes'
+                  ELSE 'no'
+                END) AS preserved,
                 COALESCE(layer,0) AS layernotnull,
                 z_order
               FROM planet_osm_line
@@ -513,8 +505,8 @@ Layer:
             layernotnull,
             z_order,
             CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END,
-            CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN feature IN ('railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
+            CASE int_access WHEN 'no' THEN 0 WHEN 'restricted' THEN 1 ELSE 2 END,
             CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 1 END
         ) AS tunnels
     properties:
@@ -570,7 +562,7 @@ Layer:
                   WHERE way && !bbox!
                 ) _
               WHERE barrier IN ('chain', 'city_wall', 'ditch', 'fence', 'guard_rail',
-                  'handrail', 'hedge', 'retaining_wall', 'wall')
+                  'handrail', 'hedge', 'retaining_wall', 'wall', 'jersey_barrier')
               OR historic = 'citywalls'
               AND (waterway IS NULL OR waterway NOT IN ('river', 'canal', 'stream', 'drain', 'ditch'))
           ) AS features
@@ -681,32 +673,25 @@ Layer:
         (SELECT
             way,
             (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_link') THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
             tracktype,
             int_surface,
-            access,
+            int_access,
             construction,
             service,
             link,
+            preserved,
             layernotnull
           FROM ( -- subselect that contains both roads and rail/aero
             SELECT
                 way,
-                ('highway_' || highway) AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
+                'highway_' || (CASE WHEN highway = 'path' THEN carto_path_type(bicycle, horse) ELSE highway END) AS feature,
                 tracktype,
                 CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
                                       'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay', 'ice', 'snow') THEN 'unpaved'
                   WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
                                       'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved'
                 END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                carto_highway_int_access(highway, access, foot, bicycle, horse, tags->'motorcar', tags->'motor_vehicle', tags->'vehicle') AS int_access,
                 construction,
                 CASE
                   WHEN service IN ('parking_aisle', 'drive-through', 'driveway') OR leisure IN ('slipway') THEN 'INT-minor'::text
@@ -716,6 +701,7 @@ Layer:
                   WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes'
                   ELSE 'no'
                 END AS link,
+                'no' AS preserved,
                 COALESCE(layer,0) AS layernotnull,
                 osm_id,
                 z_order
@@ -727,13 +713,10 @@ Layer:
             UNION ALL
             SELECT
                 way,
-                ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text
-                                     WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
-                                     WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service'
-                                     ELSE railway END)) AS feature,
-                horse,
-                foot,
-                bicycle,
+                'railway_' || (CASE
+                                 WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
+                                 WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service'
+                                 ELSE railway END) AS feature,
                 tracktype,
                 CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
                                       'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay', 'ice', 'snow') THEN 'unpaved'
@@ -741,13 +724,14 @@ Layer:
                                       'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved'
                   ELSE NULL
                 END AS int_surface,
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                NULL,
                 construction,
                 CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') OR leisure IN ('slipway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
                 'no' AS link,
+                (CASE
+                  WHEN tags->'railway:preserved' = 'yes' THEN 'yes'
+                  ELSE 'no'
+                END) AS preserved,
                 COALESCE(layer,0) AS layernotnull,
                 osm_id,
                 z_order
@@ -762,8 +746,8 @@ Layer:
             layernotnull,
             z_order,
             CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END,
-            CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN feature IN ('railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
+            CASE int_access WHEN 'no' THEN 0 WHEN 'restricted' THEN 1 ELSE 2 END,
             CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 1 END,
             osm_id
         ) AS roads_sql
@@ -860,8 +844,7 @@ Layer:
             COALESCE(
               ('highway_' || (CASE WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link')
                                      THEN substr(highway, 0, length(highway)-4) ELSE highway end)),
-              ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
-                                   WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway END))
+              ('railway_' || railway)
             ) AS feature,
             CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel,
             CASE WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes' ELSE 'no' END AS link,
@@ -872,7 +855,8 @@ Layer:
             END AS int_surface
           FROM planet_osm_roads
           WHERE highway IS NOT NULL
-            OR (railway IS NOT NULL AND railway != 'preserved'
+            OR (railway IN ('rail', 'light_rail', 'funicular', 'narrow_gauge')
+              AND (tags->'railway:preserved' IS NULL OR tags->'railway:preserved' != 'yes')
               AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard')))
           ORDER BY
             z_order
@@ -913,32 +897,25 @@ Layer:
         (SELECT
             way,
             (CASE WHEN feature IN ('highway_motorway_link', 'highway_trunk_link', 'highway_primary_link', 'highway_secondary_link', 'highway_tertiary_link') THEN substr(feature, 0, length(feature)-4) ELSE feature END) AS feature,
-            horse,
-            foot,
-            bicycle,
             tracktype,
             int_surface,
-            access,
+            int_access,
             construction,
             service,
             link,
+            preserved,
             layernotnull
           FROM ( -- subselect that contains both roads and rail/aero
             SELECT
                 way,
-                'highway_' || highway AS feature, --only motorway to tertiary links are accepted later on
-                horse,
-                foot,
-                bicycle,
+                'highway_' || (CASE WHEN highway = 'path' THEN carto_path_type(bicycle, horse) ELSE highway END) AS feature,
                 tracktype,
                 CASE WHEN surface IN ('unpaved', 'compacted', 'dirt', 'earth', 'fine_gravel', 'grass', 'grass_paver', 'gravel', 'ground',
                                       'mud', 'pebblestone', 'salt', 'sand', 'woodchips', 'clay', 'ice', 'snow') THEN 'unpaved'
                   WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes',
                                       'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved'
                 END AS int_surface,
-                CASE WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                carto_highway_int_access(highway, access, foot, bicycle, horse, tags->'motorcar', tags->'motor_vehicle', tags->'vehicle') AS int_access,
                 construction,
                 CASE
                   WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
@@ -948,6 +925,7 @@ Layer:
                   WHEN highway IN ('motorway_link', 'trunk_link', 'primary_link', 'secondary_link', 'tertiary_link') THEN 'yes'
                   ELSE 'no'
                 END AS link,
+                'no' AS preserved,
                 COALESCE(layer,0) AS layernotnull,
                 z_order
               FROM planet_osm_line
@@ -956,22 +934,20 @@ Layer:
             UNION ALL
             SELECT
                 way,
-                'railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text
+                'railway_' || (CASE
                                  WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
                                  WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service'
                                  ELSE railway END) AS feature,
-                horse,
-                foot,
-                bicycle,
                 tracktype,
                 'null',
-                CASE
-                  WHEN access IN ('destination') THEN 'destination'::text
-                  WHEN access IN ('no', 'private') THEN 'no'::text
-                END AS access,
+                NULL,
                 construction,
                 CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
                 'no' AS link,
+                (CASE
+                  WHEN tags->'railway:preserved' = 'yes' THEN 'yes'
+                  ELSE 'no'
+                END) AS preserved,
                 COALESCE(layer,0) AS layernotnull,
                 z_order
               FROM planet_osm_line
@@ -982,8 +958,8 @@ Layer:
             layernotnull,
             z_order,
             CASE WHEN substring(feature for 8) = 'railway_' THEN 2 ELSE 1 END,
-            CASE WHEN feature IN ('railway_INT-preserved-ssy', 'railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
-            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END,
+            CASE WHEN feature IN ('railway_INT-spur-siding-yard', 'railway_tram-service') THEN 0 ELSE 1 END,
+            CASE int_access WHEN 'no' THEN 0 WHEN 'restricted' THEN 1 ELSE 2 END,
             CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 1 END
         ) AS bridges
     properties:
@@ -1578,7 +1554,7 @@ Layer:
                 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' END,
                 'emergency_' || CASE WHEN tags->'emergency' IN ('phone') AND way_area IS NULL THEN tags->'emergency' END,
                 'shop' || CASE WHEN shop IN ('yes', 'no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE '' END,
-                'leisure_' || CASE WHEN leisure IN ('amusement_arcade', 'beach_resort', 'bird_hide', 'bowling_alley', 'dog_park', 'firepit', 'fishing',
+                'leisure_' || CASE WHEN leisure IN ('amusement_arcade', 'beach_resort', 'bird_hide', 'bowling_alley', 'dance', 'dog_park', 'firepit', 'fishing',
                                                     'fitness_centre', 'fitness_station', 'garden', 'golf_course', 'ice_rink', 'marina', 'miniature_golf',
                                                     'outdoor_seating', 'park', 'picnic_table', 'pitch', 'playground',
                                                     'sauna', 'slipway', 'sports_centre', 'stadium', 'swimming_area', 'swimming_pool', 'track', 'water_park') THEN leisure END,
@@ -1592,7 +1568,7 @@ Layer:
                                                     'construction', 'salt_pond', 'military', 'plant_nursery') THEN landuse END,
                 'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'cave_entrance') AND way_area IS NULL THEN "natural" END,
                 'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath',
-                                                      'grassland', 'scrub', 'beach', 'glacier', 'tree', 'strait', 'cape')
+                                                      'grassland', 'scrub', 'beach', 'glacier', 'tree', 'strait', 'cape', 'reef')
                                                       THEN "natural" END,
                 'mountain_pass' || CASE WHEN tags->'mountain_pass' IN ('yes') THEN '' END, -- after natural=saddle to give priority to that tag on the same node
                 'waterway_' || CASE WHEN "waterway" IN ('waterfall') AND way_area IS NULL THEN waterway END,
@@ -1667,12 +1643,12 @@ Layer:
                                 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fabric', 'fishmonger', 'florist',
                                 'garden_centre', 'hairdresser', 'hifi', 'car', 'car_repair', 'bicycle', 'mall', 'pet',
                                 'photo', 'photo_studio', 'photography', 'seafood', 'shoes', 'alcohol', 'gift', 'furniture', 'kiosk',
-                                'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery',
+                                'mobile_phone', 'motorcycle', 'musical_instrument', 'newsagent', 'optician', 'jewelry',
                                 'electronics', 'chemist', 'toys', 'travel_agency', 'car_parts', 'greengrocer', 'farm', 'stationery',
                                 'laundry', 'dry_cleaning', 'beverages', 'perfumery', 'cosmetics', 'variety_store', 'wine', 'outdoor',
                                 'copyshop', 'sports', 'deli', 'tobacco', 'art', 'tea', 'coffee', 'tyres', 'pastry', 'chocolate',
                                 'music', 'medical_supply', 'dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand',
-                                'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop
+                                'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale', 'hearing_aids') THEN shop
                                 ELSE 'other' END AS shop,
               CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building,
               tags->'operator' AS operator,
@@ -1923,8 +1899,7 @@ Layer:
             CASE
               WHEN oneway IN ('yes', '-1') THEN oneway
               WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
-            END AS oneway,
-            horse, bicycle
+            END AS oneway
           FROM planet_osm_line l
           WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary',
                             'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction')
@@ -1949,15 +1924,13 @@ Layer:
       table: |-
         (SELECT
             way,
-            highway,
+            CASE WHEN highway = 'path' THEN carto_path_type(bicycle, horse) ELSE highway END AS highway,
             construction,
             name,
             CASE
               WHEN oneway IN ('yes', '-1') THEN oneway
               WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
-            END AS oneway,
-            horse,
-            bicycle
+            END AS oneway
           FROM planet_osm_line
           WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps', 'construction')
             AND (name IS NOT NULL
@@ -1975,17 +1948,22 @@ Layer:
       table: |-
         (SELECT
             way,
-            CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text
-                 WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
-                 WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service' ELSE railway END AS railway,
+            CASE
+              WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard'
+              WHEN (railway = 'tram' AND service IN ('spur', 'siding', 'yard')) THEN 'tram-service'
+              ELSE railway
+            END AS railway,
             CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,
             tags->'highspeed' as highspeed,
             tags->'usage' as usage,
             construction,
-            name
+            name,
+            (CASE
+              WHEN tags->'railway:preserved' = 'yes' THEN 'yes'
+              ELSE 'no'
+            END) AS preserved
           FROM planet_osm_line l
-          WHERE railway IN ('rail', 'subway', 'narrow_gauge', 'light_rail', 'preserved', 'funicular',
-                            'monorail', 'miniature', 'tram', 'disused', 'construction')
+          WHERE railway IN ('rail', 'subway', 'narrow_gauge', 'light_rail', 'funicular', 'monorail', 'miniature', 'tram', 'disused', 'construction')
             AND (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
             AND highway IS NULL -- Prevent duplicate rendering
             AND name IS NOT NULL


=====================================
style/amenity-points.mss
=====================================
@@ -1090,6 +1090,10 @@
       marker-file: url('symbols/shop/optician.svg');
     }
 
+    [shop = 'hearing_aids'][zoom >= 18] {
+      marker-file: url('symbols/shop/hearing_aids.svg');
+    }
+
     [shop = 'outdoor'][zoom >= 18] {
       marker-file: url('symbols/shop/outdoor.svg');
     }
@@ -1134,8 +1138,7 @@
       }
     }
 
-    [shop = 'jewelry'],
-    [shop = 'jewellery'] {
+    [shop = 'jewelry'] {
       [zoom >= 18] {
         marker-file: url('symbols/shop/jewelry.svg');
       }
@@ -1338,6 +1341,12 @@
      marker-clip: false;
   }
 
+  [feature = 'leisure_dance'][zoom >= 17] {
+     marker-file: url('symbols/leisure/dance.svg');
+     marker-fill: @leisure-green;
+     marker-clip: false;
+  }
+
   // Slipway tagging on points - slipway on lines is defined later
   [feature = 'leisure_slipway'][zoom >= 17] {
     marker-file: url('symbols/leisure/slipway.svg');
@@ -1357,10 +1366,10 @@
     marker-fill: @airtransport;
   }
 
-  [feature = 'aeroway_aerodrome']['int_access' = 'yes']['icao' != null]['iata' != null][zoom >= 10][zoom < 17],
-  [feature = 'aeroway_aerodrome']['int_access' = 'restricted'][zoom >= 12][zoom < 18],
-  [feature = 'aeroway_aerodrome']['icao' = null][zoom >= 12][zoom < 18],
-  [feature = 'aeroway_aerodrome']['iata' = null][zoom >= 12][zoom < 18] {
+  [feature = 'aeroway_aerodrome'][int_access = 'yes'][icao != null][iata != null][zoom >= 10][zoom < 17],
+  [feature = 'aeroway_aerodrome'][int_access = 'restricted'][zoom >= 12][zoom < 18],
+  [feature = 'aeroway_aerodrome'][icao = null][zoom >= 12][zoom < 18],
+  [feature = 'aeroway_aerodrome'][iata = null][zoom >= 12][zoom < 18] {
     [way_pixels <= 192000],
     [way_pixels = null] {
       marker-file: url('symbols/amenity/aerodrome.svg');
@@ -1433,7 +1442,7 @@
     marker-clip: false;
   }
 
-  [feature = 'power_generator']['generator:source' = 'wind'] {
+  [feature = 'power_generator']["generator:source" = 'wind'] {
     [zoom >= 15][location != 'rooftop'][location != 'roof'],
     [zoom >= 15][location = null],
     [zoom >= 19] {
@@ -1717,7 +1726,8 @@
     text-halo-fill: @standard-halo-fill;
   }
 
-  [feature = 'leisure_sauna'][zoom >= 17] {
+  [feature = 'leisure_sauna'][zoom >= 17],
+  [feature = 'leisure_dance'][zoom >= 17] {
     text-name: "[name]";
     text-size: @standard-font-size;
     text-wrap-width: @standard-wrap-width;
@@ -1910,9 +1920,9 @@
     }
   }
 
-  [feature = 'power_generator']['generator:source' = 'wind'][location != 'rooftop'][location != 'roof'][zoom >= 17],
-  [feature = 'power_generator']['generator:source' = 'wind'][location = null][zoom >= 17],
-  [feature = 'power_generator']['generator:source' = 'wind'][zoom >= 19],
+  [feature = 'power_generator']["generator:source" = 'wind'][location != 'rooftop'][location != 'roof'][zoom >= 17],
+  [feature = 'power_generator']["generator:source" = 'wind'][location = null][zoom >= 17],
+  [feature = 'power_generator']["generator:source" = 'wind'][zoom >= 19],
   [feature = 'historic_city_gate'][zoom >= 17],
   [feature = 'natural_cave_entrance'][zoom >= 15],
   [feature = 'man_made_mast'][zoom >= 18],
@@ -1931,7 +1941,7 @@
     text-wrap-width: @standard-wrap-width;
     text-line-spacing: @standard-line-spacing-size;
     text-fill: darken(@man-made-icon, 20%);
-    [feature = 'power_generator']['generator:source' = 'wind'],
+    [feature = 'power_generator']["generator:source" = 'wind'],
     [feature = 'historic_city_gate'],
     [feature = 'man_made_mast'],
     [feature = 'man_made_tower'],
@@ -2858,10 +2868,10 @@
     text-halo-fill: @standard-halo-fill;
   }
 
-  [feature = 'aeroway_aerodrome']['int_access' = 'yes']['icao' != null]['iata' != null][zoom >= 11][zoom < 17],
-  [feature = 'aeroway_aerodrome']['int_access' = 'restricted'][zoom >= 13][zoom < 18],
-  [feature = 'aeroway_aerodrome']['icao' = null][zoom >= 13][zoom < 18],
-  [feature = 'aeroway_aerodrome']['iata' = null][zoom >= 13][zoom < 18] {
+  [feature = 'aeroway_aerodrome'][int_access = 'yes'][icao != null][iata != null][zoom >= 11][zoom < 17],
+  [feature = 'aeroway_aerodrome'][int_access = 'restricted'][zoom >= 13][zoom < 18],
+  [feature = 'aeroway_aerodrome'][icao = null][zoom >= 13][zoom < 18],
+  [feature = 'aeroway_aerodrome'][iata = null][zoom >= 13][zoom < 18] {
     [way_pixels <= 192000],
     [way_pixels = null] {
       text-name: "[name]";


=====================================
style/buildings.mss
=====================================
@@ -52,29 +52,29 @@
     marker-width: 5.0;
     marker-height: 5.0;
     marker-opacity: 0.0;
-    ["entrance" = "main"] {
+    ["entrance" = 'main'] {
       marker-opacity: 1.0;
       marker-file: url('symbols/square.svg');
     }
   }
   [zoom >= 19]["entrance" != null] {
-    ["entrance" = "yes"],
-    ["entrance" = "main"],
-    ["entrance" = "home"],
-    ["entrance" = "service"],
-    ["entrance" = "staircase"] {
+    ["entrance" = 'yes'],
+    ["entrance" = 'main'],
+    ["entrance" = 'home'],
+    ["entrance" = 'service'],
+    ["entrance" = 'staircase'] {
       marker-opacity: 1.0;
       marker-width: 6.0;
       marker-height: 6.0;
-      ["entrance" = "service"] {
+      ["entrance" = 'service'] {
         marker-file: url('symbols/corners.svg');
       }
     }
-    ["access" = "yes"],
-    ["access" = "permissive"] {
+    ["access" = 'yes'],
+    ["access" = 'permissive'] {
       marker-fill: @entrance-permissive;
     }
-    ["access" = "no"] {
+    ["access" = 'no'] {
       marker-fill: @entrance-normal;
       marker-file: url('symbols/rectdiag.svg');
     }


=====================================
style/landcover.mss
=====================================
@@ -816,10 +816,10 @@
   //Also landuse = forest, converted in the SQL
   [natural = 'wood'][zoom >= 13]::wood {
     polygon-pattern-file: url('symbols/leaftype_unknown.svg'); // Lch(55,30,135)
-    [leaf_type = "broadleaved"] { polygon-pattern-file: url('symbols/leaftype_broadleaved.svg'); }
-    [leaf_type = "needleleaved"] { polygon-pattern-file: url('symbols/leaftype_needleleaved.svg'); }
-    [leaf_type = "mixed"] { polygon-pattern-file: url('symbols/leaftype_mixed.svg'); }
-    [leaf_type = "leafless"] { polygon-pattern-file: url('symbols/leaftype_leafless.svg'); }
+    [leaf_type = 'broadleaved'] { polygon-pattern-file: url('symbols/leaftype_broadleaved.svg'); }
+    [leaf_type = 'needleleaved'] { polygon-pattern-file: url('symbols/leaftype_needleleaved.svg'); }
+    [leaf_type = 'mixed'] { polygon-pattern-file: url('symbols/leaftype_mixed.svg'); }
+    [leaf_type = 'leafless'] { polygon-pattern-file: url('symbols/leaftype_leafless.svg'); }
     polygon-pattern-alignment: global;
     opacity: 0.4; // The entire layer has opacity to handle overlapping forests
   }


=====================================
style/roads.mss
=====================================
@@ -644,7 +644,7 @@
 
     [feature = 'highway_steps'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @steps-width-z14 + 2 * (@paths-background-width + @paths-bridge-casing-width);
           [zoom >= 15] { line-width: @steps-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
@@ -653,7 +653,7 @@
         }
       }
       #tunnels {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @steps-width-z14 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
           [zoom >= 15] { line-width: @steps-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
@@ -663,10 +663,9 @@
       }
     }
 
-    [feature = 'highway_bridleway'],
-    [feature = 'highway_path'][horse = 'designated'] {
+    [feature = 'highway_bridleway'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @bridleway-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
           [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
@@ -675,7 +674,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-width: @bridleway-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
           [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
@@ -686,9 +685,9 @@
     }
 
     [feature = 'highway_footway'],
-    [feature = 'highway_path'][bicycle != 'designated'][horse != 'designated'] {
+    [feature = 'highway_path'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @footway-width-z14 + 2 * (@paths-background-width + @paths-bridge-casing-width);
           [zoom >= 15] { line-width: @footway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
@@ -700,7 +699,7 @@
         }
       }
       #tunnels {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @footway-width-z14 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
           [zoom >= 15] { line-width: @footway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
@@ -713,10 +712,9 @@
       }
     }
 
-    [feature = 'highway_cycleway'],
-    [feature = 'highway_path'][bicycle = 'designated'] {
+    [feature = 'highway_cycleway'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @cycleway-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
           [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
@@ -728,7 +726,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-width: @cycleway-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
           [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
@@ -743,7 +741,7 @@
 
     [feature = 'highway_track'] {
       #bridges {
-        [zoom >= 13][access != 'no'] {
+        [zoom >= 13][int_access != 'no'] {
           line-color: @bridge-casing;
           line-join: round;
           line-width: @track-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
@@ -767,7 +765,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-color: @tunnel-casing;
           line-dasharray: 4,2;
@@ -807,7 +805,7 @@
     }
 
     [feature = 'railway_subway'],
-    [feature = 'railway_construction']['construction' = 'subway'] {
+    [feature = 'railway_construction'][construction = 'subway'] {
       #bridges {
         [zoom >= 14] {
           line-width: 5.5;
@@ -830,7 +828,6 @@
     }
 
     [feature = 'railway_rail'],
-    [feature = 'railway_preserved'],
     [feature = 'railway_monorail'][zoom >= 14] {
       #bridges {
         [zoom >= 13] {
@@ -852,9 +849,8 @@
     }
 
     [feature = 'railway_disused'][zoom >= 15],
-    [feature = 'railway_construction']['construction' != 'subway'],
-    [feature = 'railway_miniature'][zoom >= 15],
-    [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+    [feature = 'railway_construction'][construction != 'subway'],
+    [feature = 'railway_miniature'][zoom >= 15] {
       #bridges {
         [zoom >= 13] {
           line-width: 6;
@@ -867,10 +863,9 @@
   }
 
   ::bridges_and_tunnels_background {
-    [feature = 'highway_bridleway'],
-    [feature = 'highway_path'][horse = 'designated'] {
+    [feature = 'highway_bridleway'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @bridleway-width-z13 + 2 * @paths-background-width;
           [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * @paths-background-width; }
@@ -879,7 +874,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-color: @bridleway-casing;
           line-cap: round;
@@ -891,9 +886,9 @@
     }
 
     [feature = 'highway_footway'],
-    [feature = 'highway_path'][bicycle != 'designated'][horse != 'designated'] {
+    [feature = 'highway_path'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @footway-width-z14 + 2 * @paths-background-width;
           [zoom >= 15] { line-width: @footway-width-z15 + 2 * @paths-background-width; }
@@ -905,7 +900,7 @@
         }
       }
       #tunnels {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-color: @footway-casing;
           line-cap: round;
@@ -919,10 +914,9 @@
       }
     }
 
-    [feature = 'highway_cycleway'],
-    [feature = 'highway_path'][bicycle = 'designated'] {
+    [feature = 'highway_cycleway'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @cycleway-width-z13 + 2 * @paths-background-width;
           [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * @paths-background-width; }
@@ -934,7 +928,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-color: @cycleway-casing;
           line-cap: round;
@@ -950,7 +944,7 @@
 
     [feature = 'highway_steps'] {
       #bridges {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-width: @steps-width-z14 + 2 * @paths-background-width;
           [zoom >= 15] { line-width: @steps-width-z15 + 2 * @paths-background-width; }
@@ -959,7 +953,7 @@
         }
       }
       #tunnels {
-        [zoom >= 14][access != 'no'],
+        [zoom >= 14][int_access != 'no'],
         [zoom >= 15] {
           line-color: @steps-casing;
           line-cap: round;
@@ -973,7 +967,7 @@
     [feature = 'highway_track'] {
       /* We don't set opacity here, so it's 1.0. Aside from that, it's basically a copy of roads-fill::background in the track part of ::fill */
       #bridges {
-        [zoom >= 13][access != 'no'] {
+        [zoom >= 13][int_access != 'no'] {
           line-color: @track-casing;
           line-join: round;
           line-width: @track-width-z13 + 2 * @paths-background-width;
@@ -997,7 +991,7 @@
         }
       }
       #tunnels {
-        [zoom >= 13][access != 'no'],
+        [zoom >= 13][int_access != 'no'],
         [zoom >= 15] {
           line-color: @track-casing;
           line-join: round;
@@ -1025,7 +1019,6 @@
     }
 
     [feature = 'railway_rail'][zoom >= 13],
-    [feature = 'railway_preserved'][zoom >= 13],
     [feature = 'railway_monorail'][zoom >= 14] {
       #bridges {
         line-width: 5;
@@ -1045,9 +1038,8 @@
     }
 
     [feature = 'railway_disused'][zoom >= 15],
-    [feature = 'railway_construction']['construction' != 'subway'],
-    [feature = 'railway_miniature'][zoom >= 15],
-    [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
+    [feature = 'railway_construction'][construction != 'subway'],
+    [feature = 'railway_miniature'][zoom >= 15] {
       #bridges {
         [zoom >= 13] {
           line-width: 4.5;
@@ -1071,7 +1063,7 @@
     }
 
     [feature = 'railway_subway'],
-    [feature = 'railway_construction']['construction' = 'subway'] {
+    [feature = 'railway_construction'][construction = 'subway'] {
       #bridges {
         [zoom >= 14] {
           line-width: 4;
@@ -2258,7 +2250,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     }
 
     [feature = 'highway_steps'] {
-      [zoom >= 14][access != 'no'],
+      [zoom >= 14][int_access != 'no'],
       [zoom >= 15] {
         #roads-fill[zoom >= 15] {
           background/line-color: @steps-casing;
@@ -2268,16 +2260,15 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           background/line-opacity: 0.4;
         }
         line/line-color: @steps-fill;
-        [access = 'no'] { line/line-color: @steps-fill-noaccess; }
+        [int_access = 'no'] { line/line-color: @steps-fill-noaccess; }
         line/line-dasharray: 2,1;
         line/line-width: @steps-width-z14;
         [zoom >= 15] { line/line-width:  @steps-width-z15; }
       }
     }
 
-    [feature = 'highway_bridleway'],
-    [feature = 'highway_path'][horse = 'designated'] {
-      [zoom >= 13][access != 'no'],
+    [feature = 'highway_bridleway'] {
+      [zoom >= 13][int_access != 'no'],
       [zoom >= 15] {
         #roads-fill[zoom >= 15] {
           background/line-color: @bridleway-casing;
@@ -2287,7 +2278,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           background/line-opacity: 0.4;
         }
         line/line-color: @bridleway-fill;
-        [access = 'no'] { line/line-color: @bridleway-fill-noaccess; }
+        [int_access = 'no'] { line/line-color: @bridleway-fill-noaccess; }
         line/line-dasharray: 4,2;
         line/line-width: @bridleway-width-z13;
         [zoom >= 15] { line/line-width: @bridleway-width-z15; }
@@ -2299,8 +2290,8 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     }
 
     [feature = 'highway_footway'],
-    [feature = 'highway_path'][bicycle != 'designated'][horse != 'designated'] {
-      [zoom >= 14][access != 'no'],
+    [feature = 'highway_path'] {
+      [zoom >= 14][int_access != 'no'],
       [zoom >= 15] {
         #roads-fill[zoom >= 15] {
           background/line-color: @footway-casing;
@@ -2319,7 +2310,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           }
         }
         line/line-color: @footway-fill;
-        [access = 'no'] { line/line-color: @footway-fill-noaccess; }
+        [int_access = 'no'] { line/line-color: @footway-fill-noaccess; }
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
@@ -2343,7 +2334,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = null] {
           line/line-color: @footway-fill;
-          [access = 'no'] { line/line-color: @footway-fill-noaccess; }
+          [int_access = 'no'] { line/line-color: @footway-fill-noaccess; }
           line/line-dasharray: 1,3,2,4;
           line/line-join: round;
           line/line-cap: round;
@@ -2361,7 +2352,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = 'unpaved'] {
           line/line-color: @footway-fill;
-          [access = 'no'] { line/line-color: @footway-fill-noaccess; }
+          [int_access = 'no'] { line/line-color: @footway-fill-noaccess; }
           line/line-dasharray: 1,4;
           line/line-join: round;
           line/line-cap: round;
@@ -2379,9 +2370,8 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       }
     }
 
-    [feature = 'highway_cycleway'],
-    [feature = 'highway_path'][bicycle = 'designated'] {
-      [zoom >= 13][access != 'no'],
+    [feature = 'highway_cycleway'] {
+      [zoom >= 13][int_access != 'no'],
       [zoom >= 15] {
         #roads-fill[zoom >= 15] {
           background/line-color: @cycleway-casing;
@@ -2400,7 +2390,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           }
         }
         line/line-color: @cycleway-fill;
-        [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
+        [int_access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
@@ -2424,7 +2414,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = null] {
           line/line-color: @cycleway-fill;
-          [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
+          [int_access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
           line/line-dasharray: 1,3,2,4;
           line/line-join: round;
           line/line-cap: round;
@@ -2442,7 +2432,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         }
         [zoom >= 15][int_surface = 'unpaved'] {
           line/line-color: @cycleway-fill;
-          [access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
+          [int_access = 'no'] { line/line-color: @cycleway-fill-noaccess; }
           line/line-dasharray: 1,4;
           line/line-join: round;
           line/line-cap: round;
@@ -2461,7 +2451,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     }
 
     [feature = 'highway_track'] {
-      [zoom >= 13][access != 'no'],
+      [zoom >= 13][int_access != 'no'],
       [zoom >= 15] {
         /* The white casing that you mainly see against forests and other dark features */
         #roads-fill[zoom >= 15] {
@@ -2481,7 +2471,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
 
         /* Set the properties of the brown inside */
         line/line-color: @track-fill;
-        [access = 'no'] { line/line-color: @track-fill-noaccess; }
+        [int_access = 'no'] { line/line-color: @track-fill-noaccess; }
         line/line-dasharray: 5,4,2,4;
         line/line-cap: round;
         line/line-join: round;
@@ -2527,7 +2517,9 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       }
     }
 
-    [feature = 'railway_rail'][zoom >= 8],
+    [feature = 'railway_rail'][zoom >= 8][zoom < 10],
+    [feature = 'railway_rail'][preserved != 'yes'][zoom >= 10][zoom < 12],
+    [feature = 'railway_rail'][zoom >= 12],
     [feature = 'railway_INT-spur-siding-yard'][zoom >= 13] {
       [zoom < 13] {
         line-color: #787878;
@@ -2553,7 +2545,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
               dark/line-width: 3;
               light/line-width: 1;
             }
-            [zoom >= 15] {
+            [zoom >= 15][preserved != 'yes'] {
               light/line-dasharray: 0,8,8,1;
             }
             [zoom >= 18] {
@@ -2571,6 +2563,13 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
               light/line-width: 1;
             }
           }
+          [preserved = 'yes'] {
+            dark/line-width: 3;
+            dark/line-color: #666;
+            light/line-width: 1;
+            light/line-color: white;
+            light/line-dasharray: 0,1,8,1;
+          }
         }
         #tunnels {
           line-color: #787878;
@@ -2582,7 +2581,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
             line-width: 1.9;
             line-dasharray: 3,3;
             [zoom >= 18] {
-            line-width: 2.7;
+              line-width: 2.7;
             }
           }
           [feature = 'railway_rail'][zoom >= 18] {
@@ -2596,12 +2595,24 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
     [feature = 'railway_light_rail'],
     [feature = 'railway_funicular'],
     [feature = 'railway_narrow_gauge'] {
-      [zoom >= 8] {
+      [zoom >= 8][zoom < 10],
+      [preserved != 'yes'][zoom >= 10][zoom < 12],
+      [zoom >= 12] {
         line-color: #ccc;
         [zoom >= 10] { line-color: #aaa; }
         [zoom >= 13] { line-color: #666; }
         line-width: 1;
         [zoom >= 13] { line-width: 2; }
+        [preserved = 'yes'][zoom >= 13] {
+          #roads-fill, #bridges {
+            dark/line-width: 3;
+            dark/line-color: #999;
+            light/line-width: 1;
+            light/line-color: white;
+            light/line-dasharray: 0,1,8,1;
+            light/line-join: round;
+          }
+        }
         #tunnels {
           line-dasharray: 5,3;
         }
@@ -2615,6 +2626,15 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         dashes/line-width: 3;
         dashes/line-color: #999;
         dashes/line-dasharray: 1,10;
+
+        [preserved = 'yes'] {
+          line/line-width: 3;
+          line/line-color: #bbb;
+          dashes/line-width: 1;
+          dashes/line-color: white;
+          dashes/line-dasharray: 0,1,8,1;
+          dashes/line-join: round;
+        }
       }
     }
 
@@ -2648,6 +2668,16 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
             line-width: 2;
           }
         }
+        [preserved = 'yes'][zoom >= 15] {
+          #roads-fill, #bridges {
+            dark/line-width: 3;
+            dark/line-color: #999;
+            light/line-width: 1;
+            light/line-color: white;
+            light/line-dasharray: 0,1,8,1;
+            light/line-join: round;
+          }
+        }
         #tunnels {
           line-dasharray: 5,3;
         }
@@ -2658,6 +2688,16 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       [zoom >= 12] {
         line-width: 2;
         line-color: #999;
+        [preserved = 'yes'][zoom >= 15] {
+          #roads-fill, #bridges {
+            dark/line-width: 3;
+            dark/line-color: #999;
+            light/line-width: 1;
+            light/line-color: white;
+            light/line-dasharray: 0,1,8,1;
+            light/line-join: round;
+          }
+        }
         #tunnels {
           line-dasharray: 5,3;
         }
@@ -2670,38 +2710,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       }
     }
 
-    [feature = 'railway_preserved'] {
-      [zoom >= 12] {
-        dark/line-width: 1.5;
-        dark/line-color: #aaa;
-        dark/line-join: round;
-        [zoom >= 13] {
-          dark/line-width: 3;
-          dark/line-color: #999999;
-          light/line-width: 1;
-          light/line-color: white;
-          light/line-dasharray: 0,1,8,1;
-          light/line-join: round;
-        }
-      }
-    }
-
-    [feature = 'railway_INT-preserved-ssy'] {
-      [zoom >= 12] {
-        dark/line-width: 1;
-        dark/line-color: #aaa;
-        dark/line-join: round;
-        [zoom >= 13] {
-          dark/line-width: 2;
-          dark/line-color: #999999;
-          light/line-width: 0.8;
-          light/line-color: white;
-          light/line-dasharray: 0,1,8,1;
-          light/line-join: round;
-        }
-      }
-    }
-
     [feature = 'railway_monorail'] {
       [zoom >= 14] {
         background/line-width: 4;
@@ -2714,6 +2722,16 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
         line/line-dasharray: 2,3;
         line/line-cap: round;
         line/line-join: round;
+
+        [preserved = 'yes'] {
+          line/line-color: #999;
+          background/line-color: white;
+          background/line-dasharray: 0,1,8,1;
+        }
+
+        #tunnels {
+          line/line-dasharray: 3,4;
+        }
       }
     }
 
@@ -3378,7 +3396,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
 #tunnels::fill,
 #roads-fill::fill,
 #bridges::fill {
-  [access = 'destination'] {
+  [int_access = 'restricted'] {
     [feature = 'highway_secondary'],
     [feature = 'highway_tertiary'],
     [feature = 'highway_unclassified'],
@@ -3441,7 +3459,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       }
     }
   }
-  [access = 'no'] {
+  [int_access = 'no'] {
     [feature = 'highway_motorway'],
     [feature = 'highway_trunk'],
     [feature = 'highway_primary'],
@@ -4152,18 +4170,10 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
           text-upright: left;
           text-dy: -3;
         }
+        [highway = 'path'],
         [highway = 'footway'] {
           text-fill: @footway-oneway-arrow-color;
         }
-        [highway = 'path'] {
-          text-fill: @footway-oneway-arrow-color;
-          [horse = 'designated'] {
-            text-fill: @bridleway-oneway-arrow-color;
-          }
-          [bicycle = 'designated'] {
-            text-fill: @cycleway-oneway-arrow-color;
-          }
-        }
         [highway = 'steps'] {
           text-fill: @steps-oneway-arrow-color;
         }
@@ -4187,7 +4197,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
   [railway = 'subway'],
   [railway = 'narrow_gauge'],
   [railway = 'light_rail'],
-  [railway = 'preserved'],
   [railway = 'funicular'],
   [railway = 'monorail'],
   [railway = 'tram'] {
@@ -4266,9 +4275,11 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */
       }
     }
   }
-  /* Other minor railway styles. For service rails, see:
-     https://github.com/gravitystorm/openstreetmap-carto/pull/2687 */
-  [railway = 'preserved'],
+
+  /*
+  Other minor railway styles. For service rails, see:
+  https://github.com/gravitystorm/openstreetmap-carto/pull/2687
+  */
   [railway = 'miniature'],
   [railway = 'disused'],
   [railway = 'construction'] {


=====================================
symbols/leisure/dance.svg
=====================================
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
+    <path d="M9.5 0a1 1 0 0 0 0 2 1 1 0 0 0 0-2zm-5 2a.5.5 0 0 0-.22.95l2 1a.5.5 0 0 0 .57-.1l.78-.78.37.12v6.1l-1.85 1.85a.5.5 0 0 0 .7.7l2-2A.5.5 0 0 0 9 9.5V7.71l1.93 1.92-.9 2.7a.5.5 0 0 0 .31.64.5.5 0 0 0 .64-.32l1-3c.07-.23 0-.37-.12-.5L10 7.29V3.86l.14.05.89 1.85a.5.5 0 0 0 .68.23l2.02-1.05a.5.5 0 0 0 .22-.67.5.5 0 0 0-.68-.21l-1.56.8-.76-1.58a.5.5 0 0 0-.29-.26l-2.1-.69-.9-.3a.5.5 0 0 0-.51.11l-.75.75-1.67-.83A.5.5 0 0 0 4.5 2zM5 4.33 1 5.66V9a1 1 0 1 0 1 1V6.95l2-.67V8a1 1 0 1 0 1 1V4.33z"/>
+</svg>


=====================================
symbols/shop/hearing_aids.svg
=====================================
@@ -0,0 +1,3 @@
+<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
+  <path d="m4.58513,2.8263c1.46072,-0.10333 3.13452,1.23444 3.63246,2.94008c0.49794,1.70564 -0.04394,3.40863 -0.66342,4.27188c-0.61948,0.86325 -1.33674,0.77076 -1.94384,1.21188c-0.60709,0.44112 -0.53931,1.8297 -1.50273,2.36063c-0.96343,0.53093 -2.82327,0.24927 -2.42665,-1.47846c0.39662,-1.72773 0.63357,-2.3001 -0.76858,-2.96611l0.51491,-0.72984c1.43113,0.08965 1.44162,0.87832 1.71334,1.57934c0.27172,0.70101 0.36715,1.51445 0.98562,1.051c0.30924,-0.23173 0.32183,-0.74699 0.63097,-0.96843c0.30914,-0.22143 0.91483,-0.14903 1.20458,-0.25906c0.57949,-0.22006 0.84928,-1.23319 0.6778,-3.40324c-0.17148,-2.17005 -1.62807,-2.25618 -2.39611,-2.20584c-0.76804,0.05034 -0.63737,0.58252 -1.4715,1.18749l-0.40457,-0.99381c0.9105,-0.69673 0.75702,-1.49416 2.21773,-1.59749l0,-0.00001l-0.00001,-0.00001z M4.34019,9.30065c-0.91236,0 -1.65137,-0.73901 -1.65137,-1.65137c0,-0.91236 0.73901,-1.65137 1.65137,-1.65137c0.91236,0 1.65137,0.73901 1.65137,1.65137c0,0.91236 -0.73901,1.65137 -1.65137,1.65137z M12.57809,0.02714c-1.7687,0.80156 -2.99609,2.63198 -2.99609,4.73828c0,2.1063 1.22749,3.96022 2.99609,4.76172l0,-1.22461c-1.1965,-0.7105 -1.96484,-2.07868 -1.96484,-3.60938c0,-1.5306 0.76829,-2.72504 1.96484,-3.43554l0,-1.23047z M13.49371,1.90885c-1.158,0.42876 -2,1.54921 -2,2.88281c0,1.3337 0.84197,2.46573 2,2.89453l0,-1.14453c-0.5974,-0.35456 -0.92773,-1.02046 -0.92773,-1.78516c0,-0.76479 0.33033,-1.34081 0.92773,-1.69531l0,-1.15234z M9.36082,0.55115l-0.96154,2.37629l-4.84258,-0.8755c-1.08525,0.31007 -1.84219,1.08525 -1.83307,2.16138c0.07296,1.04877 0.61102,1.74187 1.31324,2.62649l-0.30095,0.95757c-1.25852,-1.21293 -1.86043,-2.50793 -1.77835,-3.83029c0.20975,-1.58684 1.15821,-2.0793 2.43497,-2.70856l0.38303,-1.01229" />
+</svg>



View it on GitLab: https://salsa.debian.org/debian-gis-team/openstreetmap-carto/-/compare/89f4491066c02d0a759af848ff133038f1e41a91...20ea0a9119f5c30b81535737ee19bee7e810e732

-- 
View it on GitLab: https://salsa.debian.org/debian-gis-team/openstreetmap-carto/-/compare/89f4491066c02d0a759af848ff133038f1e41a91...20ea0a9119f5c30b81535737ee19bee7e810e732
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-grass-devel/attachments/20241017/802ad4ae/attachment-0001.htm>


More information about the Pkg-grass-devel mailing list