diff --git a/CHANGELOG.md b/CHANGELOG.md index 41fed6c1b0..99821ea363 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,33 @@ -## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v4.14.0...master) +## [Unreleased](https://github.com/gravitystorm/openstreetmap-carto/compare/v4.15.0...master) +## Changes +- Changing societal amenities color to less intensive +- Adding rendering for natural=strait +- Adding rendering for leisure=track on lines +- Adding icon for amenity=vehicle_inspection +- Adding icon for leisure=sports_centre + sport=swimming and leisure=swimming_area +- Adding icon for tourism=gallery +- Changing color for aeroway=apron in aerodromes +- Moving amenity=post_box to z19+ +- Moving amenity=atm to z19+ +- Replacing icon for information=tactile_model +- Ordering amenity_lines by layer +- Small documentation and code fixes + +## [v4.15.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v4.14.0...v4.15.0) - 2018-09-21 +## Changes +- Changing gastronomy objects color to orange (affects restaurant, fast_food, ice_cream, food_court, bar, cafe, nightclub, pub and biergarten) +- Changing farmland and societal amenities (like school, hospital etc.) colors to fit better into the overall color systematic +- Adding rendering for man_made=wastewater_plant and man_made=water_works +- Adding icon for man_made=storage_tank and man_made=silo +- Adding icon for amenity=bicycle_repair_station +- Adding icon for leisure=amusement_arcade +- Adding icon for shop=bookmaker +- Adding icon for shop=trade and shop=wholesale +- Adding rendering for attraction=water_slide +- Rendering most of the road links thinner (affects trunk_link, primary_link, secondary_link) +- Moving manors to z16+ +- Fixing missing country labels on z4 (affects Canada, Russia and Greenland) +- Small code and icon fixes ## [v4.14.0](https://github.com/gravitystorm/openstreetmap-carto/compare/v4.13.0...v4.14.0) - 2018-08-17 ## Changes diff --git a/amenity-points.mss b/amenity-points.mss index 85c01505fe..00aa93bbcd 100644 --- a/amenity-points.mss +++ b/amenity-points.mss @@ -9,7 +9,8 @@ @airtransport: #8461C4; //also ferry_terminal @health-color: #da0092; @amenity-brown: #734a08; -@gastronomy: @amenity-brown; +@gastronomy-icon: #C77400; +@gastronomy-text: darken(@gastronomy-icon, 5%); @memorials: @amenity-brown; @culture: @amenity-brown; @public-service: @amenity-brown; @@ -55,7 +56,7 @@ marker-clip: false; } - [feature = 'amenity_atm'][zoom >= 17] { + [feature = 'amenity_atm'][zoom >= 19] { marker-file: url('symbols/amenity/atm.svg'); marker-fill: @amenity-brown; marker-placement: interior; @@ -78,7 +79,7 @@ [feature = 'amenity_bar'][zoom >= 17] { marker-file: url('symbols/amenity/bar.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -150,7 +151,7 @@ [feature = 'amenity_cafe'][zoom >= 17] { marker-file: url('symbols/amenity/cafe.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -221,7 +222,7 @@ [feature = 'amenity_nightclub'][zoom >= 17] { marker-file: url('symbols/amenity/nightclub.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -288,6 +289,13 @@ marker-clip: false; } + [feature = 'amenity_bicycle_repair_station'][zoom >= 19] { + marker-file: url('symbols/amenity/bicycle_repair_station.svg'); + marker-fill: @amenity-brown; + marker-placement: interior; + marker-clip: false; + } + [feature = 'amenity_hospital'][zoom >= 15] { marker-file: url('symbols/amenity/hospital.svg'); marker-fill: @health-color; @@ -302,6 +310,13 @@ marker-clip: false; } + [feature = 'tourism_gallery'][zoom >= 17] { + marker-file: url('symbols/shop/art.svg'); + marker-placement: interior; + marker-clip: false; + marker-fill: @amenity-brown; + } + [feature = 'tourism_hostel'][zoom >= 17] { marker-file: url('symbols/tourism/hostel.svg'); marker-placement: interior; @@ -325,7 +340,7 @@ [feature = 'amenity_ice_cream'][zoom >= 17] { marker-file: url('symbols/shop/ice_cream.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -336,8 +351,7 @@ [information = 'audioguide'] { marker-file: url('symbols/tourism/audioguide.svg'); } - [information = 'board'], - [information = 'tactile_model'] { + [information = 'board'] { marker-file: url('symbols/tourism/board.svg'); } [information = 'guidepost'] { @@ -348,7 +362,8 @@ marker-fill: @amenity-brown; } [information = 'map'], - [information = 'tactile_map'] { + [information = 'tactile_map'], + [information = 'tactile_model'] { marker-file: url('symbols/tourism/map.svg'); } [information = 'terminal'] { @@ -606,6 +621,14 @@ marker-clip: false; } + [feature = 'man_made_storage_tank'][zoom >= 18], + [feature = 'man_made_silo'][zoom >= 18] { + marker-file: url('symbols/man_made/storage_tank.svg'); + marker-fill: @man-made-icon; + marker-placement: interior; + marker-clip: false; + } + [feature = 'historic_wayside_shrine'][zoom >= 17] { marker-file: url('symbols/historic/shrine.svg'); marker-fill: @man-made-icon; @@ -620,7 +643,14 @@ marker-clip: false; } - [feature = 'amenity_post_box'][zoom >= 17] { + [feature = 'amenity_vehicle_inspection'][zoom >= 17] { + marker-file: url('symbols/amenity/vehicle_inspection.svg'); + marker-fill: @public-service; + marker-placement: interior; + marker-clip: false; + } + + [feature = 'amenity_post_box'][zoom >= 19] { marker-file: url('symbols/amenity/post_box.svg'); marker-fill: @amenity-brown; marker-placement: interior; @@ -636,14 +666,14 @@ [feature = 'amenity_pub'][zoom >= 17] { marker-file: url('symbols/amenity/pub.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } [feature = 'amenity_biergarten'][zoom >= 17] { marker-file: url('symbols/amenity/biergarten.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -662,14 +692,14 @@ [feature = 'amenity_restaurant'][zoom >= 17], [feature = 'amenity_food_court'][zoom >= 17] { marker-file: url('symbols/amenity/restaurant.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } [feature = 'amenity_fast_food'][zoom >= 17] { marker-file: url('symbols/amenity/fast_food.svg'); - marker-fill: @gastronomy; + marker-fill: @gastronomy-icon; marker-placement: interior; marker-clip: false; } @@ -736,7 +766,7 @@ marker-line-width: 0; marker-placement: interior; marker-clip: false; - marker-fill: darken(@societal_amenities, 70%); + marker-fill: darken(@societal_amenities, 80%); } } @@ -794,9 +824,10 @@ marker-clip: false; } - [feature = 'historic_castle'][castle_type != 'stately'][zoom >= 15], + [feature = 'historic_castle'][castle_type != 'stately'][castle_type != 'manor'][zoom >= 15], [feature = 'historic_castle'][castle_type = 'stately'][zoom >= 16], - [feature = 'historic_manor'][zoom >= 15] { + [feature = 'historic_castle'][castle_type = 'manor'][zoom >= 16], + [feature = 'historic_manor'][zoom >= 16] { marker-file: url('symbols/historic/castle.svg'); marker-fill: @memorials; marker-placement: interior; @@ -1185,7 +1216,9 @@ marker-fill: @office; } - [feature = 'leisure_water_park'][zoom >= 17] { + [feature = 'leisure_water_park'][zoom >= 17], + [feature = 'leisure_sports_centre'][sport = 'swimming'][zoom >= 17], + [feature = 'leisure_swimming_area'][zoom >= 17] { marker-file: url('symbols/leisure/water_park.svg'); marker-placement: interior; marker-fill: @leisure-green; @@ -1287,6 +1320,13 @@ marker-clip: false; } + [feature = 'leisure_amusement_arcade'][zoom >= 17] { + marker-file: url('symbols/amusement_arcade.svg'); + marker-fill: @leisure-green; + marker-placement: interior; + 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'); @@ -1551,7 +1591,7 @@ [feature = 'amenity_nightclub'] { [zoom >= 17] { text-name: "[name]"; - text-fill: @gastronomy; + text-fill: @gastronomy-text; text-size: @standard-font-size; text-wrap-width: @standard-wrap-width; text-line-spacing: @standard-line-spacing-size; @@ -1687,12 +1727,14 @@ text-placement: interior; } + [feature = 'amenity_vehicle_inspection'][zoom >= 17], [feature = 'amenity_car_wash'][zoom >= 17], [feature = 'amenity_drinking_water'][zoom >= 17], [feature = 'tourism_picnic_site'][zoom >= 17], [feature = 'leisure_bowling_alley'][zoom >= 17], [feature = 'leisure_beach_resort'][zoom >= 17], [feature = 'leisure_bird_hide'][zoom >= 17], + [feature = 'leisure_amusement_arcade'][zoom >= 17], [feature = 'leisure_outdoor_seating'][zoom >= 19], [feature = 'leisure_picnic_table'][zoom >= 17] { text-name: "[name]"; @@ -1704,6 +1746,7 @@ [feature = 'leisure_outdoor_seating'], [feature = 'leisure_bowling_alley'], [feature = 'leisure_bird_hide'], + [feature = 'leisure_amusement_arcade'], [feature = 'leisure_beach_resort'] { text-fill: @leisure-green; } @@ -1799,9 +1842,12 @@ [feature = 'natural_cave_entrance'][zoom >= 15], [feature = 'man_made_mast'][zoom >= 18], [feature = 'man_made_tower'][zoom >= 17], + [feature = 'man_made_storage_tank'][zoom >= 18], + [feature = 'man_made_silo'][zoom >= 18], [feature = 'man_made_communications_tower'][zoom >= 17], [feature = 'man_made_water_tower'][zoom >= 17], - [feature = 'man_made_chimney'][zoom >= 17] { + [feature = 'man_made_chimney'][zoom >= 17], + [feature = 'man_made_waste_water_plant'][zoom >= 17] { text-name: "[name]"; text-size: @standard-font-size; text-wrap-width: @standard-wrap-width; @@ -1817,7 +1863,11 @@ [feature = 'man_made_tower'], [feature = 'man_made_communications_tower'], [feature = 'man_made_water_tower'], - [feature = 'man_made_chimney'] { + [feature = 'man_made_storage_tank'], + [feature = 'man_made_silo'], + [feature = 'man_made_chimney'], + [feature = 'man_made_water_works'], + [feature = 'man_made_wastewater_plant'] { text-dy: 10; } text-face-name: @standard-font; @@ -1874,7 +1924,9 @@ text-dy: 13; } - [feature = 'leisure_water_park'] { + [feature = 'leisure_water_park'], + [feature = 'leisure_sports_centre'][sport = 'swimming'], + [feature = 'leisure_swimming_area'] { [way_area >= 150000][zoom >= 14], [way_area >= 80000][zoom >= 15], [way_area >= 20000][zoom >= 16], @@ -2058,6 +2110,8 @@ [feature = 'landuse_industrial'], [feature = 'landuse_railway'], [feature = 'man_made_works'], + [feature = 'man_made_water_works'], + [feature = 'man_made_wastewater_plant'], [feature = 'landuse_commercial'], [feature = 'landuse_brownfield'], [feature = 'landuse_landfill'], @@ -2155,6 +2209,8 @@ } [feature = 'landuse_industrial'], [feature = 'landuse_railway'], + [feature = 'man_made_wastewater_plant'], + [feature = 'man_made_water_works'], [feature = 'man_made_works'] { text-fill: darken(@industrial, 60%); } @@ -2183,7 +2239,7 @@ [feature = 'amenity_school'], [feature = 'amenity_college'], [feature = 'amenity_university'] { - text-fill: darken(@societal_amenities, 70%); + text-fill: darken(@societal_amenities, 80%); } [feature = 'natural_heath'] { text-fill: darken(@heath, 40%); @@ -2233,33 +2289,7 @@ } } - [feature = 'amenity_shower'][zoom >= 18] { - text-name: "[name]"; - text-size: @standard-font-size; - text-wrap-width: @standard-wrap-width; - text-line-spacing: @standard-line-spacing-size; - text-dy: 10; - text-fill: @amenity-brown; - text-halo-radius: @standard-halo-radius; - text-halo-fill: @standard-halo-fill; - text-placement: interior; - text-face-name: @standard-font; - } - - [feature = 'amenity_bbq'][zoom >= 17] { - text-name: "[name]"; - text-size: @standard-font-size; - text-wrap-width: @standard-wrap-width; - text-line-spacing: @standard-line-spacing-size; - text-dy: 10; - text-fill: @amenity-brown; - text-halo-radius: @standard-halo-radius; - text-halo-fill: @standard-halo-fill; - text-placement: interior; - text-face-name: @standard-font; - } - - [feature = 'amenity_atm'][zoom >= 17] { + [feature = 'amenity_atm'][zoom >= 19] { text-name: "[operator]"; text-size: @standard-font-size; text-wrap-width: @standard-wrap-width; @@ -2272,7 +2302,11 @@ text-face-name: @standard-font; } - [feature = 'amenity_bureau_de_change'][zoom >= 17] { + [feature = 'amenity_shower'][zoom >= 18], + [feature = 'amenity_bbq'][zoom >= 17], + [feature = 'amenity_bureau_de_change'][zoom >= 17], + [feature = 'tourism_gallery'][zoom >= 17], + [feature = 'amenity_bicycle_repair_station'][zoom >= 19] { text-name: "[name]"; text-size: @standard-font-size; text-wrap-width: @standard-wrap-width; @@ -2284,7 +2318,7 @@ text-placement: interior; text-face-name: @standard-font; } - + [feature = 'tourism_alpine_hut'][zoom >= 14], [feature = 'amenity_shelter'][zoom >= 17], [feature = 'tourism_hotel'][zoom >= 17], @@ -2467,7 +2501,7 @@ text-halo-fill: @standard-halo-fill; text-placement: interior; text-dy: 8; - text-fill: darken(@societal_amenities, 70%); + text-fill: darken(@societal_amenities, 80%); } } @@ -2926,6 +2960,39 @@ marker-fill: @transportation-icon; } + [feature = 'leisure_track'] { + [zoom >= 16] { + [zoom >= 17] { + bridgecasing/line-color: saturate(darken(@pitch, 30%), 20%); + bridgecasing/line-join: round; + bridgecasing/line-smooth: 1; + bridgecasing/line-width: 1.25; + [zoom >= 18] { bridgecasing/line-width: 2.5; } + [zoom >= 19] { bridgecasing/line-width: 5; } + } + line-color: @pitch; + line-join: round; + line-cap: round; + line-smooth: 1; + line-width: 1; + [zoom >= 18] { line-width: 2; } + [zoom >= 19] { line-width: 4; } + + [zoom >= 19] { + text-name: "[name]"; + text-size: 10; + text-face-name: @oblique-fonts; + text-fill: darken(@pitch, 40%); + text-halo-radius: @standard-halo-radius; + text-halo-fill: @standard-halo-fill; + text-placement: line; + text-vertical-alignment: middle; + text-repeat-distance: @waterway-text-repeat-distance; + text-dy: 8; + } + } + } + [feature = 'attraction_water_slide'] { [zoom >= 16] { [zoom >= 17] { diff --git a/landcover.mss b/landcover.mss index fceb174209..3d4c36456b 100644 --- a/landcover.mss +++ b/landcover.mss @@ -18,8 +18,8 @@ @retail-line: #d99c95; // Lch(70,25,30) @commercial: #f2dad9; // Lch(89,8.5,25) @commercial-line: #d1b2b0; // Lch(75,12,25) -@industrial: #ebdbe8; // Lch(89,9,330) (Also used for railway) -@industrial-line: #c6b3c3; // Lch(75,11,330) (Also used for railway-line) +@industrial: #ebdbe8; // Lch(89,9,330) (Also used for railway, wastewater_plant) +@industrial-line: #c6b3c3; // Lch(75,11,330) (Also used for railway-line, wastewater_plant-line) @farmland: #eef0d5; // Lch(94,14,112) @farmland-line: #c7c9ae; // Lch(80,14,112) @farmyard: #f5dcba; // Lch(89,20,80) @@ -28,7 +28,7 @@ // --- Transport ---- @transportation-area: #e9e7e2; -@apron: #e9d1ff; +@apron: #dadae0; @garages: #dfddce; @parking: #eeeeee; @parking-outline: saturate(darken(@parking, 40%), 20%); @@ -51,11 +51,15 @@ @power: darken(@industrial, 5%); @power-line: darken(@industrial-line, 5%); @sand: #f5e9c6; -@societal_amenities: #fbecd7; // Lch(94,12,80) +@societal_amenities: #ffffe5; // Lch(99,13,109) @tourism: #734a08; @quarry: #c5c3c3; @military: #f55; @beach: #fff1ba; +@wastewater_plant: @industrial; +@wastewater_plant-line: @industrial-line; +@water_works: @industrial; +@water_works-line: @industrial-line; // --- Sports --- @@ -393,6 +397,34 @@ } } + [feature = 'man_made_wastewater_plant'] { + polygon-fill: @industrial; + [zoom >= 15] { + polygon-fill: @wastewater_plant; + } + [zoom >= 16] { + line-width: 0.5; + line-color: @wastewater_plant-line; + [name != ''] { + line-width: 0.7; + } + } + } + + [feature = 'man_made_water_works'] { + polygon-fill: @industrial; + [zoom >= 15] { + polygon-fill: @water_works; + } + [zoom >= 16] { + line-width: 0.5; + line-color: @water_works-line; + [name != ''] { + line-width: 0.7; + } + } + } + [feature = 'landuse_railway'][zoom >= 10] { polygon-fill: @railway; [zoom >= 16][name != ''] { @@ -553,12 +585,12 @@ [feature = 'amenity_fire_station'][zoom >= 13], [feature = 'amenity_police'][zoom >= 13] { polygon-fill: #F3E3DD; - line-color: @military; + line-color: @military; line-opacity: 0.24; - line-width: 1.0; + line-width: 1.0; line-offset: -0.5; [zoom >= 15] { - line-width: 2; + line-width: 2; line-offset: -1.0; } } diff --git a/placenames.mss b/placenames.mss index 61e9e45c6a..ebb8f3a142 100644 --- a/placenames.mss +++ b/placenames.mss @@ -4,7 +4,8 @@ @state-labels: desaturate(darken(@admin-boundaries, 5%), 20%); .country { - [zoom >= 3][way_pixels > 1000][way_pixels < 360000] { + [zoom >= 3][zoom < 5][way_pixels > 1000], + [zoom >= 5][way_pixels < 360000] { text-name: "[name]"; text-size: 10; text-wrap-width: 35; // 3.5 em diff --git a/project.mml b/project.mml index 3ccf162044..6947d6c204 100644 --- a/project.mml +++ b/project.mml @@ -119,7 +119,7 @@ Layer: ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway, ('amenity_' || (CASE WHEN amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'university', 'college', 'school', 'taxi', 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship', 'clinic', 'ferry_terminal', - 'marketplace', 'community_centre', 'social_facility', 'arts_centre', 'parking_space', 'bus_station', + 'marketplace', 'community_centre', 'social_facility', 'arts_centre', 'parking_space', 'bus_station', 'fire_station', 'police') THEN amenity ELSE NULL END)) AS amenity, ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture', @@ -128,7 +128,7 @@ Layer: ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'miniature_golf', 'sports_centre', 'stadium', 'pitch', 'track', 'dog_park', 'fitness_station') THEN leisure ELSE NULL END)) AS leisure, - ('man_made_' || (CASE WHEN man_made IN ('works') THEN man_made ELSE NULL END)) AS man_made, + ('man_made_' || (CASE WHEN man_made IN ('works', 'wastewater_plant', 'water_works') THEN man_made ELSE NULL END)) AS man_made, ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military, ('natural_' || (CASE WHEN "natural" IN ('beach', 'shoal', 'heath', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural", ('wetland_' || (CASE WHEN "natural" IN ('wetland', 'marsh', 'mud') THEN (CASE WHEN "natural" IN ('marsh', 'mud') THEN "natural" ELSE tags->'wetland' END) ELSE NULL END)) AS wetland, @@ -145,7 +145,7 @@ Layer: OR amenity IN ('parking', 'bicycle_parking', 'motorcycle_parking', 'taxi', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard', 'place_of_worship', 'prison', 'clinic', 'ferry_terminal', 'marketplace', 'community_centre', 'social_facility', 'arts_centre', 'parking_space', 'bus_station', 'fire_station', 'police') - OR man_made IN ('works') + OR man_made IN ('works', 'wastewater_plant','water_works') OR military IN ('danger_area') OR "natural" IN ('beach', 'shoal', 'heath', 'mud', 'marsh', 'wetland', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') OR power IN ('station', 'sub_station', 'substation', 'generator') @@ -550,15 +550,12 @@ Layer: 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 feature IN ('highway_road') THEN 0 ELSE 1 END, - CASE WHEN feature IN ('highway_platform', 'railway_platform') THEN 0 ELSE 1 END, CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END ) AS tunnels properties: group-by: layernotnull minzoom: 10 - cache-features: true - id: landuse-overlay geometry: polygon <<: *extents @@ -695,7 +692,7 @@ Layer: way, COALESCE(( 'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)), - ('railway_' || (CASE WHEN (railway IN ('platform') + ('railway_' || (CASE WHEN (railway IN ('platform') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) AND (covered NOT IN ('yes') OR covered IS NULL)) @@ -703,7 +700,7 @@ Layer: ) AS feature FROM planet_osm_polygon WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform') - OR (railway IN ('platform') + OR (railway IN ('platform') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) AND (covered NOT IN ('yes') OR covered IS NULL)) @@ -797,14 +794,11 @@ Layer: 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 feature IN ('highway_road') THEN 0 ELSE 1 END, - CASE WHEN feature IN ('highway_platform', 'railway_platform') THEN 0 ELSE 1 END, CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END ) AS roads_casing properties: minzoom: 10 - cache-features: true - id: highway-area-fill # FIXME: No geometry? <<: *extents @@ -816,22 +810,16 @@ Layer: COALESCE( ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)), - ('railway_' || (CASE WHEN (railway IN ('platform') + ('railway_' || (CASE WHEN (railway IN ('platform') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) AND (covered NOT IN ('yes') OR covered IS NULL)) THEN railway ELSE NULL END)), (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END)) - ) AS feature, - 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' - ELSE NULL - END AS int_surface + ) AS feature FROM planet_osm_polygon WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services') - OR (railway IN ('platform') + OR (railway IN ('platform') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) AND (covered NOT IN ('yes') OR covered IS NULL)) @@ -909,12 +897,7 @@ Layer: foot, bicycle, 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' - ELSE NULL - END AS int_surface, + 'null' AS surface, -- Should be a SQL NULL? CASE WHEN access IN ('destination') THEN 'destination'::text WHEN access IN ('no', 'private') THEN 'no'::text @@ -931,35 +914,17 @@ Layer: AND (covered IS NULL OR NOT covered = 'yes') AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')) AND railway IS NOT NULL -- end of rail select - UNION ALL - (SELECT - ST_MakeEnvelope(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244, 900913) AS way, - 'globalboundingbox' AS feature, - NULL AS horse, - NULL AS foot, - NULL AS bicycle, - NULL AS tracktype, - NULL AS surface, - NULL AS access, - NULL AS construction, - NULL AS service, - NULL AS link, - NULL AS layernotnull, - NULL AS z_order - ) ) AS features ORDER BY + 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 feature IN ('highway_road') THEN 0 ELSE 1 END, - CASE WHEN feature IN ('highway_platform', 'railway_platform') THEN 0 ELSE 1 END, CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END ) AS roads_fill properties: minzoom: 10 - cache-features: true - id: turning-circle-fill geometry: point <<: *extents @@ -967,54 +932,27 @@ Layer: <<: *osm2pgsql table: |- (SELECT - way, - feature, - int_tc_type, - int_surface, - int_tc_service - FROM - (SELECT DISTINCT on (p.way) - p.way AS way, - NULL::TEXT AS feature, - l.highway AS int_tc_type, - 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' - ELSE NULL - END AS int_surface, - CASE - WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text - ELSE 'INT-normal'::text - END AS int_tc_service - FROM planet_osm_point p - JOIN planet_osm_line l - ON ST_DWithin(p.way, l.way, 0.1) - JOIN (VALUES - ('tertiary', 1), - ('unclassified', 2), - ('residential', 3), - ('living_street', 4), - ('service', 5), - ('track', 6) - ) AS v (highway, prio) - ON v.highway=l.highway - WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop' - ORDER BY p.way, v.prio - ) AS turning_circle_fill_inner_query - UNION ALL - (SELECT - ST_MakeEnvelope(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244, 900913) AS way, - 'globalboundingbox' AS feature, - NULL AS int_tc_type, - NULL AS int_surface, - NULL AS int_tc_service - ) - ) AS turning_circle_fill_outer_query + DISTINCT on (p.way) + p.way AS way, l.highway AS int_tc_type, + CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text + ELSE 'INT-normal'::text END AS int_tc_service + FROM planet_osm_point p + JOIN planet_osm_line l + ON ST_DWithin(p.way, l.way, 0.1) + JOIN (VALUES + ('tertiary', 1), + ('unclassified', 2), + ('residential', 3), + ('living_street', 4), + ('service', 5), + ('track', 6) + ) AS v (highway, prio) + ON v.highway=l.highway + WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop' + ORDER BY p.way, v.prio + ) AS turning_circle_fill properties: minzoom: 15 - cache-features: true - id: aerialways geometry: linestring <<: *extents @@ -1050,28 +988,17 @@ Layer: WHEN surface IN ('paved', 'asphalt', 'cobblestone', 'cobblestone:flattened', 'sett', 'concrete', 'concrete:lanes', 'concrete:plates', 'paving_stones', 'metal', 'wood', 'unhewn_cobblestone') THEN 'paved' ELSE NULL - END AS int_surface, - z_order + END AS int_surface FROM planet_osm_roads WHERE highway IS NOT NULL OR (railway IS NOT NULL AND railway != 'preserved' AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard'))) - UNION ALL - (SELECT - ST_MakeEnvelope(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244, 900913) AS way, - 'globalboundingbox' AS feature, - NULL AS int_tunnel, - NULL AS link, - NULL AS int_surface, - NULL AS z_order - ) ORDER BY z_order ) AS roads_low_zoom properties: minzoom: 6 maxzoom: 9 - cache-features: true - id: waterway-bridges class: water-lines geometry: linestring @@ -1116,8 +1043,7 @@ Layer: link, layernotnull FROM ( -- subselect that contains both roads and rail/aero - WITH features_real AS ( -- this is the actual data (which is used both as is and to determine the distinct layer values present in it) - SELECT + SELECT way, 'highway_' || highway AS feature, --only motorway to tertiary links are accepted later on horse, @@ -1148,40 +1074,6 @@ Layer: FROM planet_osm_line WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') AND highway IS NOT NULL -- end of road select - AND way && !bbox! - ) - SELECT - way, - feature, - horse, - foot, - bicycle, - tracktype, - int_surface, - access, - construction, - service, - link, - layernotnull, - z_order - FROM features_real - UNION ALL - SELECT - ST_MakeEnvelope(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244, 900913) AS way, - 'globalboundingbox' AS feature, - NULL AS horse, - NULL AS foot, - NULL AS bicycle, - NULL AS tracktype, - NULL AS surface, - NULL AS access, - NULL AS construction, - NULL AS service, - NULL AS link, - layernotnull, - NULL AS z_order - FROM - (SELECT DISTINCT layernotnull FROM features_real) AS layers_list UNION ALL SELECT way, @@ -1207,22 +1099,18 @@ Layer: FROM planet_osm_line WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') AND railway IS NOT NULL -- end of rail select - AND way && !bbox! ) AS features ORDER BY 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 feature IN ('highway_road') THEN 0 ELSE 1 END, - CASE WHEN feature IN ('highway_platform', 'railway_platform') THEN 0 ELSE 1 END, CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END, CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END ) AS bridges properties: group-by: layernotnull minzoom: 10 - cache-features: true - id: guideways geometry: linestring <<: *extents @@ -1260,41 +1148,16 @@ Layer: <<: *osm2pgsql table: |- (SELECT - way, - feature, - aeroway, - bridge, - int_surface - FROM - (SELECT way, - NULL as feature, aeroway, - bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') AS bridge, - 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' - ELSE NULL - END AS int_surface + bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct') AS bridge FROM planet_osm_line WHERE aeroway IN ('runway', 'taxiway') - UNION ALL - (SELECT - ST_MakeEnvelope(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244, 900913) AS way, - 'globalboundingbox' AS feature, - NULL AS aeroway, - NULL AS bridge, - NULL AS int_surface - ) - ) AS features ORDER BY bridge NULLS FIRST, - CASE WHEN aeroway = 'runway' THEN 10 ELSE 0 END, - CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END + CASE WHEN aeroway = 'runway' THEN 10 ELSE 0 END ) AS aeroways properties: minzoom: 11 - cache-features: true - id: admin-low-zoom geometry: linestring <<: *extents @@ -1609,23 +1472,24 @@ Layer: COALESCE( 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', - 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, + 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site', 'gallery') THEN tourism ELSE NULL END, 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bbq', 'bicycle_rental', 'bureau_de_change', 'bus_station', 'cafe', 'public_bath', 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'taxi', 'theatre', 'toilets', 'drinking_water', - 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', 'vehicle_inspection', 'charging_station', 'arts_centre', 'ferry_terminal', 'marketplace', 'waste_disposal', 'shower', 'bbq', - 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental') THEN amenity ELSE NULL END, + 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental', 'bicycle_repair_station') THEN amenity ELSE NULL END, 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' else NULL END, 'shop' || CASE WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE '' END, 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', - 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide') THEN leisure ELSE NULL END, - 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney') + 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', 'swimming_area') + THEN leisure ELSE NULL END, + 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, 'natural_' || CASE WHEN "natural" IN ('spring') THEN "natural" ELSE NULL END, 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site', 'fort', 'castle', 'manor', 'city_gate') @@ -1656,6 +1520,7 @@ Layer: tags->'tower:construction' as "tower:construction", tags->'tower:type' as "tower:type", tags->'castle_type' as castle_type, + tags->'sport' as sport, tags->'information' as information, CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', @@ -1665,7 +1530,7 @@ Layer: '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', + 'music', 'medical_supply', 'dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand', 'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop ELSE 'other' END AS shop, way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels @@ -1673,14 +1538,15 @@ Layer: -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering WHERE aeroway IN ('helipad', 'aerodrome') OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') + 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site', 'gallery') OR amenity IS NOT NULL -- skip checking a huge list and use a null check OR tags->'advertising' IN ('column') OR shop IS NOT NULL OR (tags->'office') IS NOT NULL OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'fitness_centre', - 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', 'outdoor_seating', 'bird_hide') - OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney') + 'fitness_station', 'firepit', 'sauna', 'beach_resort', 'bowling_alley', 'outdoor_seating', 'bird_hide', + 'amusement_arcade', 'sports_centre', 'swimming_area') + OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR "natural" IN ('spring') OR historic IN ('memorial', 'monument', 'archaeological_site', 'fort', 'castle', 'manor', 'city_gate') @@ -1701,16 +1567,18 @@ Layer: (SELECT way, name, + layer, COALESCE( 'highway_' || CASE WHEN tags @> 'ford=>yes' OR tags @> 'ford=>stepping_stones' THEN 'ford' ELSE NULL END, - 'leisure_' || CASE WHEN leisure IN ('slipway') THEN leisure ELSE NULL END, + 'leisure_' || CASE WHEN leisure IN ('slipway', 'track') THEN leisure ELSE NULL END, 'attraction_' || CASE WHEN tags @> 'attraction=>water_slide' THEN 'water_slide' ELSE NULL END ) AS feature FROM planet_osm_line -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering WHERE tags @> 'ford=>yes' OR tags @> 'ford=>stepping_stones' - OR leisure IN ('slipway') + OR leisure IN ('slipway', 'track') OR tags @> 'attraction=>water_slide' + ORDER BY COALESCE(layer,0) ) AS amenity_line properties: minzoom: 16 @@ -1727,24 +1595,25 @@ Layer: COALESCE( 'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END, 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END, + 'hotel', 'motel', 'information', 'museum', 'picnic_site', 'gallery') THEN tourism ELSE NULL END, 'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bbq', 'bicycle_rental', 'bureau_de_change', 'bus_station', 'cafe', 'public_bath', 'car_rental', 'car_wash', 'cinema', 'clinic', 'community_centre', 'fire_station', 'fountain', 'fuel', 'hospital', 'ice_cream', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'bicycle_parking', 'motorcycle_parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'taxi', 'theatre', 'toilets', 'drinking_water', - 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'prison', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', 'vehicle_inspection', 'charging_station', 'arts_centre', 'ferry_terminal', 'marketplace', 'shower', 'bbq', - 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental') THEN amenity ELSE NULL END, + 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental', 'bicycle_repair_station') THEN amenity ELSE NULL END, 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' else NULL END, 'emergency_' || CASE WHEN tags->'emergency' IN ('phone') THEN tags->'emergency' ELSE NULL END, 'shop' || CASE WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE '' END, 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, 'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', - 'dog_park', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide') THEN leisure ELSE NULL END, - 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney') + 'dog_park', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', + 'swimming_area') THEN leisure ELSE NULL END, + 'man_made_' || CASE WHEN (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'obelisk', 'communications_tower', 'chimney', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, 'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END, 'waterway_' || CASE WHEN "waterway" IN ('waterfall') THEN waterway ELSE NULL END, @@ -1778,7 +1647,7 @@ Layer: tags->'denomination' as denomination, tags->'generator:source' as "generator:source", CASE - WHEN (man_made IN ('mast', 'tower', 'chimney') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) + WHEN (man_made IN ('mast', 'tower', 'chimney') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR waterway IN ('waterfall') THEN CASE WHEN tags->'height' ~ '^\d{1,3}(\.\d+)?( m)?$' THEN (SUBSTRING(tags->'height', '^(\d{1,3}(\.\d+)?)( m)?$'))::NUMERIC @@ -1794,6 +1663,7 @@ Layer: tags->'tower:construction' as "tower:construction", tags->'tower:type' as "tower:type", tags->'castle_type' as castle_type, + tags->'sport' as sport, tags->'information' as information, CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', @@ -1803,7 +1673,7 @@ Layer: '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', + 'music', 'medical_supply', 'dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand', 'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop ELSE 'other' END AS shop, NULL AS way_pixels @@ -1811,16 +1681,17 @@ Layer: -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering WHERE aeroway IN ('helipad', 'aerodrome') OR tourism IN ('artwork', 'alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'hostel', - 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site') + 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site', 'gallery') OR amenity IS NOT NULL -- skip checking a huge list and use a null check OR shop IS NOT NULL OR tags->'advertising' IN ('column') OR (tags->'office') IS NOT NULL OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway', 'dog_park', 'fitness_centre', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide') + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'sports_centre', + 'swimming_area') OR barrier IN ('toll_booth') - OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk', 'communications_tower', 'chimney') + OR (man_made IN ('mast', 'tower', 'water_tower', 'lighthouse', 'windmill', 'cross', 'obelisk', 'communications_tower', 'chimney', 'storage_tank', 'silo') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') OR waterway IN ('waterfall') @@ -2028,7 +1899,7 @@ Layer: name FROM planet_osm_polygon WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform') - OR (railway IN ('platform') + OR (railway IN ('platform') AND (tags->'location' NOT IN ('underground') OR (tags->'location') IS NULL) AND (tunnel NOT IN ('yes', 'building_passage') OR tunnel IS NULL) AND (covered NOT IN ('yes') OR covered IS NULL)) @@ -2154,7 +2025,7 @@ Layer: COALESCE( 'landuse_' || CASE WHEN landuse IN ('forest', 'military', 'farmland') THEN landuse ELSE NULL END, 'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock', - 'water', 'bay') THEN "natural" ELSE NULL END, + 'water', 'bay', 'strait') THEN "natural" ELSE NULL END, 'place_' || CASE WHEN place IN ('island') THEN place ELSE NULL END, 'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END, 'leisure_' || CASE WHEN leisure IN ('nature_reserve') THEN leisure ELSE NULL END @@ -2163,7 +2034,7 @@ Layer: CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions FROM planet_osm_polygon WHERE (landuse IN ('forest', 'military', 'farmland') - OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock', 'water', 'bay') + OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock', 'water', 'bay', 'strait') OR "place" IN ('island') OR boundary IN ('national_park') OR leisure IN ('nature_reserve')) @@ -2189,7 +2060,7 @@ Layer: COALESCE( 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'camp_site', 'caravan_site', - 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, + 'theme_park', 'museum', 'zoo', 'information', 'picnic_site', 'gallery') THEN tourism ELSE NULL END, 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'public_bath', 'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', @@ -2197,9 +2068,9 @@ Layer: 'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'bureau_de_change', 'car_rental', 'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'toilets', 'taxi', 'drinking_water', 'hunting_stand', - 'nightclub', 'veterinary', 'social_facility', 'charging_station', 'arts_centre', + 'nightclub', 'veterinary', 'social_facility', 'vehicle_inspection', 'charging_station', 'arts_centre', 'ferry_terminal', 'marketplace', 'shower', 'bbq', 'nursing_home', 'childcare', 'driving_school', - 'casino', 'boat_rental') THEN amenity ELSE NULL END, + 'casino', 'boat_rental', 'bicycle_repair_station') THEN amenity ELSE NULL END, 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' else NULL END, 'shop_' || CASE WHEN shop IN ('supermarket', 'bag', 'bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', @@ -2208,23 +2079,24 @@ Layer: 'musical_instrument', 'newsagent', 'optician', 'jewelry', 'jewellery', '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', + 'coffee', 'tyres', 'pastry', 'chocolate', 'music', 'medical_supply', 'dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand', 'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END, 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'fitness_centre', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', - 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide') THEN leisure ELSE NULL END, + 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area') THEN leisure ELSE NULL END, 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military', 'plant_nursery', 'religious') THEN landuse ELSE NULL END, - 'man_made_' || CASE WHEN (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk', 'works', 'communications_tower', 'chimney') + 'man_made_' || CASE WHEN (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk', 'works', 'communications_tower', + 'chimney', 'storage_tank', 'silo', 'wastewater_plant', 'water_works') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, 'natural_' || CASE WHEN "natural" IN ('wood', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', - 'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier') THEN "natural" ELSE NULL END, + 'grassland', 'scrub', 'beach', 'shoal', 'reef', 'glacier', 'strait') THEN "natural" ELSE NULL END, 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, 'military_' || CASE WHEN military IN ('danger_area', 'bunker') THEN military ELSE NULL END, 'historic_' || CASE WHEN historic IN ('memorial', 'monument', 'archaeological_site', 'fort', 'castle', 'manor', 'city_gate') @@ -2259,6 +2131,7 @@ Layer: tags->'office' as office, tags->'recycling_type' as recycling_type, tags->'castle_type' as castle_type, + tags->'sport' as sport, tags->'information' as information, ref, way_area, @@ -2266,15 +2139,16 @@ Layer: FROM planet_osm_polygon -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') - OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'camp_site', 'caravan_site', 'theme_park', - 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') + OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', + 'camp_site', 'caravan_site', 'theme_park', 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site', 'gallery') OR amenity IS NOT NULL -- skip checking a huge list and use a null check OR tags->'advertising' IN ('column') OR shop IS NOT NULL OR (tags->'office') IS NOT NULL OR leisure IS NOT NULL OR landuse IS NOT NULL - OR (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk', 'works', 'communications_tower', 'chimney') + OR (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'pier', 'breakwater', 'groyne', 'obelisk', 'works', 'communications_tower', + 'chimney', 'storage_tank', 'silo', 'wastewater_plant', 'water_works') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR "natural" IS NOT NULL OR place IN ('island', 'islet') @@ -2348,6 +2222,7 @@ Layer: office, recycling_type, castle_type, + sport, information, ref, way_area, @@ -2359,16 +2234,16 @@ Layer: COALESCE( 'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END, 'tourism_' || CASE WHEN tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'camp_site', 'caravan_site', - 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END, + 'theme_park', 'museum', 'zoo', 'information', 'picnic_site', 'gallery') THEN tourism ELSE NULL END, 'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 'courthouse', 'townhall', 'cinema', 'clinic', 'community_centre', 'parking', 'bicycle_parking', 'public_bath', 'motorcycle_parking', 'police', 'fire_station', 'fountain', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 'ice_cream', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'bureau_de_change','car_rental', 'car_wash', 'post_box', 'post_office', 'recycling', 'telephone', 'toilets', 'taxi', - 'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', + 'drinking_water', 'hunting_stand', 'nightclub', 'veterinary', 'social_facility', 'vehicle_inspection', 'charging_station', 'arts_centre', 'ferry_terminal', 'marketplace', 'shower', 'bbq', - 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental') THEN amenity ELSE NULL END, + 'nursing_home', 'childcare', 'driving_school', 'casino', 'boat_rental', 'bicycle_repair_station') THEN amenity ELSE NULL END, 'advertising_' || CASE WHEN tags->'advertising' in ('column') THEN tags->'advertising' else NULL END, 'shop_' || CASE WHEN shop IN ('supermarket', 'bag','bakery', 'beauty', 'bed', 'bookmaker', 'books', 'butcher', 'clothes', 'computer', 'confectionery', 'fashion', 'convenience', 'department_store', 'doityourself', 'hardware', 'fishmonger', 'florist', 'garden_centre', 'hairdresser', @@ -2377,23 +2252,24 @@ Layer: 'newsagent', 'optician', 'jewelry', 'jewellery', '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', + 'pastry', 'chocolate', 'music', 'medical_supply','dairy', 'video_games', 'houseware', 'ticket', 'charity', 'second_hand', 'interior_decoration', 'video', 'paint', 'massage', 'trade', 'wholesale') THEN shop WHEN shop IN ('no', 'vacant', 'closed', 'disused', 'empty') OR shop IS NULL THEN NULL ELSE 'other' END, 'office' || CASE WHEN tags->'office' IN ('no', 'vacant', 'closed', 'disused', 'empty') OR (tags->'office') IS NULL THEN NULL ELSE '' END, 'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'fitness_centre', 'sports_centre', 'stadium', 'track', 'pitch','playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', - 'slipway', 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', - 'bowling_alley', 'outdoor_seating', 'bird_hide') THEN leisure ELSE NULL END, + 'slipway', 'picnic_table', 'dog_park', 'fitness_station', 'firepit', 'sauna', 'beach_resort', + 'bowling_alley', 'outdoor_seating', 'bird_hide', 'amusement_arcade', 'swimming_area') THEN leisure ELSE NULL END, 'power_' || CASE WHEN power IN ('plant', 'station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END, 'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military', 'plant_nursery') THEN landuse ELSE NULL END, - 'man_made_' || CASE WHEN (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'obelisk', 'works', 'communications_tower', 'chimney') + 'man_made_' || CASE WHEN (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'obelisk', 'works', 'communications_tower', + 'chimney', 'storage_tank', 'silo', 'wastewater_plant', 'water_works') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) THEN man_made ELSE NULL END, 'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'mud', 'wetland', 'marsh', 'bay', 'spring', - 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree') + 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier', 'tree', 'strait') THEN "natural" ELSE NULL END, 'waterway_' || CASE WHEN waterway IN ('waterfall') THEN waterway ELSE NULL END, 'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END, @@ -2437,6 +2313,7 @@ Layer: tags->'office' as office, tags->'recycling_type' as recycling_type, tags->'castle_type' as castle_type, + tags->'sport' as sport, tags->'information' as information, ref, NULL AS way_area, @@ -2445,7 +2322,7 @@ Layer: -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering WHERE (aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') OR tourism IN ('artwork', 'alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'wilderness_hut', 'guest_house', 'apartment', 'camp_site', 'caravan_site', 'theme_park', - 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site') + 'museum', 'viewpoint', 'attraction', 'zoo', 'information', 'picnic_site', 'gallery') OR amenity IS NOT NULL -- skip checking a huge list and use a null check OR tags->'advertising' IN ('column') OR shop IS NOT NULL @@ -2454,7 +2331,8 @@ Layer: OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farmland', 'greenhouse_horticulture', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military', 'plant_nursery') - OR (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'cross', 'obelisk', 'works', 'communications_tower', 'chimney') + OR (man_made IN ('lighthouse', 'windmill', 'mast', 'tower', 'water_tower', 'cross', 'obelisk', 'works', 'communications_tower', + 'chimney', 'storage_tank', 'silo', 'wastewater_plant', 'water_works') AND (tags->'location' NOT IN ('roof', 'rooftop') OR (tags->'location') IS NULL)) OR "natural" IS NOT NULL OR waterway IN ('waterfall') diff --git a/roads.mss b/roads.mss index 31946bcc02..66f41e03dc 100644 --- a/roads.mss +++ b/roads.mss @@ -5,7 +5,7 @@ @service-fill: @residential-fill; @living-street-fill: #ededed; @pedestrian-fill: #dddde8; -@raceway-fill: #ffc0cb; +@raceway-fill: pink; @road-fill: #ddd; @footway-fill: salmon; @footway-fill-noaccess: #bbbbbb; @@ -17,8 +17,6 @@ @bridleway-fill-noaccess: #aaddaa; @track-fill: #996600; @track-fill-noaccess: #e2c5bb; -@track-area-fill: #cdbea0; -@platform-fill: #bbbbbb; @aeroway-fill: #bbc; @runway-fill: @aeroway-fill; @taxiway-fill: @aeroway-fill; @@ -1132,8 +1130,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } - // z_order 10 - ::construction-fill { + ::fill { /* * The construction rules for small roads are strange, since if construction is null its assumed that * it's a more major road. The line-width = 0 could be removed by playing with the query to set a construction @@ -1221,675 +1218,286 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } } - } - - // z_order 90 (platform) - ::platform-fill { - [feature = 'highway_platform'] { - [zoom >= 16] { - line-join: round; - line-width: 6; - line-color: grey; - line-cap: round; - b/line-width: 4; - b/line-color: @platform-fill; - b/line-cap: round; - b/line-join: round; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { b/line-comp-op: dst-out; } - } - } - } - [feature = 'railway_platform'] { - [zoom >= 16] { - line-join: round; - line-width: 6; - line-color: grey; - line-cap: round; - b/line-width: 4; - b/line-color: @platform-fill; - b/line-cap: round; - b/line-join: round; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { b/line-comp-op: dst-out; } - } - } - } - } - ::platform-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 16] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_platform-fill.svg'); - polygon-pattern-alignment: global; - } - } - - // z_order 90 (steps), 100, 110 - ::various-fill { - - // z_order 90 (steps) - [feature = 'highway_steps'] { - [zoom >= 13][access != 'no'], - [zoom >= 15] { - #roads-fill[zoom >= 15] { - background/line-color: @steps-casing; - background/line-cap: round; - background/line-join: round; - background/line-width: @steps-width-z15 + 2 * @paths-background-width; - background/line-opacity: 0.4; - } - line/line-color: @steps-fill; - [access = 'no'] { line/line-color: @steps-fill-noaccess; } - line/line-dasharray: 2,1; - line/line-width: @steps-width-z13; - [zoom >= 15] { line/line-width: @steps-width-z15; } - } - } - - // z_order 100 - [feature = 'highway_bridleway'], - [feature = 'highway_path'][horse = 'designated'] { - [zoom >= 13][access != 'no'], - [zoom >= 15] { - #roads-fill[zoom >= 15] { - background/line-color: @bridleway-casing; - background/line-cap: round; - background/line-join: round; - background/line-width: @bridleway-width-z15 + 2 * @paths-background-width; - background/line-opacity: 0.4; - } - line/line-color: @bridleway-fill; - [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; } - #tunnels { - line/line-join: round; - line/line-cap: round; - } - } - } - - [feature = 'highway_footway'], - [feature = 'highway_path'][bicycle != 'designated'][horse != 'designated'] { - [zoom >= 13][access != 'no'], - [zoom >= 15] { - #roads-fill[zoom >= 15] { - background/line-color: @footway-casing; - background/line-cap: round; - background/line-join: round; - background/line-width: @footway-width-z15 + 2 * @paths-background-width; - background/line-opacity: 0.4; - [zoom >= 16] { - background/line-width: @footway-width-z16 + 2 * @paths-background-width; - } - [zoom >= 18] { - background/line-width: @footway-width-z18 + 2 * @paths-background-width; - } - [zoom >= 19] { - background/line-width: @footway-width-z19 + 2 * @paths-background-width; - } - } - line/line-color: @footway-fill; - [access = 'no'] { line/line-color: @footway-fill-noaccess; } - line/line-dasharray: 1,3; - line/line-join: round; - line/line-cap: round; - line/line-width: @footway-width-z13; - [zoom >= 15][int_surface = 'paved'] { - line/line-dasharray: 2,3.5; - line/line-width: @footway-width-z15; - [zoom >= 16] { - line/line-dasharray: 3,3.5; - line/line-width: @footway-width-z16; - } - [zoom >= 17] { - line/line-dasharray: 3,3; - } - [zoom >= 18] { - line/line-width: @footway-width-z18; - } - [zoom >= 19] { - line/line-width: @footway-width-z19; - } - } - [zoom >= 15][int_surface = null] { - line/line-color: @footway-fill; - [access = 'no'] { line/line-color: @footway-fill-noaccess; } - line/line-dasharray: 1,3,2,4; - line/line-join: round; - line/line-cap: round; - line/line-width: @footway-width-z15; - [zoom >= 16] { - line/line-dasharray: 1,4,2,3; - line/line-width: @footway-width-z16; - } - [zoom >= 18] { - line/line-width: @footway-width-z18; - } - [zoom >= 19] { - line/line-width: @footway-width-z19; - } - } - [zoom >= 15][int_surface = 'unpaved'] { - line/line-color: @footway-fill; - [access = 'no'] { line/line-color: @footway-fill-noaccess; } - line/line-dasharray: 1,4; - line/line-join: round; - line/line-cap: round; - line/line-width: @footway-width-z15; - [zoom >= 16] { - line/line-width: @footway-width-z16; - } - [zoom >= 18] { - line/line-width: @footway-width-z18; - } - [zoom >= 19] { - line/line-width: @footway-width-z19; - } - } - } - } - [feature = 'highway_cycleway'], - [feature = 'highway_path'][bicycle = 'designated'] { - [zoom >= 13][access != 'no'], - [zoom >= 15] { - #roads-fill[zoom >= 15] { - background/line-color: @cycleway-casing; - background/line-cap: round; - background/line-join: round; - background/line-width: @cycleway-width-z15 + 2 * @paths-background-width; - background/line-opacity: 0.4; - [zoom >= 16] { - background/line-width: @cycleway-width-z16 + 2 * @paths-background-width; - } - [zoom >= 18] { - background/line-width: @cycleway-width-z18 + 2 * @paths-background-width; - } - [zoom >= 19] { - background/line-width: @cycleway-width-z19 + 2 * @paths-background-width; - } - } - line/line-color: @cycleway-fill; - [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } - line/line-dasharray: 1,3; - line/line-join: round; - line/line-cap: round; - line/line-width: @cycleway-width-z13; - [zoom >= 15][int_surface = 'paved'] { - line/line-dasharray: 2,3.5; - line/line-width: @cycleway-width-z15; - [zoom >= 16] { - line/line-dasharray: 3,3.5; - line/line-width: @cycleway-width-z16; - } - [zoom >= 17] { - line/line-dasharray: 3,3; - } - [zoom >= 18] { - line/line-width: @cycleway-width-z18; - } - [zoom >= 19] { - line/line-width: @cycleway-width-z19; - } - } - [zoom >= 15][int_surface = null] { - line/line-color: @cycleway-fill; - [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } - line/line-dasharray: 1,3,2,4; - line/line-join: round; - line/line-cap: round; - line/line-width: @cycleway-width-z15; - [zoom >= 16] { - line/line-dasharray: 1,4,2,3; - line/line-width: @cycleway-width-z16; - } - [zoom >= 18] { - line/line-width: @cycleway-width-z18; - } - [zoom >= 19] { - line/line-width: @cycleway-width-z19; - } - } - [zoom >= 15][int_surface = 'unpaved'] { - line/line-color: @cycleway-fill; - [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } - line/line-dasharray: 1,4; - line/line-join: round; - line/line-cap: round; - line/line-width: @cycleway-width-z15; - [zoom >= 16] { - line/line-width: @cycleway-width-z16; - } - [zoom >= 18] { - line/line-width: @cycleway-width-z18; - } - [zoom >= 19] { - line/line-width: @cycleway-width-z19; - } - } - } - } - - // z_order 110 - [feature = 'highway_track'] { - [zoom >= 13][access != 'no'], - [zoom >= 15] { - /* The white casing that you mainly see against forests and other dark features */ - #roads-fill[zoom >= 15] { - background/line-opacity: 0.4; - background/line-color: @track-casing; - background/line-join: round; - background/line-cap: round; - background/line-width: @track-width-z15 + 2 * @paths-background-width; - /* With the heavier dasharrays on grade1 and grade2 it helps to make the casing a bit larger */ - [tracktype = 'grade1'] { - background/line-width: @track-grade1-width-z15 + 2 * @paths-background-width; - } - [tracktype = 'grade2'] { - background/line-width: @track-grade2-width-z15 + 2 * @paths-background-width; - } - } - - /* Set the properties of the brown inside */ - line/line-color: @track-fill; - [access = 'no'] { line/line-color: @track-fill-noaccess; } - line/line-dasharray: 5,4,2,4; - line/line-cap: round; - line/line-join: round; - line/line-opacity: 0.8; - line/line-clip:false; - - line/line-width: @track-width-z13; - - [tracktype = 'grade1'] { - line/line-dasharray: 100,0; - } - [tracktype = 'grade2'] { - line/line-dasharray: 8.8,3.2; - } - [tracktype = 'grade3'] { - line/line-dasharray: 5.6,4.0; - } - [tracktype = 'grade4'] { - line/line-dasharray: 3.2,4.8; - } - [tracktype = 'grade5'] { - line/line-dasharray: 1.6,6.4; - } - - [zoom >= 15] { - line/line-width: @track-width-z15; - [tracktype = 'grade1'] { - line/line-dasharray: 100,0; - } - [tracktype = 'grade2'] { - line/line-dasharray: 11,4; - } - [tracktype = 'grade3'] { - line/line-dasharray: 7,5; - } - [tracktype = 'grade4'] { - line/line-dasharray: 4,6; - } - [tracktype = 'grade5'] { - line/line-dasharray: 2,8; - } - } - } - } - - } - - // z_order 150, 200 - ::white_link-fill { - // z_order 150 - [feature = 'highway_service'] { - [zoom >= 13][service = 'INT-normal'] { - line-width: @service-width-z13; - line-color: @unimportant-road; - } - [zoom >= 14][service = 'INT-normal'], - [zoom >= 16][service = 'INT-minor'] { - line-color: @service-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } - [service = 'INT-normal'] { - line-width: @service-width-z14 - 2 * @casing-width-z14; - [zoom >= 16] { line-width: @service-width-z16 - 2 * @casing-width-z16; } - [zoom >= 17] { line-width: @service-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @service-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @service-width-z19 - 2 * @casing-width-z19; } - } - [service = 'INT-minor'] { - line-width: @minor-service-width-z16 - 2 * @casing-width-z16; - [zoom >= 17] { line-width: @minor-service-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @minor-service-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @minor-service-width-z19 - 2 * @casing-width-z19; } - } - line-join: round; - line-cap: round; - #tunnels { - line-color: darken(white, 5%); - } - #bridges { - [service = 'INT-normal'] { - line-width: @service-width-z14 - 2 * @bridge-casing-width-z14; - [zoom >= 16] { line-width: @service-width-z16 - 2 * @bridge-casing-width-z16; } - [zoom >= 17] { line-width: @service-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @service-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @service-width-z19 - 2 * @bridge-casing-width-z19; } - } - [service = 'INT-minor'] { - line-width: @minor-service-width-z16 - 2 * @bridge-casing-width-z16; - [zoom >= 17] { line-width: @minor-service-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @minor-service-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @minor-service-width-z19 - 2 * @bridge-casing-width-z19; } - } - } - } - } - - // z_order 200 - [feature = 'highway_tertiary'] { - [zoom >= 10][link = 'yes'] { - line-color: @unimportant-road; - line-width: @tertiary-width-z10; - [zoom >= 11] { - line-width: @tertiary-width-z11; - } + [feature = 'highway_motorway'] { + [zoom >= 6][link != 'yes'], + [zoom >= 10] { + line-color: @motorway-low-zoom; + line-width: @motorway-width-z6; + [zoom >= 7] { line-width: @motorway-width-z7; } + [zoom >= 8] { line-width: @motorway-width-z8; } + [zoom >= 9] { line-width: @motorway-width-z9; } + [zoom >= 10] { line-width: @motorway-width-z10; } + [zoom >= 11] { line-width: @motorway-width-z11; } [zoom >= 12] { - line-color: @tertiary-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + line-color: @motorway-fill; + line-width: @motorway-width-z12 - 2 * @major-casing-width-z12; + [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @major-casing-width-z13; } + [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @major-casing-width-z15; } + [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @major-casing-width-z17; } + [zoom >= 18] { line-width: @motorway-width-z18 - 2 * @major-casing-width-z18; } + [zoom >= 19] { line-width: @motorway-width-z19 - 2 * @major-casing-width-z19; } + [link = 'yes'] { + line-width: @motorway-link-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; } + [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; } + [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @motorway-link-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @motorway-link-width-z19 - 2 * @casing-width-z19; } } - line-width: @tertiary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @casing-width-z16; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @casing-width-z19; } #tunnels { - line-color: @tertiary-tunnel-fill; + line-color: @motorway-tunnel-fill; } #bridges { - line-width: @tertiary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @bridge-casing-width-z16; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @bridge-casing-width-z19; } + line-width: @motorway-width-z12 - 2 * @major-bridge-casing-width-z12; + [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @major-bridge-casing-width-z13; } + [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @major-bridge-casing-width-z15; } + [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @major-bridge-casing-width-z17; } + [zoom >= 18] { line-width: @motorway-width-z18 - 2 * @major-bridge-casing-width-z18; } + [zoom >= 19] { line-width: @motorway-width-z19 - 2 * @major-bridge-casing-width-z19; } + [link = 'yes'] { + line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @motorway-link-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @motorway-link-width-z19 - 2 * @bridge-casing-width-z19; } + } } line-cap: round; line-join: round; } } } - } - ::white_link-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 12] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_residential-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 210 - ::secondary_link-fill { - [feature = 'highway_secondary'] { - [zoom >= 10][link = 'yes'] { - line-color: @unimportant-road; - line-width: @secondary-width-z10; - [zoom >= 11] { line-width: @secondary-width-z11; } + [feature = 'highway_trunk'] { + [zoom >= 6][link != 'yes'], + [zoom >= 10] { + line-width: @trunk-width-z6; + line-color: @trunk-low-zoom; + [zoom >= 7] { line-width: @trunk-width-z7; } + [zoom >= 8] { line-width: @trunk-width-z8; } + [zoom >= 9] { line-width: @trunk-width-z9; } + [zoom >= 10] { line-width: @trunk-width-z10; } + [zoom >= 11] { line-width: @trunk-width-z11; } [zoom >= 12] { - line-color: @secondary-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + line-color: @trunk-fill; + line-width: @trunk-width-z12 - 2 * @major-casing-width-z12; + [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @major-casing-width-z13; } + [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @major-casing-width-z15; } + [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @major-casing-width-z17; } + [zoom >= 18] { line-width: @trunk-width-z18 - 2 * @major-casing-width-z18; } + [zoom >= 19] { line-width: @trunk-width-z19 - 2 * @major-casing-width-z19; } + [link = 'yes'] { + line-width: @trunk-link-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @trunk-link-width-z13 - 2 * @casing-width-z13; } + [zoom >= 15] { line-width: @trunk-link-width-z15 - 2 * @casing-width-z15; } + [zoom >= 17] { line-width: @trunk-link-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @trunk-link-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @trunk-link-width-z19 - 2 * @casing-width-z19; } } - line-width: @secondary-link-width-z12 - 2 * @casing-width-z12; - line-cap: round; - line-join: round; - [zoom >= 13] { - [zoom >= 13] { line-width: @secondary-link-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @secondary-link-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @secondary-link-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @secondary-link-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @secondary-link-width-z19 - 2 * @casing-width-z19; } - #tunnels { - line-color: @secondary-tunnel-fill; - } - #bridges { - line-width: @secondary-link-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @secondary-link-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @secondary-link-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @secondary-link-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @secondary-link-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @secondary-link-width-z19 - 2 * @bridge-casing-width-z19; } + #tunnels { + line-color: @trunk-tunnel-fill; + } + #bridges { + line-width: @trunk-width-z12 - 2 * @major-bridge-casing-width-z12; + [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @major-bridge-casing-width-z13; } + [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @major-bridge-casing-width-z15; } + [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @major-bridge-casing-width-z17; } + [zoom >= 18] { line-width: @trunk-width-z18 - 2 * @major-bridge-casing-width-z18; } + [zoom >= 19] { line-width: @trunk-width-z19 - 2 * @major-bridge-casing-width-z19; } + [link = 'yes'] { + line-width: @trunk-link-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @trunk-link-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 15] { line-width: @trunk-link-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 17] { line-width: @trunk-link-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @trunk-link-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @trunk-link-width-z19 - 2 * @bridge-casing-width-z19; } } } + line-cap: round; + line-join: round; } } } - } - ::secondary_link-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 12] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_secondary-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 220 - ::primary_link-fill { [feature = 'highway_primary'] { - [zoom >= 10][link = 'yes'] { - line-width: @primary-width-z10; + [zoom >= 8][link != 'yes'], + [zoom >= 10] { + line-width: @primary-width-z8; line-color: @primary-low-zoom; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } + [zoom >= 9] { line-width: @primary-width-z9; } + [zoom >= 10] { line-width: @primary-width-z10; } [zoom >= 11] { line-width: @primary-width-z11; } [zoom >= 12] { line-color: @primary-fill; - line-width: @primary-link-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @primary-link-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @primary-link-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @primary-link-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @primary-link-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @primary-link-width-z19 - 2 * @casing-width-z19; } + line-width: @primary-width-z12 - 2 * @major-casing-width-z12; + [zoom >= 13] { line-width: @primary-width-z13 - 2 * @major-casing-width-z13; } + [zoom >= 15] { line-width: @primary-width-z15 - 2 * @major-casing-width-z15; } + [zoom >= 17] { line-width: @primary-width-z17 - 2 * @major-casing-width-z17; } + [zoom >= 18] { line-width: @primary-width-z18 - 2 * @major-casing-width-z18; } + [zoom >= 19] { line-width: @primary-width-z19 - 2 * @major-casing-width-z19; } + [link = 'yes'] { + line-width: @primary-link-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @primary-link-width-z13 - 2 * @casing-width-z13; } + [zoom >= 15] { line-width: @primary-link-width-z15 - 2 * @casing-width-z15; } + [zoom >= 17] { line-width: @primary-link-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @primary-link-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @primary-link-width-z19 - 2 * @casing-width-z19; } + } #tunnels { line-color: @primary-tunnel-fill; } #bridges { - line-width: @primary-link-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @primary-link-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @primary-link-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @primary-link-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @primary-link-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @primary-link-width-z19 - 2 * @bridge-casing-width-z19; } + line-width: @primary-width-z12 - 2 * @major-bridge-casing-width-z12; + [zoom >= 13] { line-width: @primary-width-z13 - 2 * @major-bridge-casing-width-z13; } + [zoom >= 15] { line-width: @primary-width-z15 - 2 * @major-bridge-casing-width-z15; } + [zoom >= 17] { line-width: @primary-width-z17 - 2 * @major-bridge-casing-width-z17; } + [zoom >= 18] { line-width: @primary-width-z18 - 2 * @major-bridge-casing-width-z18; } + [zoom >= 19] { line-width: @primary-width-z19 - 2 * @major-bridge-casing-width-z19; } + [link = 'yes'] { + line-width: @primary-link-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @primary-link-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 15] { line-width: @primary-link-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 17] { line-width: @primary-link-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @primary-link-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @primary-link-width-z19 - 2 * @bridge-casing-width-z19; } + } } line-cap: round; line-join: round; } } } - } - ::primary_link-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 10] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_primary-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_primary-fill.svg'); - } - } - } - // z_order 230 - ::trunk_link-fill { - [feature = 'highway_trunk'] { - [zoom >= 10][link = 'yes'] { - line-width: @trunk-width-z10; - line-color: @trunk-low-zoom; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } - [zoom >= 11] { line-width: @trunk-width-z11; } + [feature = 'highway_secondary'] { + [zoom >= 9][link != 'yes'], + [zoom >= 10] { + line-color: @unimportant-road; + line-width: @secondary-width-z9; + [zoom >= 10] { line-width: @secondary-width-z10; } + [zoom >= 11] { line-width: @secondary-width-z11; } [zoom >= 12] { - line-color: @trunk-fill; - line-width: @trunk-link-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @trunk-link-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @trunk-link-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @trunk-link-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @trunk-link-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @trunk-link-width-z19 - 2 * @casing-width-z19; } - #tunnels { - line-color: @trunk-tunnel-fill; - } - #bridges { - line-width: @trunk-link-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @trunk-link-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @trunk-link-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @trunk-link-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @trunk-link-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @trunk-link-width-z19 - 2 * @bridge-casing-width-z19; } - } + line-color: @secondary-fill; + line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; line-cap: round; line-join: round; + [zoom >= 13] { + [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @secondary-casing-width-z13; } + [zoom >= 14] { line-width: @secondary-width-z14 - 2 * @secondary-casing-width-z14; } + [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @secondary-casing-width-z15; } + [zoom >= 16] { line-width: @secondary-width-z16 - 2 * @secondary-casing-width-z16; } + [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @secondary-casing-width-z17; } + [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @secondary-casing-width-z18; } + [zoom >= 19] { line-width: @secondary-width-z19 - 2 * @secondary-casing-width-z19; } + [link = 'yes'] { + line-width: @secondary-link-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @secondary-link-width-z13 - 2 * @casing-width-z13; } + [zoom >= 15] { line-width: @secondary-link-width-z15 - 2 * @casing-width-z15; } + [zoom >= 17] { line-width: @secondary-link-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @secondary-link-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @secondary-link-width-z19 - 2 * @casing-width-z19; } + } + #tunnels { + line-color: @secondary-tunnel-fill; + } + #bridges { + line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @major-bridge-casing-width-z13; } + [zoom >= 14] { line-width: @secondary-width-z14 - 2 * @major-bridge-casing-width-z14; } + [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @major-bridge-casing-width-z15; } + [zoom >= 16] { line-width: @secondary-width-z16 - 2 * @major-bridge-casing-width-z16; } + [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @major-bridge-casing-width-z17; } + [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @major-bridge-casing-width-z18; } + [zoom >= 19] { line-width: @secondary-width-z19 - 2 * @major-bridge-casing-width-z19; } + [link = 'yes'] { + line-width: @secondary-link-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @secondary-link-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 15] { line-width: @secondary-link-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 17] { line-width: @secondary-link-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @secondary-link-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @secondary-link-width-z19 - 2 * @bridge-casing-width-z19; } + } + } + } } } } - } - ::trunk_link-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 10] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_trunk-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_trunk-fill.svg'); - } - } - } - // z_order 240 - ::motorway_link-fill { - [feature = 'highway_motorway'][link = 'yes'] { + [feature = 'highway_tertiary'] { [zoom >= 10] { - line-color: @motorway-low-zoom; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + line-color: @unimportant-road; + line-width: @tertiary-width-z10; + [zoom >= 11] { + line-width: @tertiary-width-z11; } - line-width: @motorway-width-z10; - [zoom >= 11] { line-width: @motorway-width-z11; } [zoom >= 12] { - line-color: @motorway-fill; - line-width: @motorway-link-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @motorway-link-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @motorway-link-width-z19 - 2 * @casing-width-z19; } + line-color: @tertiary-fill; + line-width: @tertiary-width-z12 - 2 * @casing-width-z12; + [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; } + [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; } + [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; } + [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @casing-width-z16; } + [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @casing-width-z19; } #tunnels { - line-color: @motorway-tunnel-fill; + line-color: @tertiary-tunnel-fill; } #bridges { - line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @motorway-link-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @motorway-link-width-z19 - 2 * @bridge-casing-width-z19; } + line-width: @tertiary-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13; } + [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; } + [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @bridge-casing-width-z16; } + [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @bridge-casing-width-z19; } } line-cap: round; line-join: round; } } } - } - ::motorway_link-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 10] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_motorway-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_motorway-fill.svg'); - } - } - } - // z_order 300 - ::raceway-fill { - [feature = 'highway_raceway'] { - [zoom >= 12] { - line-color: @raceway-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } - line-width: 1.2; - line-join: round; - line-cap: round; + [feature = 'highway_residential'], + [feature = 'highway_unclassified'] { + [zoom = 12][feature = 'highway_residential'] { + line-color: @unimportant-road; + line-width: @residential-width-z12; + } + [zoom = 12][feature = 'highway_unclassified'] { + line-color: @unimportant-road; + line-width: @unclassified-width-z12; } - [zoom >= 13] { line-width: 2; } - [zoom >= 14] { line-width: 3; } - [zoom >= 15] { line-width: 6; } - [zoom >= 18] { line-width: 8; } - [zoom >= 19] { line-width: 12; } - [zoom >= 20] { line-width: 24; } - } - } - ::raceway-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 12] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_raceway-fill.svg'); - polygon-pattern-alignment: global; - } - } - - // z_order 310 - ::pedestrian-fill { - [feature = 'highway_pedestrian'] { [zoom >= 13] { - line-width: @living-street-width-z13 - 2 * @casing-width-z13; - [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @casing-width-z14; } - [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @casing-width-z15; } - [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @casing-width-z16; } - [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @pedestrian-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @pedestrian-width-z19 - 2 * @casing-width-z19; } - line-color: @pedestrian-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + line-width: @residential-width-z13 - 2 * @residential-casing-width-z13; + [zoom >= 14] { line-width: @residential-width-z14 - 2 * @casing-width-z14; } + [zoom >= 15] { line-width: @residential-width-z15 - 2 * @casing-width-z15; } + [zoom >= 16] { line-width: @residential-width-z16 - 2 * @casing-width-z16; } + [zoom >= 17] { line-width: @residential-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @residential-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @residential-width-z19 - 2 * @casing-width-z19; } + #roads-fill, #bridges { + line-color: @residential-fill; + } + #tunnels { + line-color: @residential-tunnel-fill; } #bridges { - line-width: @pedestrian-width-z13 - 2 * @casing-width-z13; - [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @bridge-casing-width-z14; } - [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @bridge-casing-width-z16; } - [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @pedestrian-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @pedestrian-width-z19 - 2 * @bridge-casing-width-z19; } + line-width: @residential-width-z13 - 2 * @bridge-casing-width-z13; + [zoom >= 14] { line-width: @residential-width-z14 - 2 * @bridge-casing-width-z14; } + [zoom >= 15] { line-width: @residential-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 16] { line-width: @residential-width-z16 - 2 * @bridge-casing-width-z16; } + [zoom >= 17] { line-width: @residential-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @residential-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @residential-width-z19 - 2 * @bridge-casing-width-z19; } } - line-join: round; line-cap: round; + line-join: round; } } - } - ::pedestrian-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 13] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_pedestrian-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 320 - ::living_street-fill { [feature = 'highway_living_street'] { [zoom >= 13] { line-width: @living-street-width-z13 - 2 * @casing-width-z13; @@ -1914,24 +1522,11 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 18] { line-width: @living-street-width-z18 - 2 * @bridge-casing-width-z18; } [zoom >= 19] { line-width: @living-street-width-z19 - 2 * @bridge-casing-width-z19; } } - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } line-join: round; line-cap: round; } } - } - ::living_street-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 13] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_living-street-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 330 (road) - ::road-fill { [feature = 'highway_road'] { [zoom >= 10] { line-width: 1; @@ -1959,311 +1554,374 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ #tunnels { line-color: @road-fill; } - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } } } - } - ::road-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 14] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_road-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 330 (white), 340 - ::white-fill { - [feature = 'highway_residential'], - [feature = 'highway_unclassified'] { - [zoom = 12][feature = 'highway_residential'] { - line-color: @unimportant-road; - line-width: @residential-width-z12; - } - [zoom = 12][feature = 'highway_unclassified'] { + [feature = 'highway_service'] { + [zoom >= 13][service = 'INT-normal'] { + line-width: @service-width-z13; line-color: @unimportant-road; - line-width: @unclassified-width-z12; } - [zoom >= 13] { - line-width: @residential-width-z13 - 2 * @residential-casing-width-z13; - [zoom >= 14] { line-width: @residential-width-z14 - 2 * @casing-width-z14; } - [zoom >= 15] { line-width: @residential-width-z15 - 2 * @casing-width-z15; } - [zoom >= 16] { line-width: @residential-width-z16 - 2 * @casing-width-z16; } - [zoom >= 17] { line-width: @residential-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @residential-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @residential-width-z19 - 2 * @casing-width-z19; } - #roads-fill, #bridges { - line-color: @residential-fill; + [zoom >= 14][service = 'INT-normal'], + [zoom >= 16][service = 'INT-minor'] { + line-color: @service-fill; + [service = 'INT-normal'] { + line-width: @service-width-z14 - 2 * @casing-width-z14; + [zoom >= 16] { line-width: @service-width-z16 - 2 * @casing-width-z16; } + [zoom >= 17] { line-width: @service-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @service-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @service-width-z19 - 2 * @casing-width-z19; } + } + [service = 'INT-minor'] { + line-width: @minor-service-width-z16 - 2 * @casing-width-z16; + [zoom >= 17] { line-width: @minor-service-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @minor-service-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @minor-service-width-z19 - 2 * @casing-width-z19; } } + line-join: round; + line-cap: round; #tunnels { - line-color: @residential-tunnel-fill; + line-color: darken(white, 5%); } - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + #bridges { + [service = 'INT-normal'] { + line-width: @service-width-z14 - 2 * @bridge-casing-width-z14; + [zoom >= 16] { line-width: @service-width-z16 - 2 * @bridge-casing-width-z16; } + [zoom >= 17] { line-width: @service-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @service-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @service-width-z19 - 2 * @bridge-casing-width-z19; } + } + [service = 'INT-minor'] { + line-width: @minor-service-width-z16 - 2 * @bridge-casing-width-z16; + [zoom >= 17] { line-width: @minor-service-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @minor-service-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @minor-service-width-z19 - 2 * @bridge-casing-width-z19; } + } } + } + } + + [feature = 'highway_pedestrian'] { + [zoom >= 13] { + line-width: @living-street-width-z13 - 2 * @casing-width-z13; + [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @casing-width-z14; } + [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @casing-width-z15; } + [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @casing-width-z16; } + [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @pedestrian-width-z18 - 2 * @casing-width-z18; } + [zoom >= 19] { line-width: @pedestrian-width-z19 - 2 * @casing-width-z19; } + line-color: @pedestrian-fill; #bridges { - line-width: @residential-width-z13 - 2 * @bridge-casing-width-z13; - [zoom >= 14] { line-width: @residential-width-z14 - 2 * @bridge-casing-width-z14; } - [zoom >= 15] { line-width: @residential-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 16] { line-width: @residential-width-z16 - 2 * @bridge-casing-width-z16; } - [zoom >= 17] { line-width: @residential-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @residential-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @residential-width-z19 - 2 * @bridge-casing-width-z19; } + line-width: @pedestrian-width-z13 - 2 * @casing-width-z13; + [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @bridge-casing-width-z14; } + [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @bridge-casing-width-z15; } + [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @bridge-casing-width-z16; } + [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @pedestrian-width-z18 - 2 * @bridge-casing-width-z18; } + [zoom >= 19] { line-width: @pedestrian-width-z19 - 2 * @bridge-casing-width-z19; } } + line-join: round; line-cap: round; + } + } + + [feature = 'highway_raceway'] { + [zoom >= 12] { + line-color: @raceway-fill; + line-width: 1.2; line-join: round; + line-cap: round; } + [zoom >= 13] { line-width: 2; } + [zoom >= 14] { line-width: 3; } + [zoom >= 15] { line-width: 6; } + [zoom >= 18] { line-width: 8; } + [zoom >= 19] { line-width: 12; } + [zoom >= 20] { line-width: 24; } } - [feature = 'highway_tertiary'] { - [zoom >= 10][link != 'yes'] { - line-color: @unimportant-road; - line-width: @tertiary-width-z10; - [zoom >= 11] { - line-width: @tertiary-width-z11; - } - [zoom >= 12] { - line-color: @tertiary-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - } - line-width: @tertiary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @casing-width-z16; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; } - [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @casing-width-z18; } - [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @casing-width-z19; } - #tunnels { - line-color: @tertiary-tunnel-fill; - } - #bridges { - line-width: @tertiary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; } - [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 16] { line-width: @tertiary-width-z16 - 2 * @bridge-casing-width-z16; } - [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; } - [zoom >= 18] { line-width: @tertiary-width-z18 - 2 * @bridge-casing-width-z18; } - [zoom >= 19] { line-width: @tertiary-width-z19 - 2 * @bridge-casing-width-z19; } - } - line-cap: round; - line-join: round; + [feature = 'highway_platform'] { + [zoom >= 16] { + line-join: round; + line-width: 6; + line-color: grey; + line-cap: round; + b/line-width: 4; + b/line-color: #bbbbbb; + b/line-cap: round; + b/line-join: round; + } + } + + [feature = 'highway_steps'] { + [zoom >= 13][access != 'no'], + [zoom >= 15] { + #roads-fill[zoom >= 15] { + background/line-color: @steps-casing; + background/line-cap: round; + background/line-join: round; + background/line-width: @steps-width-z15 + 2 * @paths-background-width; + background/line-opacity: 0.4; } + line/line-color: @steps-fill; + [access = 'no'] { line/line-color: @steps-fill-noaccess; } + line/line-dasharray: 2,1; + line/line-width: @steps-width-z13; + [zoom >= 15] { line/line-width: @steps-width-z15; } } } - } - ::white-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 12] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_residential-fill.svg'); - polygon-pattern-alignment: global; + [feature = 'highway_bridleway'], + [feature = 'highway_path'][horse = 'designated'] { + [zoom >= 13][access != 'no'], + [zoom >= 15] { + #roads-fill[zoom >= 15] { + background/line-color: @bridleway-casing; + background/line-cap: round; + background/line-join: round; + background/line-width: @bridleway-width-z15 + 2 * @paths-background-width; + background/line-opacity: 0.4; + } + line/line-color: @bridleway-fill; + [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; } + #tunnels { + line/line-join: round; + line/line-cap: round; + } + } } - } - // z_order 350 - ::secondary-fill { - [feature = 'highway_secondary'] { - [zoom >= 9][link != 'yes'] { - line-color: @unimportant-road; - line-width: @secondary-width-z9; - [zoom >= 10] { line-width: @secondary-width-z10; } - [zoom >= 11] { line-width: @secondary-width-z11; } - [zoom >= 12] { - line-color: @secondary-fill; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + [feature = 'highway_footway'], + [feature = 'highway_path'][bicycle != 'designated'][horse != 'designated'] { + [zoom >= 13][access != 'no'], + [zoom >= 15] { + #roads-fill[zoom >= 15] { + background/line-color: @footway-casing; + background/line-cap: round; + background/line-join: round; + background/line-width: @footway-width-z15 + 2 * @paths-background-width; + background/line-opacity: 0.4; + [zoom >= 16] { + background/line-width: @footway-width-z16 + 2 * @paths-background-width; + } + [zoom >= 18] { + background/line-width: @footway-width-z18 + 2 * @paths-background-width; + } + [zoom >= 19] { + background/line-width: @footway-width-z19 + 2 * @paths-background-width; + } + } + line/line-color: @footway-fill; + [access = 'no'] { line/line-color: @footway-fill-noaccess; } + line/line-dasharray: 1,3; + line/line-join: round; + line/line-cap: round; + line/line-width: @footway-width-z13; + [zoom >= 15][int_surface = 'paved'] { + line/line-dasharray: 2,3.5; + line/line-width: @footway-width-z15; + [zoom >= 16] { + line/line-dasharray: 3,3.5; + line/line-width: @footway-width-z16; + } + [zoom >= 17] { + line/line-dasharray: 3,3; + } + [zoom >= 18] { + line/line-width: @footway-width-z18; + } + [zoom >= 19] { + line/line-width: @footway-width-z19; + } + } + [zoom >= 15][int_surface = null] { + line/line-color: @footway-fill; + [access = 'no'] { line/line-color: @footway-fill-noaccess; } + line/line-dasharray: 1,3,2,4; + line/line-join: round; + line/line-cap: round; + line/line-width: @footway-width-z15; + [zoom >= 16] { + line/line-dasharray: 1,4,2,3; + line/line-width: @footway-width-z16; + } + [zoom >= 18] { + line/line-width: @footway-width-z18; + } + [zoom >= 19] { + line/line-width: @footway-width-z19; + } + } + [zoom >= 15][int_surface = 'unpaved'] { + line/line-color: @footway-fill; + [access = 'no'] { line/line-color: @footway-fill-noaccess; } + line/line-dasharray: 1,4; + line/line-join: round; + line/line-cap: round; + line/line-width: @footway-width-z15; + [zoom >= 16] { + line/line-width: @footway-width-z16; } - line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; - line-cap: round; - line-join: round; - [zoom >= 13] { - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @secondary-casing-width-z13; } - [zoom >= 14] { line-width: @secondary-width-z14 - 2 * @secondary-casing-width-z14; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @secondary-casing-width-z15; } - [zoom >= 16] { line-width: @secondary-width-z16 - 2 * @secondary-casing-width-z16; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @secondary-casing-width-z17; } - [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @secondary-casing-width-z18; } - [zoom >= 19] { line-width: @secondary-width-z19 - 2 * @secondary-casing-width-z19; } - #tunnels { - line-color: @secondary-tunnel-fill; - } - #bridges { - line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @major-bridge-casing-width-z13; } - [zoom >= 14] { line-width: @secondary-width-z14 - 2 * @major-bridge-casing-width-z14; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @major-bridge-casing-width-z15; } - [zoom >= 16] { line-width: @secondary-width-z16 - 2 * @major-bridge-casing-width-z16; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @major-bridge-casing-width-z17; } - [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @major-bridge-casing-width-z18; } - [zoom >= 19] { line-width: @secondary-width-z19 - 2 * @major-bridge-casing-width-z19; } - } + [zoom >= 18] { + line/line-width: @footway-width-z18; + } + [zoom >= 19] { + line/line-width: @footway-width-z19; } } } } - } - ::secondary-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 12] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_secondary-fill.svg'); - polygon-pattern-alignment: global; - } - } - // z_order 360 - ::primary-fill { - [feature = 'highway_primary'] { - [zoom >= 8][link != 'yes'] { - line-width: @primary-width-z8; - line-color: @primary-low-zoom; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + [feature = 'highway_cycleway'], + [feature = 'highway_path'][bicycle = 'designated'] { + [zoom >= 13][access != 'no'], + [zoom >= 15] { + #roads-fill[zoom >= 15] { + background/line-color: @cycleway-casing; + background/line-cap: round; + background/line-join: round; + background/line-width: @cycleway-width-z15 + 2 * @paths-background-width; + background/line-opacity: 0.4; + [zoom >= 16] { + background/line-width: @cycleway-width-z16 + 2 * @paths-background-width; + } + [zoom >= 18] { + background/line-width: @cycleway-width-z18 + 2 * @paths-background-width; + } + [zoom >= 19] { + background/line-width: @cycleway-width-z19 + 2 * @paths-background-width; + } } - [zoom >= 9] { line-width: @primary-width-z9; } - [zoom >= 10] { line-width: @primary-width-z10; } - [zoom >= 11] { line-width: @primary-width-z11; } - [zoom >= 12] { - line-color: @primary-fill; - line-width: @primary-width-z12 - 2 * @major-casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @major-casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @major-casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @major-casing-width-z17; } - [zoom >= 18] { line-width: @primary-width-z18 - 2 * @major-casing-width-z18; } - [zoom >= 19] { line-width: @primary-width-z19 - 2 * @major-casing-width-z19; } - #tunnels { - line-color: @primary-tunnel-fill; + line/line-color: @cycleway-fill; + [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } + line/line-dasharray: 1,3; + line/line-join: round; + line/line-cap: round; + line/line-width: @cycleway-width-z13; + [zoom >= 15][int_surface = 'paved'] { + line/line-dasharray: 2,3.5; + line/line-width: @cycleway-width-z15; + [zoom >= 16] { + line/line-dasharray: 3,3.5; + line/line-width: @cycleway-width-z16; } - #bridges { - line-width: @primary-width-z12 - 2 * @major-bridge-casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @major-bridge-casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @major-bridge-casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @major-bridge-casing-width-z17; } - [zoom >= 18] { line-width: @primary-width-z18 - 2 * @major-bridge-casing-width-z18; } - [zoom >= 19] { line-width: @primary-width-z19 - 2 * @major-bridge-casing-width-z19; } + [zoom >= 17] { + line/line-dasharray: 3,3; + } + [zoom >= 18] { + line/line-width: @cycleway-width-z18; + } + [zoom >= 19] { + line/line-width: @cycleway-width-z19; } - line-cap: round; - line-join: round; } - } - } - } - ::primary-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 8] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_primary-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_primary-fill.svg'); - } - } - } - - // z_order 370 - ::trunk-fill { - [feature = 'highway_trunk'] { - [zoom >= 6][link != 'yes'] { - line-width: @trunk-width-z6; - line-color: @trunk-low-zoom; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + [zoom >= 15][int_surface = null] { + line/line-color: @cycleway-fill; + [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } + line/line-dasharray: 1,3,2,4; + line/line-join: round; + line/line-cap: round; + line/line-width: @cycleway-width-z15; + [zoom >= 16] { + line/line-dasharray: 1,4,2,3; + line/line-width: @cycleway-width-z16; + } + [zoom >= 18] { + line/line-width: @cycleway-width-z18; + } + [zoom >= 19] { + line/line-width: @cycleway-width-z19; + } } - [zoom >= 7] { line-width: @trunk-width-z7; } - [zoom >= 8] { line-width: @trunk-width-z8; } - [zoom >= 9] { line-width: @trunk-width-z9; } - [zoom >= 10] { line-width: @trunk-width-z10; } - [zoom >= 11] { line-width: @trunk-width-z11; } - [zoom >= 12] { - line-color: @trunk-fill; - line-width: @trunk-width-z12 - 2 * @major-casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @major-casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @major-casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @major-casing-width-z17; } - [zoom >= 18] { line-width: @trunk-width-z18 - 2 * @major-casing-width-z18; } - [zoom >= 19] { line-width: @trunk-width-z19 - 2 * @major-casing-width-z19; } - #tunnels { - line-color: @trunk-tunnel-fill; + [zoom >= 15][int_surface = 'unpaved'] { + line/line-color: @cycleway-fill; + [access = 'no'] { line/line-color: @cycleway-fill-noaccess; } + line/line-dasharray: 1,4; + line/line-join: round; + line/line-cap: round; + line/line-width: @cycleway-width-z15; + [zoom >= 16] { + line/line-width: @cycleway-width-z16; } - #bridges { - line-width: @trunk-width-z12 - 2 * @major-bridge-casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @major-bridge-casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @major-bridge-casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @major-bridge-casing-width-z17; } - [zoom >= 18] { line-width: @trunk-width-z18 - 2 * @major-bridge-casing-width-z18; } - [zoom >= 19] { line-width: @trunk-width-z19 - 2 * @major-bridge-casing-width-z19; } + [zoom >= 18] { + line/line-width: @cycleway-width-z18; + } + [zoom >= 19] { + line/line-width: @cycleway-width-z19; } - line-cap: round; - line-join: round; } } } - } - ::trunk-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 6] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_trunk-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_trunk-fill.svg'); - } - } - } - // z_order 380 - ::motorway-fill { - [feature = 'highway_motorway'][link != 'yes'] { - [zoom >= 6] { - line-color: @motorway-low-zoom; - line-width: @motorway-width-z6; - #roads-low-zoom, #roads-fill, #bridges { - [int_surface = 'unpaved'] { line-comp-op: dst-out; } + [feature = 'highway_track'] { + [zoom >= 13][access != 'no'], + [zoom >= 15] { + /* The white casing that you mainly see against forests and other dark features */ + #roads-fill[zoom >= 15] { + background/line-opacity: 0.4; + background/line-color: @track-casing; + background/line-join: round; + background/line-cap: round; + background/line-width: @track-width-z15 + 2 * @paths-background-width; + /* With the heavier dasharrays on grade1 and grade2 it helps to make the casing a bit larger */ + [tracktype = 'grade1'] { + background/line-width: @track-grade1-width-z15 + 2 * @paths-background-width; + } + [tracktype = 'grade2'] { + background/line-width: @track-grade2-width-z15 + 2 * @paths-background-width; + } } - [zoom >= 7] { line-width: @motorway-width-z7; } - [zoom >= 8] { line-width: @motorway-width-z8; } - [zoom >= 9] { line-width: @motorway-width-z9; } - [zoom >= 10] { line-width: @motorway-width-z10; } - [zoom >= 11] { line-width: @motorway-width-z11; } - [zoom >= 12] { - line-color: @motorway-fill; - line-width: @motorway-width-z12 - 2 * @major-casing-width-z12; - [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @major-casing-width-z13; } - [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @major-casing-width-z15; } - [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @major-casing-width-z17; } - [zoom >= 18] { line-width: @motorway-width-z18 - 2 * @major-casing-width-z18; } - [zoom >= 19] { line-width: @motorway-width-z19 - 2 * @major-casing-width-z19; } - #tunnels { - line-color: @motorway-tunnel-fill; + + /* Set the properties of the brown inside */ + line/line-color: @track-fill; + [access = 'no'] { line/line-color: @track-fill-noaccess; } + line/line-dasharray: 5,4,2,4; + line/line-cap: round; + line/line-join: round; + line/line-opacity: 0.8; + line/line-clip:false; + + line/line-width: @track-width-z13; + + [tracktype = 'grade1'] { + line/line-dasharray: 100,0; + } + [tracktype = 'grade2'] { + line/line-dasharray: 8.8,3.2; + } + [tracktype = 'grade3'] { + line/line-dasharray: 5.6,4.0; + } + [tracktype = 'grade4'] { + line/line-dasharray: 3.2,4.8; + } + [tracktype = 'grade5'] { + line/line-dasharray: 1.6,6.4; + } + + [zoom >= 15] { + line/line-width: @track-width-z15; + [tracktype = 'grade1'] { + line/line-dasharray: 100,0; } - #bridges { - line-width: @motorway-width-z12 - 2 * @major-bridge-casing-width-z12; - [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @major-bridge-casing-width-z13; } - [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @major-bridge-casing-width-z15; } - [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @major-bridge-casing-width-z17; } - [zoom >= 18] { line-width: @motorway-width-z18 - 2 * @major-bridge-casing-width-z18; } - [zoom >= 19] { line-width: @motorway-width-z19 - 2 * @major-bridge-casing-width-z19; } + [tracktype = 'grade2'] { + line/line-dasharray: 11,4; + } + [tracktype = 'grade3'] { + line/line-dasharray: 7,5; + } + [tracktype = 'grade4'] { + line/line-dasharray: 4,6; + } + [tracktype = 'grade5'] { + line/line-dasharray: 2,8; } - line-cap: round; - line-join: round; } } } - } - ::motorway-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 6] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_motorway-low-zoom.svg'); - polygon-pattern-alignment: global; - [zoom >= 12] { - polygon-pattern-file: url('symbols/unpaved/unpaved_motorway-fill.svg'); - } - } - } - - // z_order from 400 to 440 - ::railway-fill { [feature = 'railway_rail'][zoom >= 8], [feature = 'railway_INT-spur-siding-yard'][zoom >= 13] { @@ -2479,6 +2137,19 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } + [feature = 'railway_platform'] { + [zoom >= 16] { + line-join: round; + line-width: 6; + line-color: grey; + line-cap: round; + b/line-width: 4; + b/line-color: #bbbbbb; + b/line-cap: round; + b/line-join: round; + } + } + [feature = 'railway_turntable'] { [zoom >= 16] { line-width: 1.5; @@ -2601,636 +2272,328 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } #turning-circle-fill { - - ::track { - [int_tc_type = 'track'][zoom >= 15] { - marker-fill: @track-fill; - marker-width: 6; - marker-height: 6; - [zoom >= 17] { - marker-width: 10; - marker-height: 10; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - } - } - - ::service { - [int_tc_type = 'service'][int_tc_service = 'INT-minor'][zoom >= 18] { - marker-fill: @service-fill; - marker-width: @minor-service-width-z18 * 1.6; - marker-height: @minor-service-width-z18 * 1.6; - [zoom >= 19] { - marker-width: @minor-service-width-z19 * 1.6; - marker-height: @minor-service-width-z19 * 1.6; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - [int_surface = 'unpaved'] { marker-comp-op: dst-out; } - } - [int_tc_type = 'service'][int_tc_service = 'INT-normal'][zoom >= 16] { - marker-fill: @service-fill; - marker-width: @service-width-z16 * 1.6; - marker-height: @service-width-z16 * 1.6; - [zoom >= 17] { - marker-width: @service-width-z17 * 1.6; - marker-height: @service-width-z17 * 1.6; - } - [zoom >= 18] { - marker-width: @service-width-z18 * 1.6; - marker-height: @service-width-z18 * 1.6; - } - [zoom >= 19] { - marker-width: @service-width-z19 * 1.6; - marker-height: @service-width-z19 * 1.6; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - [int_surface = 'unpaved'] { marker-comp-op: dst-out; } - } - } - - ::service-pattern { - [feature = 'globalboundingbox'][zoom >= 16] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_residential-fill.svg'); - polygon-pattern-alignment: global; - } - } - - ::living_street { - [int_tc_type = 'living_street'][zoom >= 15] { - marker-fill: @living-street-fill; - marker-width: @living-street-width-z15 * 1.6; - marker-height: @living-street-width-z15 * 1.6; - [zoom >= 16] { - marker-width: @living-street-width-z16 * 1.6; - marker-height: @living-street-width-z16 * 1.6; - } - [zoom >= 17] { - marker-width: @living-street-width-z17 * 1.6; - marker-height: @living-street-width-z17 * 1.6; - } - [zoom >= 18] { - marker-width: @living-street-width-z18 * 1.6; - marker-height: @living-street-width-z18 * 1.6; - } - [zoom >= 19] { - marker-width: @living-street-width-z19 * 1.6; - marker-height: @living-street-width-z19 * 1.6; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - [int_surface = 'unpaved'] { marker-comp-op: dst-out; } - } - } - - ::living_street-pattern { - [feature = 'globalboundingbox'][zoom >= 15] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_living-street-fill.svg'); - polygon-pattern-alignment: global; - } - } - - ::white_roads { - [int_tc_type = 'residential'], - [int_tc_type = 'unclassified'] { - [zoom >= 15] { - marker-fill: @residential-fill; - marker-width: @residential-width-z15 * 1.6; - marker-height: @residential-width-z15 * 1.6; - [zoom >= 16] { - marker-width: @residential-width-z16 * 1.6; - marker-height: @residential-width-z16 * 1.6; - } - [zoom >= 17] { - marker-width: @residential-width-z17 * 1.6; - marker-height: @residential-width-z17 * 1.6; - } - [zoom >= 18] { - marker-width: @residential-width-z18 * 1.6; - marker-height: @residential-width-z18 * 1.6; - } - [zoom >= 19] { - marker-width: @residential-width-z19 * 1.6; - marker-height: @residential-width-z19 * 1.6; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - [int_surface = 'unpaved'] { marker-comp-op: dst-out; } - } - } - [int_tc_type = 'tertiary'][zoom >= 15] { - marker-fill: @tertiary-fill; - marker-width: @tertiary-width-z15 * 1.6; - marker-height: @tertiary-width-z15 * 1.6; - [zoom >= 16] { - marker-width: @tertiary-width-z16 * 1.6; - marker-height: @tertiary-width-z16 * 1.6; - } - [zoom >= 17] { - marker-width: @tertiary-width-z17 * 1.6; - marker-height: @tertiary-width-z17 * 1.6; - } - [zoom >= 18] { - marker-width: @tertiary-width-z18 * 1.6; - marker-height: @tertiary-width-z18 * 1.6; - } - [zoom >= 19] { - marker-width: @tertiary-width-z19 * 1.6; - marker-height: @tertiary-width-z19 * 1.6; - } - marker-allow-overlap: true; - marker-ignore-placement: true; - marker-line-width: 0; - [int_surface = 'unpaved'] { marker-comp-op: dst-out; } - } - } - - ::white_roads-pattern { - [feature = 'globalboundingbox'][zoom >= 15] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_residential-fill.svg'); - polygon-pattern-alignment: global; - } - } - -} - -#highway-area-casing { - [feature = 'highway_residential'], - [feature = 'highway_unclassified'] { - [zoom >= 14] { - line-color: #999; - line-width: 1; - } - } - - [feature = 'highway_pedestrian'], - [feature = 'highway_service'], - [feature = 'highway_footway'], - [feature = 'highway_cycleway'], - [feature = 'highway_path'] { - [zoom >= 14] { - line-color: grey; - line-width: 1; - } - } - - [feature = 'highway_track'][zoom >= 14] { - line-color: @track-fill; - line-width: 1; - line-dasharray: 5,4,2,4; - line-cap: round; - line-join: round; - } - - [feature = 'highway_platform'], - [feature = 'railway_platform'] { - [zoom >= 16] { - line-color: grey; - line-width: 2; - line-cap: round; - line-join: round; - } - } -} - -#highway-area-fill { - [feature = 'highway_living_street'][zoom >= 14] { - polygon-fill: @living-street-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_living-street-fill.svg'); - polygon-pattern-alignment: global; - } - } - - [feature = 'highway_residential'], - [feature = 'highway_unclassified'], - [feature = 'highway_service'] { - [zoom >= 14] { - polygon-fill: #fff; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_residential-fill.svg'); - polygon-pattern-alignment: global; - } - } - } - - [feature = 'highway_pedestrian'], - [feature = 'highway_footway'], - [feature = 'highway_cycleway'], - [feature = 'highway_path'] { - [zoom >= 14] { - polygon-fill: @pedestrian-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_pedestrian-fill.svg'); - polygon-pattern-alignment: global; - } - } - } - - [feature = 'highway_track'][zoom >= 14] { - polygon-fill: @track-area-fill; - // Track areas are NOT rendered differently for paved vs unpaved surfaces. - // Reason: Track LINES are yet rendered differently depending on tracktype, - // and not on surface. Rendering the corresponding track AREA differently - // depending on surface would be confusing. - } - - [feature = 'highway_platform'], - [feature = 'railway_platform'] { + [int_tc_type = 'tertiary'][zoom >= 15] { + marker-fill: @tertiary-fill; + marker-width: @tertiary-width-z15 * 1.6; + marker-height: @tertiary-width-z15 * 1.6; [zoom >= 16] { - polygon-fill: @platform-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_platform-fill.svg'); - polygon-pattern-alignment: global; - } - } - } - - [feature = 'aeroway_runway'][zoom >= 11] { - polygon-fill: @runway-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_aeroway-fill.svg'); - polygon-pattern-alignment: global; - } - } - - [feature = 'aeroway_taxiway'][zoom >= 13] { - polygon-fill: @taxiway-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_aeroway-fill.svg'); - polygon-pattern-alignment: global; + marker-width: @tertiary-width-z16 * 1.6; + marker-height: @tertiary-width-z16 * 1.6; } - } - - [feature = 'aeroway_helipad'][zoom >= 16] { - polygon-fill: @helipad-fill; - [int_surface = 'unpaved'] { - polygon-pattern-file: url('symbols/unpaved/unpaved_aeroway-fill.svg'); - polygon-pattern-alignment: global; + [zoom >= 17] { + marker-width: @tertiary-width-z17 * 1.6; + marker-height: @tertiary-width-z17 * 1.6; } - } -} - -#junctions { - [highway = 'motorway_junction'] { - [zoom >= 11] { - text-name: "[ref]"; - text-size: 10; - text-fill: @junction-text-color; - text-min-distance: 2; - text-face-name: @oblique-fonts; - text-halo-radius: @standard-halo-radius; - text-wrap-character: ";"; - text-wrap-width: 2; // effectively break after every wrap character - text-line-spacing: -1.5; // -0.15 em - [zoom >= 12] { - ["name" != null]["ref" = null] { - text-name: "[name]"; - } - ["name" != null]["ref" != null] { - text-name: [name] + "\n" + [ref]; - } - } - [zoom >= 15] { - text-size: 11; - text-line-spacing: -1.65; // -0.15 em - } + [zoom >= 18] { + marker-width: @tertiary-width-z18 * 1.6; + marker-height: @tertiary-width-z18 * 1.6; } - } - - [junction = 'yes'], - [highway = 'traffic_signals'] { - [zoom >= 15] { - text-name: "[name]"; - text-size: 10; - text-fill: black; - text-face-name: @book-fonts; - text-halo-radius: @standard-halo-radius; - text-halo-fill: @standard-halo-fill; - text-wrap-width: 30; // 3.0 em - text-line-spacing: -1.5; // -0.15 em - text-min-distance: 2; - [zoom >= 17] { - text-size: 11; - text-line-spacing: -1.65; // -0.15 em - /* Offset name on traffic_signals on zoomlevels where they are displayed - in order not to hide the text */ - [highway = 'traffic_signals'] { - text-dy: 9; - } - } + [zoom >= 19] { + marker-width: @tertiary-width-z19 * 1.6; + marker-height: @tertiary-width-z19 * 1.6; } - } -} - -#bridge-text { - [man_made = 'bridge'] { - [zoom >= 12][way_pixels > 62.5] { - text-name: "[name]"; - text-size: 10; - text-wrap-width: 30; // 3 em - text-line-spacing: -1.2; // -0.15 em - text-fill: black; - text-face-name: @book-fonts; - text-halo-radius: @standard-halo-radius; - text-halo-fill: @standard-halo-fill; - text-margin: 3; // 0.3 em - text-wrap-width: 30; - text-placement: interior; - [way_pixels > 250] { - text-size: 11; - text-margin: 3.3; // 0.3 em - text-wrap-width: 33; // 3 em - text-line-spacing: -1.35; // -0.15 em - text-halo-radius: @standard-halo-radius * 1.1; + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; + } + + [int_tc_type = 'residential'], + [int_tc_type = 'unclassified'] { + [zoom >= 15] { + marker-fill: @residential-fill; + marker-width: @residential-width-z15 * 1.6; + marker-height: @residential-width-z15 * 1.6; + [zoom >= 16] { + marker-width: @residential-width-z16 * 1.6; + marker-height: @residential-width-z16 * 1.6; } - [way_pixels > 1000] { - text-size: 12; - text-margin: 3.6; // 0.3 em - text-wrap-width: 36; // 3 em - text-line-spacing: -1.65; // -0.15 em - text-halo-radius: @standard-halo-radius * 1.2; + [zoom >= 17] { + marker-width: @residential-width-z17 * 1.6; + marker-height: @residential-width-z17 * 1.6; } - [way_pixels > 4000] { - text-size: 13; - text-margin: 3.9; // 0.3 em - text-wrap-width: 39; // 3 em - text-line-spacing: -1.80; // -0.15 em - text-halo-radius: @standard-halo-radius * 1.3; + [zoom >= 18] { + marker-width: @residential-width-z18 * 1.6; + marker-height: @residential-width-z18 * 1.6; } - [way_pixels > 16000] { - text-size: 14; - text-margin: 4.2; // 0.3 em - text-wrap-width: 42; // 3 em - text-line-spacing: -1.95; // -0.15 em - text-halo-radius: @standard-halo-radius * 1.4; + [zoom >= 19] { + marker-width: @residential-width-z19 * 1.6; + marker-height: @residential-width-z19 * 1.6; } + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; } } -} -// z_order 150, 200 -.access::white_link-fill { - [access = 'destination'] { - [feature = 'highway_tertiary'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - [feature = 'highway_living_street'] { - access/line-color: @access-marking-living-street; - } - access/line-join: round; - access/line-cap: round; - access/line-width: 3; - access/line-dasharray: 0.1,9; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 0.1,12; - } - } + [int_tc_type = 'living_street'][zoom >= 15] { + marker-fill: @living-street-fill; + marker-width: @living-street-width-z15 * 1.6; + marker-height: @living-street-width-z15 * 1.6; + [zoom >= 16] { + marker-width: @living-street-width-z16 * 1.6; + marker-height: @living-street-width-z16 * 1.6; } - [feature = 'highway_service'][service = 'INT-normal'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 0.1,4; - [zoom >= 17] { - access/line-width: 4; - access/line-dasharray: 0.1,9; - } - } + [zoom >= 17] { + marker-width: @living-street-width-z17 * 1.6; + marker-height: @living-street-width-z17 * 1.6; } - [feature = 'highway_service'][service = 'INT-minor'] { - [zoom >= 16] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 1; - access/line-dasharray: 0.1,4; - [zoom >= 17] { - access/line-width: 2; - } - } + [zoom >= 18] { + marker-width: @living-street-width-z18 * 1.6; + marker-height: @living-street-width-z18 * 1.6; + } + [zoom >= 19] { + marker-width: @living-street-width-z19 * 1.6; + marker-height: @living-street-width-z19 * 1.6; } + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; } - [access = 'no'] { - [feature = 'highway_tertiary'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } - } + + [int_tc_type = 'service'][int_tc_service = 'INT-normal'][zoom >= 16] { + marker-fill: @service-fill; + marker-width: @service-width-z16 * 1.6; + marker-height: @service-width-z16 * 1.6; + [zoom >= 17] { + marker-width: @service-width-z17 * 1.6; + marker-height: @service-width-z17 * 1.6; } - [feature = 'highway_service'][service = 'INT-normal'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,8; - [zoom >= 17] { - access/line-width: 3; - access/line-dasharray: 8,10; - } - } + [zoom >= 18] { + marker-width: @service-width-z18 * 1.6; + marker-height: @service-width-z18 * 1.6; } - [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 1; - access/line-dasharray: 6,8; - [zoom >= 17] { - access/line-width: 2; - } + [zoom >= 19] { + marker-width: @service-width-z19 * 1.6; + marker-height: @service-width-z19 * 1.6; } + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; } -} -// z_order 210 -.access::secondary_link-fill { - [access = 'destination'] { - [feature = 'highway_secondary'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 3; - access/line-dasharray: 0.1,9; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 0.1,12; - } - } + [int_tc_type = 'service'][int_tc_service = 'INT-minor'][zoom >= 18] { + marker-fill: @service-fill; + marker-width: @minor-service-width-z18 * 1.6; + marker-height: @minor-service-width-z18 * 1.6; + [zoom >= 19] { + marker-width: @minor-service-width-z19 * 1.6; + marker-height: @minor-service-width-z19 * 1.6; } + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; } - [access = 'no'] { - [feature = 'highway_secondary'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } - } + + [int_tc_type = 'track'][zoom >= 15] { + marker-fill: @track-fill; + marker-width: 6; + marker-height: 6; + [zoom >= 17] { + marker-width: 10; + marker-height: 10; } + marker-allow-overlap: true; + marker-ignore-placement: true; + marker-line-width: 0; } } -// z_order 220 -.access::primary_link-fill { - [access = 'no'] { - [feature = 'highway_primary'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } - } +#highway-area-casing { + [feature = 'highway_residential'], + [feature = 'highway_unclassified'] { + [zoom >= 14] { + line-color: #999; + line-width: 1; } } -} -// z_order 230 -.access::trunk_link-fill { - [access = 'no'] { - [feature = 'highway_trunk'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } - } + [feature = 'highway_pedestrian'], + [feature = 'highway_service'], + [feature = 'highway_footway'], + [feature = 'highway_cycleway'], + [feature = 'highway_path'] { + [zoom >= 14] { + line-color: grey; + line-width: 1; + } + } + + [feature = 'highway_track'][zoom >= 14] { + line-color: @track-fill; + line-width: 1; + line-dasharray: 5,4,2,4; + line-cap: round; + line-join: round; + } + + [feature = 'highway_platform'], + [feature = 'railway_platform'] { + [zoom >= 16] { + line-color: grey; + line-width: 2; + line-cap: round; + line-join: round; } } } -// z_order 240 -.access::motorway_link-fill { - [access = 'no'] { - [feature = 'highway_motorway'][link = 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } - } +#highway-area-fill { + [feature = 'highway_living_street'][zoom >= 14] { + polygon-fill: @living-street-fill; + } + + [feature = 'highway_residential'], + [feature = 'highway_unclassified'], + [feature = 'highway_service'] { + [zoom >= 14] { + polygon-fill: #fff; + } + } + + [feature = 'highway_pedestrian'], + [feature = 'highway_footway'], + [feature = 'highway_cycleway'], + [feature = 'highway_path'] { + [zoom >= 14] { + polygon-fill: @pedestrian-fill; + } + } + + [feature = 'highway_track'][zoom >= 14] { + polygon-fill: #cdbea0; + } + + [feature = 'highway_platform'], + [feature = 'railway_platform'] { + [zoom >= 16] { + polygon-fill: #bbbbbb; + polygon-gamma: 0.65; } } + + [feature = 'aeroway_runway'][zoom >= 11] { + polygon-fill: @runway-fill; + } + + [feature = 'aeroway_taxiway'][zoom >= 13] { + polygon-fill: @taxiway-fill; + } + + [feature = 'aeroway_helipad'][zoom >= 16] { + polygon-fill: @helipad-fill; + } } -// z_order 320 -.access::living_street-fill { - [access = 'destination'] { - [feature = 'highway_living_street'] { - [zoom >= 15] { - access/line-color: @access-marking-living-street; - access/line-join: round; - access/line-cap: round; - access/line-width: 3; - access/line-dasharray: 0.1,9; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 0.1,12; +#junctions { + [highway = 'motorway_junction'] { + [zoom >= 11] { + text-name: "[ref]"; + text-size: 10; + text-fill: @junction-text-color; + text-min-distance: 2; + text-face-name: @oblique-fonts; + text-halo-radius: @standard-halo-radius; + text-wrap-character: ";"; + text-wrap-width: 2; // effectively break after every wrap character + text-line-spacing: -1.5; // -0.15 em + [zoom >= 12] { + ["name" != null]["ref" = null] { + text-name: "[name]"; + } + ["name" != null]["ref" != null] { + text-name: [name] + "\n" + [ref]; } } - } - } - [access = 'no'] { - [feature = 'highway_living_street'] { [zoom >= 15] { - access/line-color: @access-marking-living-street; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } + text-size: 11; + text-line-spacing: -1.65; // -0.15 em } } } -} -// z_order 330 (road) -.access::road-fill { - [access = 'destination'] { - [feature = 'highway_road'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 0.1,4; - [zoom >= 17] { - access/line-width: 4; - access/line-dasharray: 0.1,9; + [junction = 'yes'], + [highway = 'traffic_signals'] { + [zoom >= 15] { + text-name: "[name]"; + text-size: 10; + text-fill: black; + text-face-name: @book-fonts; + text-halo-radius: @standard-halo-radius; + text-halo-fill: @standard-halo-fill; + text-wrap-width: 30; // 3.0 em + text-line-spacing: -1.5; // -0.15 em + text-min-distance: 2; + [zoom >= 17] { + text-size: 11; + text-line-spacing: -1.65; // -0.15 em + /* Offset name on traffic_signals on zoomlevels where they are displayed + in order not to hide the text */ + [highway = 'traffic_signals'] { + text-dy: 9; } } } } - [access = 'no'] { - [feature = 'highway_road'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,8; - [zoom >= 17] { - access/line-width: 3; - access/line-dasharray: 8,10; - } +} + +#bridge-text { + [man_made = 'bridge'] { + [zoom >= 12][way_pixels > 62.5] { + text-name: "[name]"; + text-size: 10; + text-wrap-width: 30; // 3 em + text-line-spacing: -1.2; // -0.15 em + text-fill: black; + text-face-name: @book-fonts; + text-halo-radius: @standard-halo-radius; + text-halo-fill: @standard-halo-fill; + text-margin: 3; // 0.3 em + text-wrap-width: 30; + text-placement: interior; + [way_pixels > 250] { + text-size: 11; + text-margin: 3.3; // 0.3 em + text-wrap-width: 33; // 3 em + text-line-spacing: -1.35; // -0.15 em + text-halo-radius: @standard-halo-radius * 1.1; + } + [way_pixels > 1000] { + text-size: 12; + text-margin: 3.6; // 0.3 em + text-wrap-width: 36; // 3 em + text-line-spacing: -1.65; // -0.15 em + text-halo-radius: @standard-halo-radius * 1.2; + } + [way_pixels > 4000] { + text-size: 13; + text-margin: 3.9; // 0.3 em + text-wrap-width: 39; // 3 em + text-line-spacing: -1.80; // -0.15 em + text-halo-radius: @standard-halo-radius * 1.3; + } + [way_pixels > 16000] { + text-size: 14; + text-margin: 4.2; // 0.3 em + text-wrap-width: 42; // 3 em + text-line-spacing: -1.95; // -0.15 em + text-halo-radius: @standard-halo-radius * 1.4; } } } } -// z_order 330 (white), 340 -.access::white-fill { +.access::fill { [access = 'destination'] { - [feature = 'highway_tertiary'][link != 'yes'], + [feature = 'highway_secondary'], + [feature = 'highway_tertiary'], [feature = 'highway_unclassified'], - [feature = 'highway_residential'] { + [feature = 'highway_residential'], + [feature = 'highway_living_street'] { [zoom >= 15] { access/line-color: @access-marking; + [feature = 'highway_living_street'] { + access/line-color: @access-marking-living-street; + } access/line-join: round; access/line-cap: round; access/line-width: 3; @@ -3241,66 +2604,47 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } } - } - [access = 'no'] { - [feature = 'highway_tertiary'][link != 'yes'], - [feature = 'highway_unclassified'], - [feature = 'highway_residential'] { + [feature = 'highway_road'], + [feature = 'highway_service'][service = 'INT-normal'] { [zoom >= 15] { access/line-color: @access-marking; access/line-join: round; access/line-cap: round; access/line-width: 2; - access/line-dasharray: 6,6; + access/line-dasharray: 0.1,4; [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; + access/line-width: 4; + access/line-dasharray: 0.1,9; } } } - } -} - -// z_order 350 -.access::secondary-fill { - [access = 'destination'] { - [feature = 'highway_secondary'][link != 'yes'] { - [zoom >= 15] { + [feature = 'highway_service'][service = 'INT-minor'] { + [zoom >= 16] { access/line-color: @access-marking; access/line-join: round; access/line-cap: round; - access/line-width: 3; - access/line-dasharray: 0.1,9; + access/line-width: 1; + access/line-dasharray: 0.1,4; [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 0.1,12; + access/line-width: 2; } } } } [access = 'no'] { - [feature = 'highway_secondary'][link != 'yes'] { + [feature = 'highway_motorway'], + [feature = 'highway_trunk'], + [feature = 'highway_primary'], + [feature = 'highway_secondary'], + [feature = 'highway_tertiary'], + [feature = 'highway_unclassified'], + [feature = 'highway_residential'], + [feature = 'highway_living_street'] { [zoom >= 15] { access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; - access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; + [feature = 'highway_living_street'] { + access/line-color: @access-marking-living-street; } - } - } - } -} - -// z_order 360 -.access::primary-fill { - [access = 'no'] { - [feature = 'highway_primary'][link != 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; access/line-join: round; access/line-cap: round; access/line-width: 2; @@ -3311,42 +2655,28 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } } - } -} - -// z_order 370 -.access::trunk-fill { - [access = 'no'] { - [feature = 'highway_trunk'][link != 'yes'] { + [feature = 'highway_road'], + [feature = 'highway_service'][service = 'INT-normal'] { [zoom >= 15] { access/line-color: @access-marking; access/line-join: round; access/line-cap: round; access/line-width: 2; - access/line-dasharray: 6,6; + access/line-dasharray: 6,8; [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; + access/line-width: 3; + access/line-dasharray: 8,10; } } } - } -} - -// z_order 380 -.access::motorway-fill { - [access = 'no'] { - [feature = 'highway_motorway'][link != 'yes'] { - [zoom >= 15] { - access/line-color: @access-marking; - access/line-join: round; - access/line-cap: round; + [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] { + access/line-color: @access-marking; + access/line-join: round; + access/line-cap: round; + access/line-width: 1; + access/line-dasharray: 6,8; + [zoom >= 17] { access/line-width: 2; - access/line-dasharray: 6,6; - [zoom >= 17] { - access/line-width: 6; - access/line-dasharray: 10,12; - } } } } @@ -3373,30 +2703,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } #aeroways { - // z_order 50 - [aeroway = 'taxiway'] { - [zoom >= 11] { - ::casing[bridge = true][zoom >= 14] { - line-width: 4 + 2*@secondary-casing-width-z14; - line-color: @bridge-casing; - line-join: round; - [zoom >= 15] { line-width: 6 + 2*@secondary-casing-width-z15; } - [zoom >= 16] { line-width: 8 + 2*@secondary-casing-width-z16; } - [zoom >= 17] { line-width: 8 + 2*@secondary-casing-width-z17; } - [zoom >= 18] { line-width: 8 + 2*@secondary-casing-width-z18; } - } - ::fill { - line-color: @taxiway-fill ; - line-width: 1; - [int_surface = 'unpaved'] { line-comp-op: dst-out; } - [zoom >= 13] { line-width: 2; } - [zoom >= 14] { line-width: 4; } - [zoom >= 15] { line-width: 6; } - [zoom >= 16] { line-width: 8; } - } - } - } - // z_order 60 [aeroway = 'runway'] { [zoom >= 11] { ::casing[bridge = true][zoom >= 14] { @@ -3411,7 +2717,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ ::fill { line-color: @runway-fill; line-width: 2; - [int_surface = 'unpaved'] { line-comp-op: dst-out; } [zoom >= 12] { line-width: 4; } [zoom >= 13] { line-width: 6; } [zoom >= 14] { line-width: 12; } @@ -3420,11 +2725,25 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } } - ::aeroway-fill-pattern { - [feature = 'globalboundingbox'][zoom >= 11] { - polygon-pattern-comp-op: dst-over; - polygon-pattern-file: url('symbols/unpaved/unpaved_aeroway-fill.svg'); - polygon-pattern-alignment: global; + [aeroway = 'taxiway'] { + [zoom >= 11] { + ::casing[bridge = true][zoom >= 14] { + line-width: 4 + 2*@secondary-casing-width-z14; + line-color: @bridge-casing; + line-join: round; + [zoom >= 15] { line-width: 6 + 2*@secondary-casing-width-z15; } + [zoom >= 16] { line-width: 8 + 2*@secondary-casing-width-z16; } + [zoom >= 17] { line-width: 8 + 2*@secondary-casing-width-z17; } + [zoom >= 18] { line-width: 8 + 2*@secondary-casing-width-z18; } + } + ::fill { + line-color: @taxiway-fill ; + line-width: 1; + [zoom >= 13] { line-width: 2; } + [zoom >= 14] { line-width: 4; } + [zoom >= 15] { line-width: 6; } + [zoom >= 16] { line-width: 8; } + } } } } diff --git a/scripts/colors_bd.c b/scripts/colors_bd.c deleted file mode 100644 index 5d8984d9c3..0000000000 --- a/scripts/colors_bd.c +++ /dev/null @@ -1,102 +0,0 @@ -/* ======================================================================== - simple lightness modulation of colors in perceptual color space - Copyright (C) 2017 Christoph Hormann - ======================================================================== - */ - -/* - * Compiling: - * You need a compiler and libcms2 (header and binary lib for linking). Do: - * gcc -o colors_bd -llcms2 colors_bd.c - * - * Usage: - * - * With - * - * echo "#fcd6a4" | colors_bd -40 2.6 - * - * you get for example: - * - * #fcd6a4,#8b6c3f,#ffddab,88.02,48.02,90.62 - * - * Which is - * - the original color, as is - * - the color darkened by -40 - * - the color brightened by 2.6 - * and the corresponding lightness values. - * - * This application is used by generate_unpaved_patterns.py -*/ - -#include -#include - -#include "lcms2.h" - - -int main(int argc,char **argv) -{ - float Darken = -5.0; - float Brighten = 5.0; - - if (argc > 1) - Darken = atof(argv[1]); - - if (argc > 2) - Brighten = atof(argv[2]); - - cmsHPROFILE hsRGB = cmsCreate_sRGBProfile(); - cmsCIExyY D65 = {0.31271, 0.32902, 1}; - cmsHPROFILE hLab = cmsCreateLab4Profile(&D65); - - cmsHTRANSFORM hTransform = cmsCreateTransform(hsRGB, TYPE_RGB_8, hLab, TYPE_Lab_DBL, INTENT_PERCEPTUAL, 0); - cmsHTRANSFORM hTransformBack = cmsCreateTransform(hLab, TYPE_Lab_DBL, hsRGB, TYPE_RGB_8, INTENT_PERCEPTUAL, 0); - - int r, g, b; - - while (scanf("%*[#]%02x%02x%02x", &r, &g, &b) == 3) - { - unsigned long col_orig = (r<<16) | (g<<8) | b; - - unsigned char col_rgb[3]; - cmsCIELab col_lab; - cmsCIELab col_lab_dark; - cmsCIELab col_lab_bright; - - col_rgb[0] = r; - col_rgb[1] = g; - col_rgb[2] = b; - - cmsDoTransform(hTransform, col_rgb, &col_lab, 1); - - col_lab_dark = col_lab; - col_lab_bright = col_lab; - - col_lab_dark.L += Darken; - col_lab_bright.L += Brighten; - - cmsDoTransform(hTransformBack, &col_lab_dark, col_rgb, 1); - - r = col_rgb[0]; - g = col_rgb[1]; - b = col_rgb[2]; - - unsigned long col_dark = (r<<16) | (g<<8) | b; - - cmsDoTransform(hTransformBack, &col_lab_bright, col_rgb, 1); - - r = col_rgb[0]; - g = col_rgb[1]; - b = col_rgb[2]; - - unsigned long col_bright = (r<<16) | (g<<8) | b; - - printf("#%06x,#%06x,#%06x,%.2lf,%.2lf,%.2lf\n", col_orig, col_dark, col_bright, col_lab.L, col_lab_dark.L, col_lab_bright.L); - - } - - cmsDeleteTransform(hTransform); - cmsDeleteTransform(hTransformBack); - cmsCloseProfile(hsRGB); - cmsCloseProfile(hLab); -} diff --git a/scripts/generate_unpaved_patterns.py b/scripts/generate_unpaved_patterns.py deleted file mode 100755 index a2b2d17c73..0000000000 --- a/scripts/generate_unpaved_patterns.py +++ /dev/null @@ -1,121 +0,0 @@ -#!/usr/bin/env python - -# Colours for unpaved roads - -# This reads some color variables from some .mss files and also reads -# symbols/unpaved/unpaved.svg and generates colourized versions of -# the unpaved pattern for all road types and saves them in the symbols/unpaved -# folder. Existing files of the same name are overwritten! -# -# This script produces patterns that perceptually have the same overall -# brightness as the original road color. Therefor, the pattern foreground -# is darker than the original color, and the pattern background lighter than -# the original color. This script does its very best, but the same overall -# brightness is not always possible (for example for white roads) and also -# depends on the monitor gammut on which the pattern is displayed. -# -# Usage: -# - Compile scripts/color_bd.c into a binary. This is a little application -# that does all the perceptual color mathematics. -# - Call this script in the main directory of openstreetmap-carto. -# -# Customize: -# You can customize this script by changing the first variables of in the main() -# function (color_names, file_names, darken, brighten_darken_ratio). - -import subprocess - -# def get_color_value_by_name(variable_name, file_names): -# -# Searches in MSS files for variable values with the given name. Returns -# the first value it finds. Only supports very basic syntax like: -# @test: 12; # Comment -# which would return "12". -# -# Paramaters: -# variable_name: the name of the variable for which we search the value -# file_names: list of files where we search for the variable value -# -# Return value: the variable value (if any) -def get_color_value_by_name(variable_name, file_names): - for files in file_names: - with open(files) as f: - for line in f: - if line.startswith("@" + variable_name + ":"): - temp = line.strip("@" + variable_name + ":").split(";")[0].strip() - # test if the value length is okay (#abc or #aabbcc) - if (len(temp) == 4) or (len(temp)== 7): - # remove the first character (#) - temp = temp[1:] - # expand value like #abc to #aabbcc - if len(temp) == 3: - temp = temp[0] + temp [0] + temp [1] + temp [1] + temp [2] + temp [2] - # make sure that the content is really a (lowercase) hex value - if all(c in set("0123456789abcdef") for c in temp): - # if so, return the hex value with a leading "#" - return ("#" + temp) - -# Calls colors_bd to calculate darkened/lightned versions of the base color -def get_pattern_colors(base_color, darken, brighten): - my_process = subprocess.Popen(["./scripts/colors_bd", str(darken), str(brighten)], stdin=subprocess.PIPE, stdout=subprocess.PIPE) - temp = my_process.communicate(base_color)[0].strip().split(",") - # security check: the first output value should be the original value - if (temp[0] == base_color): - return temp - -def main(): - - # List of names of color variables in mss code for which we will generate patterns - color_names = { - 'motorway-low-zoom', - 'trunk-low-zoom', - 'primary-low-zoom', - 'motorway-fill', - 'trunk-fill', - 'primary-fill', - 'secondary-fill', - 'platform-fill', - 'aeroway-fill', - 'road-fill', - 'pedestrian-fill', - 'living-street-fill', - 'raceway-fill', - 'residential-fill' - } - - # List of names of mss files in which we search for color variables - file_names = { - 'roads.mss', - 'road-colors-generated.mss' - } - - # The value by which the original color is darkened for the pattern foreground - # This value should always be negative. - darken = -60 - - # The pattern foreground occupies less space than the background. So lightening - # the background has to be less intense than darkening the foreground. This - # value is multiplied with the negative value of "darken" to get a value for - # "brighten", so brighten_darken_ration must also be negative to make sure - # the "brighten" result is positive. This value should (only) be changed when - # the pattern itself is changed. - brighten_darken_ratio = -0.065 - - # actual code - for color_name in color_names: - print "\nColor name: " + color_name - original_color_value = get_color_value_by_name(color_name, file_names) - pattern_colors = get_pattern_colors(original_color_value, darken, darken * brighten_darken_ratio) - print "Colors for pattern: " + str(pattern_colors) - if pattern_colors: - with open('symbols/unpaved/unpaved.svg', 'rt') as fin: - with open('symbols/unpaved/unpaved_' + color_name + '.svg', 'wt') as fout: - for line in fin: - temp = line - temp = temp.replace('#0000ff', pattern_colors[1]) - temp = temp.replace('fill:none', 'fill:' + pattern_colors[2]) - fout.write(temp) - print "Pattern file: " + 'symbols/unpaved/unpaved_' + color_name + '.svg' - -if __name__ == "__main__": - main() diff --git a/symbols/amenity/atm.svg b/symbols/amenity/atm.svg index cd9333ecc1..eda8372cee 100644 --- a/symbols/amenity/atm.svg +++ b/symbols/amenity/atm.svg @@ -1,20 +1,37 @@ - - + width="14" + version="1.1"> + + + + image/svg+xml + + + + + + + y="0" + x="0" + height="14" + width="14" /> + id="atm" + d="M 0,0 C 0,1 0,2 0,3 H 1 V 1 h 12 v 2 h 1 V 0 C 9.3333333,0 4.6666667,0 0,0 Z m 2,2 c 0,3 0,6 0,9 0,0.599243 0.400757,1 1,1 h 8 c 0.527334,0 1,-0.448696 1,-1 0,-3 0,-6 0,-9 h -1 c 0,2.3333333 0,4.6666667 0,7 -1,0 -2,1 -2,2 H 5 C 5,10 4,9 3,9 3,6.6666667 3,4.3333333 3,2 Z M 7,4 C 5.429204,4 4,4.9528024 4,6 4,7.047198 5.429204,8 7,8 8.570796,8 10,7.047198 10,6 10,4.9528024 8.570796,4 7,4 Z M 2,12.5 C 2,13.554668 2.424727,14 3,14 h 8 c 0.527334,0 1,-0.445332 1,-1.5 -0.305085,0.271186 -0.496636,0.49272 -1,0.46875 l -8,0.0625 C 2.520606,13.00728 2.305085,12.805085 2,12.5 Z" /> diff --git a/symbols/amenity/bbq.svg b/symbols/amenity/bbq.svg index 6d46d126e8..68deda03cf 100644 --- a/symbols/amenity/bbq.svg +++ b/symbols/amenity/bbq.svg @@ -1,13 +1,31 @@ - - - - - -image/svg+xml - - - - - - + + + + + + image/svg+xml + + + + + + + diff --git a/symbols/amenity/bicycle_repair_station.svg b/symbols/amenity/bicycle_repair_station.svg new file mode 100644 index 0000000000..d90beae963 --- /dev/null +++ b/symbols/amenity/bicycle_repair_station.svg @@ -0,0 +1,39 @@ + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/symbols/amenity/vehicle_inspection.svg b/symbols/amenity/vehicle_inspection.svg new file mode 100644 index 0000000000..04db3853d4 --- /dev/null +++ b/symbols/amenity/vehicle_inspection.svg @@ -0,0 +1,30 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/symbols/amusement_arcade.svg b/symbols/amusement_arcade.svg new file mode 100644 index 0000000000..19a42495fb --- /dev/null +++ b/symbols/amusement_arcade.svg @@ -0,0 +1,22 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + + + + diff --git a/symbols/historic/shrine.svg b/symbols/historic/shrine.svg index eda258767c..16e2dbed87 100644 --- a/symbols/historic/shrine.svg +++ b/symbols/historic/shrine.svg @@ -5,11 +5,11 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - viewBox="0 0 14 14" - height="14" - width="14" + version="1.1" id="svg109" - version="1.1"> + width="14" + height="14" + viewBox="0 0 14 14"> @@ -25,7 +25,7 @@ + id="rect816" + d="M 7 0 L 5 3 L 5 12 L 9 12 L 9 3 L 7 0 z M 7 3.9980469 A 1 1 0 0 1 8 4.9980469 A 1 1 0 0 0 8 5 L 8 8 L 6 8 L 6 5 A 1 1 0 0 0 6 4.9980469 A 1 1 0 0 1 7 3.9980469 z M 4 13 L 4 14 L 10 14 L 10 13 L 4 13 z " + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21650636;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /> diff --git a/symbols/man_made/bell_tower.svg b/symbols/man_made/bell_tower.svg index aaedb5b913..f77d4560a4 100644 --- a/symbols/man_made/bell_tower.svg +++ b/symbols/man_made/bell_tower.svg @@ -5,11 +5,11 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.1" - id="svg109" - width="14" + viewBox="0 0 14 14" height="14" - viewBox="0 0 14 14"> + width="14" + id="svg109" + version="1.1"> @@ -25,30 +25,7 @@ - - - - - - + id="rect4517" + d="M 7 0 L 3 3 L 3 14 L 4 14 L 4 6 A 3 3 0 0 1 7 3 A 3 3 0 0 1 10 6 L 10 14 L 11 14 L 11 3 L 7 0 z M 6.6425781 4.5 C 5.1713456 5.5990112 5.6263833 6.1171551 5.125 8.0292969 C 5.0267045 8.1297436 4.5 8.4517303 4.5 8.7597656 L 4.5 9 L 9.5 9 L 9.5 8.7597656 C 9.5065855 8.4517303 8.9283731 8.1297433 8.8300781 8.0292969 C 8.3366263 6.1474042 8.7614816 5.3429388 7.3574219 4.5 L 6.6425781 4.5 z M 7 9.75 A 0.75 0.75 0 0 0 6.25 10.5 A 0.75 0.75 0 0 0 7 11.25 A 0.75 0.75 0 0 0 7.75 10.5 A 0.75 0.75 0 0 0 7 9.75 z " + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.68416572;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers" /> diff --git a/symbols/man_made/communications_tower.svg b/symbols/man_made/communications_tower.svg index 6e9457093b..84d3062428 100644 --- a/symbols/man_made/communications_tower.svg +++ b/symbols/man_made/communications_tower.svg @@ -5,26 +5,26 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - id="svg20" - viewBox="0 0 14 14" - version="1.1" + width="14" height="14" - width="14"> + version="1.1" + viewBox="0 0 14 14" + id="svg20"> + x2="7" + y1="3" + gradientUnits="userSpaceOnUse"> + offset="0" + id="stop2" /> + id="stop4" /> - + d="M 6 0 L 6 3.2714844 A 2 2 0 0 0 5 5 A 2 2 0 0 0 6 6.7304688 L 6 14 L 8 14 L 8 6.7285156 A 2 2 0 0 0 9 5 A 2 2 0 0 0 8 3.2695312 L 8 0 L 6 0 z M 11.005859 0 L 11.005859 1.28125 C 12.202359 1.99175 12.953125 3.1940094 12.953125 4.7246094 C 12.953125 6.2552094 12.202359 7.477 11.005859 8.1875 L 11.005859 9.4863281 C 12.774559 8.6847681 14.003906 6.8309094 14.003906 4.7246094 C 14.003906 2.6183094 12.774459 0.8015 11.005859 0 z M 3 0.00390625 C 1.2313 0.80546625 0.00390625 2.6358875 0.00390625 4.7421875 C 0.00390625 6.8484875 1.2314 8.7024063 3 9.5039062 L 3 8.2792969 C 1.8035 7.5687969 1.0351562 6.2006219 1.0351562 4.6699219 C 1.0351562 3.1393219 1.80345 1.944875 3 1.234375 L 3 0.00390625 z M 4 1.859375 C 2.842 2.288135 2 3.4085875 2 4.7421875 C 2 6.0758875 2.84197 7.2079188 4 7.6367188 L 4 6.4921875 C 3.4026 6.1376275 3.0722656 5.4717313 3.0722656 4.7070312 C 3.0722656 3.9422412 3.4026 3.3662188 4 3.0117188 L 4 1.859375 z M 10.005859 1.8691406 L 10.005859 2.9746094 C 10.603259 3.3291694 11.023437 3.9773875 11.023438 4.7421875 C 11.023438 5.5069775 10.603279 6.0458906 10.005859 6.4003906 L 10.005859 7.5253906 C 11.163859 7.0966306 11.970703 6.0758875 11.970703 4.7421875 C 11.970703 3.4084875 11.163889 2.2978406 10.005859 1.8691406 z " + id="path12" /> + id="path14" /> diff --git a/symbols/man_made/storage_tank.svg b/symbols/man_made/storage_tank.svg new file mode 100644 index 0000000000..8e9c787e9b --- /dev/null +++ b/symbols/man_made/storage_tank.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/symbols/shop/car_repair.svg b/symbols/shop/car_repair.svg index 582b31dbed..9fd280370f 100644 --- a/symbols/shop/car_repair.svg +++ b/symbols/shop/car_repair.svg @@ -1,19 +1,19 @@ - - + id="svg3800" + version="1.1" + viewBox="0 0 14 14"> + + id="metadata3805"> @@ -24,16 +24,15 @@ - - - + + + + + diff --git a/symbols/shop/ticket.svg b/symbols/shop/ticket.svg index 361ccc5986..9d9ee755c0 100644 --- a/symbols/shop/ticket.svg +++ b/symbols/shop/ticket.svg @@ -31,7 +31,7 @@ diff --git a/symbols/tourism/apartment.svg b/symbols/tourism/apartment.svg index 3ce0136fad..c5b6e7c8fb 100644 --- a/symbols/tourism/apartment.svg +++ b/symbols/tourism/apartment.svg @@ -1,13 +1,44 @@ - - - - - - - - - + +image/svg+xml + + + + + \ No newline at end of file diff --git a/symbols/tourism/audioguide.svg b/symbols/tourism/audioguide.svg index d40684671e..6901fb91ab 100644 --- a/symbols/tourism/audioguide.svg +++ b/symbols/tourism/audioguide.svg @@ -5,11 +5,11 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.1" - id="svg109" - width="14" + viewBox="0 0 14 14" height="14" - viewBox="0 0 14 14"> + width="14" + id="svg109" + version="1.1"> @@ -25,7 +25,7 @@ + id="information" + d="M 7 1 A 5 5 0 0 0 2 6 C 0.892 6 0 6.892 0 8 L 0 10 C 0 11.108 0.892 12 2 12 L 3 12 L 3 6 A 4 4 0 0 1 7 2 A 4 4 0 0 1 11 6 L 11 12 L 12 12 C 13.108 12 14 11.108 14 10 L 14 8 C 14 6.892 13.108 6 12 6 A 5 5 0 0 0 7 1 z M 7 4.9550781 A 1.138829 1.138829 0 0 0 5.8613281 6.09375 A 1.138829 1.138829 0 0 0 7 7.2324219 A 1.138829 1.138829 0 0 0 8.1386719 6.09375 A 1.138829 1.138829 0 0 0 7 4.9550781 z M 7.7519531 7.9824219 L 5.4960938 8.734375 L 5.4960938 9.4863281 L 6.1875 9.4863281 L 6.2480469 13.248047 L 5.4960938 13.248047 L 5.4960938 14 L 8.5039062 14 L 8.5039062 13.248047 L 7.7519531 13.248047 L 7.7519531 7.9824219 z " + style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.75224489" /> diff --git a/symbols/tourism/board.svg b/symbols/tourism/board.svg index 217f7fb3a8..7027ff9dc9 100644 --- a/symbols/tourism/board.svg +++ b/symbols/tourism/board.svg @@ -5,11 +5,11 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.1" - id="svg109" - width="14" + viewBox="0 0 14 14" height="14" - viewBox="0 0 14 14"> + width="14" + id="svg109" + version="1.1"> @@ -25,7 +25,7 @@ + id="rect18-1" + d="m 0,0 c 0,4.6666667 0,9.3333333 0,14 h 1 v -3 h 12 v 3 h 1 C 14,9.3333333 14,4.6666667 14,0 9.3333333,0 4.6666667,0 0,0 Z m 1,1 h 12 v 9 H 1 Z m 3,2 v 1 h 6 V 3 Z M 2,5 V 6 H 12 V 5 Z M 2,7 V 8 H 12 V 7 Z" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5.16719103;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /> diff --git a/symbols/tourism/guest_house.svg b/symbols/tourism/guest_house.svg index ab45865e1f..969ce55488 100644 --- a/symbols/tourism/guest_house.svg +++ b/symbols/tourism/guest_house.svg @@ -5,11 +5,11 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" - version="1.1" - id="svg2" - width="14" + viewBox="0 0 14 14" height="14" - viewBox="0 0 14 14"> + width="14" + id="svg2" + version="1.1"> @@ -25,10 +25,10 @@ + id="polygon4-1" + d="M 6.9999997,0.85331316 1,5 h 2 v 8 H 6 V 8 h 2 v 5 h 3 V 5 h 2 z" + style="opacity:0.9;fill:#000000;fill-opacity:0.3;stroke-width:0.01526906" /> + id="hotel" + d="m 0.5,6.0000004 c -0.277,0 -0.5,0.223 -0.5,0.5 v 0.5 V 11 12 12.5 14 H 1 V 12.5 12 H 13 V 13.5 14 H 13.5 14 V 13.5 12 11 9.0000004 v -0.5 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 -0.277,0 -0.5,0.223 -0.5,0.5 v 0.5 V 11 H 1 v -3.9999996 -0.5 c 0,-0.277 -0.223,-0.5 -0.5,-0.5 z m 3,1 c -0.828427,0 -1.5,0.671573 -1.5,1.5 C 2,9.3284274 2.671573,10 3.5,10 4.328427,10 5,9.3284274 5,8.5000004 c 0,-0.828427 -0.671573,-1.5 -1.5,-1.5 z m 2.5,1 V 10 h 6 C 12,9.0000004 10.963825,8.0000004 10,8.0000004 Z" /> diff --git a/symbols/tourism/hostel.svg b/symbols/tourism/hostel.svg index f95d467998..a505984e04 100644 --- a/symbols/tourism/hostel.svg +++ b/symbols/tourism/hostel.svg @@ -1,17 +1,15 @@ - - + height="14" + width="14" + version="1.1"> @@ -27,13 +25,59 @@ + + + - + x="-5.9604645e-008" + height="13" + width="1" + id="rect814-7" + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.12230708;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /> + + + + diff --git a/symbols/tourism/hotel.svg b/symbols/tourism/hotel.svg index 471c524898..3fa42b1e9c 100644 --- a/symbols/tourism/hotel.svg +++ b/symbols/tourism/hotel.svg @@ -1,17 +1,15 @@ - - + height="14" + width="14" + version="1.1"> @@ -27,13 +25,13 @@ + y="0" + x="0" + height="14" + width="14" /> + id="hotel" + d="M 0.5 3 C 0.223 3 0 3.223 0 3.5 L 0 4 L 0 8 L 0 9 L 0 9.5 L 0 11 L 1 11 L 1 9.5 L 1 9 L 13 9 L 13 10.5 L 13 11 L 13.5 11 L 14 11 L 14 10.5 L 14 9 L 14 8 L 14 6 L 14 5.5 C 14 5.223 13.777 5 13.5 5 C 13.223 5 13 5.223 13 5.5 L 13 6 L 13 8 L 1 8 L 1 4 L 1 3.5 C 1 3.223 0.777 3 0.5 3 z M 3.5 4 C 2.671573 4 2 4.671573 2 5.5 C 2 6.328427 2.671573 7 3.5 7 C 4.328427 7 5 6.328427 5 5.5 C 5 4.671573 4.328427 4 3.5 4 z M 6 5 L 6 7 L 12 7 C 12 6 10.963825 5 10 5 L 6 5 z " /> diff --git a/symbols/tourism/map.svg b/symbols/tourism/map.svg index 90f22f4759..4837349f0f 100644 --- a/symbols/tourism/map.svg +++ b/symbols/tourism/map.svg @@ -25,7 +25,7 @@ + id="rect828-8" + d="M 4.46875 1 C 4.4340322 1.0022386 4.3999788 1.0179371 4.3652344 1.0273438 C 4.3418638 1.0339809 4.316744 1.0351181 4.2949219 1.0449219 C 4.2885174 1.047763 4.2817055 1.0476262 4.2753906 1.0507812 L 0.26953125 3.0527344 L 0.26953125 3.0625 C 0.11092462 3.1461425 1.7200928e-017 3.3075506 0 3.5 L 0 12.5 C 0 12.506925 0.0036301406 12.512676 0.00390625 12.519531 C 0.0049226003 12.548659 0.015193262 12.576414 0.021484375 12.605469 C 0.029297893 12.640912 0.033967723 12.676843 0.048828125 12.708984 C 0.051160273 12.714062 0.05021735 12.719572 0.052734375 12.724609 C 0.057548363 12.734245 0.068889393 12.736913 0.07421875 12.746094 C 0.11252692 12.812404 0.16311445 12.867716 0.2265625 12.910156 C 0.24394949 12.921797 0.25873495 12.934044 0.27734375 12.943359 C 0.34493696 12.977339 0.4189124 13 0.5 13 C 0.50559327 13 0.51007716 12.996274 0.515625 12.996094 C 0.52112479 12.995922 0.52574277 13.000355 0.53125 13 C 0.56458184 12.99784 0.59746685 12.983341 0.63085938 12.974609 C 0.65568191 12.967785 0.68198201 12.965459 0.70507812 12.955078 C 0.71148258 12.952237 0.71829451 12.952374 0.72460938 12.949219 L 4.4804688 11.072266 L 9.2949219 12.957031 C 9.3575728 12.98518 9.4266323 13.001953 9.5 13.001953 C 9.5034625 13.001953 9.5082735 13.000069 9.5117188 13 C 9.5159353 12.999892 9.5192334 12.996309 9.5234375 12.996094 C 9.5234375 12.996094 9.5253906 12.996094 9.5253906 12.996094 C 9.5274954 12.995985 9.5291443 12.998183 9.53125 12.998047 C 9.5436937 12.997241 9.5558318 12.989957 9.5683594 12.988281 C 9.6199239 12.980974 9.6696667 12.970917 9.7148438 12.949219 C 9.7179464 12.947755 9.7215288 12.948805 9.7246094 12.947266 L 13.730469 10.945312 L 13.730469 10.939453 C 13.889075 10.855811 14 10.694403 14 10.501953 L 14 1.5019531 C 14 1.4950281 13.99637 1.4892767 13.996094 1.4824219 C 13.995111 1.4506304 13.983837 1.4203589 13.976562 1.3886719 C 13.968805 1.3559969 13.964963 1.3227753 13.951172 1.2929688 C 13.94859 1.2872909 13.950078 1.281019 13.947266 1.2753906 C 13.940914 1.2626773 13.927164 1.2580133 13.919922 1.2460938 C 13.883967 1.1871805 13.837653 1.1390577 13.78125 1.0996094 C 13.759186 1.0840303 13.740911 1.0683639 13.716797 1.0566406 C 13.650587 1.0243878 13.578865 1.0019531 13.5 1.0019531 C 13.495872 1.0019531 13.492385 1.0038077 13.488281 1.0039062 C 13.481483 1.0040656 13.475561 0.99956083 13.46875 1 C 13.42481 1.0028331 13.381452 1.0205924 13.337891 1.0351562 C 13.325152 1.0395525 13.31107 1.0395515 13.298828 1.0449219 C 13.291219 1.0482218 13.282876 1.0470413 13.275391 1.0507812 L 9.515625 2.9296875 L 4.7480469 1.0644531 L 4.7460938 1.0625 C 4.7442842 1.0614801 4.7420557 1.0615436 4.7402344 1.0605469 L 4.7089844 1.0488281 C 4.6450389 1.0192405 4.5753327 1 4.5 1 C 4.4945399 1 4.4897918 1.0017811 4.484375 1.0019531 C 4.4835103 1.0019754 4.4832861 1.0038795 4.4824219 1.0039062 C 4.4775719 1.0040769 4.4736055 0.9996869 4.46875 1 z M 5 2.2363281 L 9 3.8027344 L 9 11.767578 L 5 10.201172 L 5 2.2363281 z M 4 2.3066406 L 4 10.195312 L 1 11.693359 L 1 3.8046875 L 4 2.3066406 z M 13 2.3066406 L 13 10.193359 L 10 11.691406 L 10 3.8046875 L 13 2.3066406 z " + style="opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.36637163;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:markers stroke fill" /> diff --git a/symbols/tourism/motel.svg b/symbols/tourism/motel.svg index 6bcf95eb02..378cb72a67 100644 --- a/symbols/tourism/motel.svg +++ b/symbols/tourism/motel.svg @@ -1,6 +1,4 @@ - - diff --git a/symbols/unpaved/unpaved.md b/symbols/unpaved/unpaved.md deleted file mode 100644 index 57ad3d0644..0000000000 --- a/symbols/unpaved/unpaved.md +++ /dev/null @@ -1,9 +0,0 @@ -Base pattern file for unpaved roads is generated in two steps. - -In the first step visit [jsdotpattern (command sequence is recorded)](www.imagico.de/map/jsdotpattern.php#x,64,jdp59980;g,2.25,16,16;rx,250,2,8,8;rx,250,2,8,8;s,jdp58799;s,jdp49103;rx,250,2,8,8;rx,250,2,8,8;s,jdp94534;rx,250,2,8,8;rd,0,0,1,scree,0.07,5,10,0,jdp40148,0000ff,ffffff;) - -Use "get pattern SVG data" (it is expected that background will be transparent, background colour in jsdotpattern is only for display). - -Generated SVG image is sanitized for use with Mapnik by the script svg_pattern.sh from the jsdotpattern repository at http://github.com/imagico/jsdotpattern. The sanitized file is then edited manually, and the element is put above the element. The file is saved as unpaved.svg. - -From sanitized base SVG file (unpaved.svg), the coloured SVG versions are created. Just create a copy of the file, and within the SVG code replace fill:#0000ff with the actual foreground colour and fill:none with the actual background colour. This can be done automatically with scripts/generate_unpaved_patterns.py. diff --git a/symbols/unpaved/unpaved.svg b/symbols/unpaved/unpaved.svg deleted file mode 100644 index 2e75e78df7..0000000000 --- a/symbols/unpaved/unpaved.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_aeroway-fill.svg b/symbols/unpaved/unpaved_aeroway-fill.svg deleted file mode 100644 index a4c7645ab3..0000000000 --- a/symbols/unpaved/unpaved_aeroway-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_living-street-fill.svg b/symbols/unpaved/unpaved_living-street-fill.svg deleted file mode 100644 index ccd7c1873f..0000000000 --- a/symbols/unpaved/unpaved_living-street-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_motorway-fill.svg b/symbols/unpaved/unpaved_motorway-fill.svg deleted file mode 100644 index 4a2ff298cc..0000000000 --- a/symbols/unpaved/unpaved_motorway-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_motorway-low-zoom.svg b/symbols/unpaved/unpaved_motorway-low-zoom.svg deleted file mode 100644 index 0e789aabf9..0000000000 --- a/symbols/unpaved/unpaved_motorway-low-zoom.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_pedestrian-fill.svg b/symbols/unpaved/unpaved_pedestrian-fill.svg deleted file mode 100644 index ef7eacb628..0000000000 --- a/symbols/unpaved/unpaved_pedestrian-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_platform-fill.svg b/symbols/unpaved/unpaved_platform-fill.svg deleted file mode 100644 index 320295e351..0000000000 --- a/symbols/unpaved/unpaved_platform-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_primary-fill.svg b/symbols/unpaved/unpaved_primary-fill.svg deleted file mode 100644 index 7f2e0f2857..0000000000 --- a/symbols/unpaved/unpaved_primary-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_primary-low-zoom.svg b/symbols/unpaved/unpaved_primary-low-zoom.svg deleted file mode 100644 index 1902a9e6db..0000000000 --- a/symbols/unpaved/unpaved_primary-low-zoom.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_raceway-fill.svg b/symbols/unpaved/unpaved_raceway-fill.svg deleted file mode 100644 index 31d8e4696b..0000000000 --- a/symbols/unpaved/unpaved_raceway-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_residential-fill.svg b/symbols/unpaved/unpaved_residential-fill.svg deleted file mode 100644 index 56a803e3e6..0000000000 --- a/symbols/unpaved/unpaved_residential-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_road-fill.svg b/symbols/unpaved/unpaved_road-fill.svg deleted file mode 100644 index c7205dec32..0000000000 --- a/symbols/unpaved/unpaved_road-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_secondary-fill.svg b/symbols/unpaved/unpaved_secondary-fill.svg deleted file mode 100644 index 69320f4128..0000000000 --- a/symbols/unpaved/unpaved_secondary-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_trunk-fill.svg b/symbols/unpaved/unpaved_trunk-fill.svg deleted file mode 100644 index dddda0fa62..0000000000 --- a/symbols/unpaved/unpaved_trunk-fill.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/symbols/unpaved/unpaved_trunk-low-zoom.svg b/symbols/unpaved/unpaved_trunk-low-zoom.svg deleted file mode 100644 index 5cc457d53e..0000000000 --- a/symbols/unpaved/unpaved_trunk-low-zoom.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - Created with Snap - diff --git a/water.mss b/water.mss index ff03a547b2..f29bcecb22 100644 --- a/water.mss +++ b/water.mss @@ -255,7 +255,7 @@ text-spacing: 400; text-size: 10; text-halo-radius: @standard-halo-radius; - text-halo-fill: @standard-halo-fill; + text-halo-fill: @standard-halo-fill; } [lock != 'yes'][int_tunnel != 'yes'] { @@ -320,6 +320,7 @@ .text[zoom >= 10] { [feature = 'natural_water'], [feature = 'natural_bay'], + [feature = 'natural_strait'], [feature = 'landuse_reservoir'], [feature = 'landuse_basin'], [feature = 'waterway_dock'] {