From 5c8413ce813cd99169418023dc0751ff426ea7b5 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Mon, 20 Jul 2015 16:26:02 +0200 Subject: [PATCH 01/34] make railway=rail and roads more distinguishable. increase rail visibility rail is now narrower, darker line on low zoom levels increase visibility of railway=construction, decrease visibility of railway=disused new tunnels for railway=rail - more visible, nicer and cosistent with other railway tunnels --- roads.mss | 110 ++++++++++++++++++++++++++---------------------------- 1 file changed, 53 insertions(+), 57 deletions(-) diff --git a/roads.mss b/roads.mss index 1c0d5d5265..fa0c56d91b 100644 --- a/roads.mss +++ b/roads.mss @@ -576,7 +576,7 @@ } } - [feature = 'railway_disused'], + [feature = 'railway_disused'][zoom >= 15], [feature = 'railway_construction'], [feature = 'railway_miniature'][zoom >= 15], [feature = 'railway_INT-preserved-ssy'][zoom >= 14] { @@ -799,7 +799,7 @@ } } - [feature = 'railway_disused'], + [feature = 'railway_disused'][zoom >= 15], [feature = 'railway_construction'], [feature = 'railway_miniature'][zoom >= 15], [feature = 'railway_INT-preserved-ssy'][zoom >= 14] { @@ -1446,15 +1446,10 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'railway_rail'][zoom >= 7], [feature = 'railway_INT-spur-siding-yard'][zoom >= 13] { [zoom < 13] { - line-color: #aaa; - [feature = 'railway_rail'] { - line-width: 0.6; - [zoom >= 9] { line-width: 1; } - [zoom >= 10] { line-width: 2; } - } - [feature = 'railway_INT-spur-siding-yard'] { - line-width: 1; - } + line-color: #787878; + line-width: 0.7; + [zoom >= 8] { line-width: 0.8; } + [zoom >= 12] { line-width: 0.9; } line-join: round; .roads_low_zoom[int_tunnel = 'yes'], .tunnels-fill { line-dasharray: 5,2; @@ -1462,56 +1457,42 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ } [zoom >= 13] { .roads-fill, .bridges-fill { - dark/line-color: #999999; - [feature = 'railway_rail'] { dark/line-width: 3; } - [feature = 'railway_INT-spur-siding-yard'] { dark/line-width: 2; } - [feature = 'railway_rail'] { dark/line-join: round; } - [feature = 'railway_INT-spur-siding-yard'] .bridges-fill { dark/line-join: round; } + dark/line-join: round; light/line-color: white; - [feature = 'railway_rail'] { light/line-width: 1; } - [feature = 'railway_INT-spur-siding-yard'] { light/line-width: 0.8; } - [feature = 'railway_rail'] { light/line-dasharray: 8,12; } - [feature = 'railway_INT-spur-siding-yard'] { light/line-dasharray: 0,8,11,1; } light/line-join: round; - [feature = 'railway_rail'][zoom >= 14] { light/line-dasharray: 0,11,8,1; } + [feature = 'railway_rail'] { + dark/line-color: #787878; + dark/line-width: 3; + light/line-width: 1; + light/line-dasharray: 8,8; + [zoom >= 15] { + light/line-dasharray: 0,8,8,1; + } + [zoom >= 19] { + dark/line-width: 4; + light/line-width: 2; + } + } + [feature = 'railway_INT-spur-siding-yard'] { + dark/line-width: 2; + dark/line-color: #aaa; + light/line-width: 0.8; + light/line-dasharray: 0,8,8,1; + } } .tunnels-fill { - a/line-width: 3; - b/line-width: 3; - c/line-width: 3; - d/line-width: 3; - e/line-width: 3; - f/line-width: 3; - g/line-width: 3; - a/line-color: #ffffff; - b/line-color: #fdfdfd; - c/line-color: #ececec; - d/line-color: #cacaca; - e/line-color: #afafaf; - f/line-color: #a1a1a1; - g/line-color: #9b9b9b; - a/line-dasharray: 1,9; - b/line-dasharray: 0,1,1,8; - c/line-dasharray: 0,2,1,7; - d/line-dasharray: 0,3,1,6; - e/line-dasharray: 0,4,1,5; - f/line-dasharray: 0,5,1,4; - g/line-dasharray: 0,6,1,3; - a/line-join: round; - b/line-join: round; - c/line-join: round; - d/line-join: round; - e/line-join: round; - f/line-join: round; - g/line-join: round; + line-color: #787878; + line-width: 2.8; + line-dasharray: 6,4; + line-clip: false; [feature = 'railway_INT-spur-siding-yard'] { - a/line-width: 2; - b/line-width: 2; - c/line-width: 2; - d/line-width: 2; - e/line-width: 2; - f/line-width: 2; - g/line-width: 2; + line-color: #aaa; + line-width: 1.9; + line-dasharray: 3,3; + } + [feature = 'railway_rail'][zoom >= 19] { + line-dasharray: 8,6; + line-width: 3.8; } } } @@ -1644,13 +1625,28 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ } } - [feature = 'railway_disused'], [feature = 'railway_construction'] { [zoom >= 13] { line-color: grey; line-width: 2; line-dasharray: 2,4; line-join: round; + [zoom >= 14] { + line-dasharray: 2,3; + } + [zoom >= 15] { + line-width: 3; + line-dasharray: 3,3; + } + } + } + + [feature = 'railway_disused'] { + [zoom >= 15] { + line-color: #aaa; + line-width: 2; + line-dasharray: 2,4; + line-join: round; } } From 1eb87dbe1b2c583614dee61a2619dc2daa794ef6 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 29 Jul 2015 16:59:25 +0200 Subject: [PATCH 02/34] New road style - rework road colours, road widths and display of railway=rail Currently used road style has some problems, one the most obvious one is that econdary and trunk color too similar to landuse colors (#102). But there are also other serious problems with basing design on UK road style. Marking different road types by colours in completely different hues works well for maps displaying primarily roads, with limited different styles for other features. This map differentiates wide range of landovers, POIs, borders and names. It is using more different styles than most maps. For example picture below presents road types on some of landcovers displayed in this style. In this situation colours of many road types are closer to other features than to other road types (forest - trunk, motorway - river, tertiary - sand etc). That is not happening for example on Ordnance Survey map where number of differently displayed features is strictly limited. Also, UK color style is not universally known. For many people hierarchy of red, blue and green roads is not obvious. This new road style is using narrower range of hues, making road of different classes more similar what should eliminate possibility of confusing them with other features and makes easier to avoid collisions on changing rendering of other elements. Steady progression of hue and lightness for major road types (motorway, trunk, primary, secondary, tertiary) should make more intuitive which roads are more important. Road colors were also tuned to ensure that roads are well visible on all landcovers. Roads are now narrower, to improve map readablity and make it prettier. Also, more road types are differentiated by width rather than by color (white, wide tertiary). Railways are now more prominent and service tag for railways has bigger impact on rendering. Color of pedestrian and living_street is now more logical and intuitive, without making map uglier. Fixes #102 (secondary and trunk color too similar to landuse colors) Fixes #631 (tertiary roads more dominant than secondary on z10) Fixes #1272 (junction=motorway_junction names are hard to read) Fixes #319 (motorways on low zoom levels are very hard to notice and look like rivers) Fixes #914 (motorway tunnels are nearly invisible on z13 and lower) Fixes #1124 (make road-casing stronger) Reduces impact of #286 (some streets that are not joining may on zoom out misleadingly appear to be joining) --- preview.png | Bin 80167 -> 85866 bytes roads.mss | 442 ++++++++++++++++++----------- scripts/create_standard_shields | 18 +- scripts/generate_road_colors.py | 227 +++++++++++++++ scripts/regenerate_shields.sh | 2 + symbols/shields/motorway_10x1.svg | 4 +- symbols/shields/motorway_10x2.svg | 4 +- symbols/shields/motorway_10x3.svg | 4 +- symbols/shields/motorway_10x4.svg | 4 +- symbols/shields/motorway_11x1.svg | 4 +- symbols/shields/motorway_11x2.svg | 4 +- symbols/shields/motorway_11x3.svg | 4 +- symbols/shields/motorway_11x4.svg | 4 +- symbols/shields/motorway_1x1.svg | 4 +- symbols/shields/motorway_1x2.svg | 4 +- symbols/shields/motorway_1x3.svg | 4 +- symbols/shields/motorway_1x4.svg | 4 +- symbols/shields/motorway_2x1.svg | 4 +- symbols/shields/motorway_2x2.svg | 4 +- symbols/shields/motorway_2x3.svg | 4 +- symbols/shields/motorway_2x4.svg | 4 +- symbols/shields/motorway_3x1.svg | 4 +- symbols/shields/motorway_3x2.svg | 4 +- symbols/shields/motorway_3x3.svg | 4 +- symbols/shields/motorway_3x4.svg | 4 +- symbols/shields/motorway_4x1.svg | 4 +- symbols/shields/motorway_4x2.svg | 4 +- symbols/shields/motorway_4x3.svg | 4 +- symbols/shields/motorway_4x4.svg | 4 +- symbols/shields/motorway_5x1.svg | 4 +- symbols/shields/motorway_5x2.svg | 4 +- symbols/shields/motorway_5x3.svg | 4 +- symbols/shields/motorway_5x4.svg | 4 +- symbols/shields/motorway_6x1.svg | 4 +- symbols/shields/motorway_6x2.svg | 4 +- symbols/shields/motorway_6x3.svg | 4 +- symbols/shields/motorway_6x4.svg | 4 +- symbols/shields/motorway_7x1.svg | 4 +- symbols/shields/motorway_7x2.svg | 4 +- symbols/shields/motorway_7x3.svg | 4 +- symbols/shields/motorway_7x4.svg | 4 +- symbols/shields/motorway_8x1.svg | 4 +- symbols/shields/motorway_8x2.svg | 4 +- symbols/shields/motorway_8x3.svg | 4 +- symbols/shields/motorway_8x4.svg | 4 +- symbols/shields/motorway_9x1.svg | 4 +- symbols/shields/motorway_9x2.svg | 4 +- symbols/shields/motorway_9x3.svg | 4 +- symbols/shields/motorway_9x4.svg | 4 +- symbols/shields/primary_10x1.svg | 4 +- symbols/shields/primary_10x2.svg | 4 +- symbols/shields/primary_10x3.svg | 4 +- symbols/shields/primary_10x4.svg | 4 +- symbols/shields/primary_11x1.svg | 4 +- symbols/shields/primary_11x2.svg | 4 +- symbols/shields/primary_11x3.svg | 4 +- symbols/shields/primary_11x4.svg | 4 +- symbols/shields/primary_1x1.svg | 4 +- symbols/shields/primary_1x2.svg | 4 +- symbols/shields/primary_1x3.svg | 4 +- symbols/shields/primary_1x4.svg | 4 +- symbols/shields/primary_2x1.svg | 4 +- symbols/shields/primary_2x2.svg | 4 +- symbols/shields/primary_2x3.svg | 4 +- symbols/shields/primary_2x4.svg | 4 +- symbols/shields/primary_3x1.svg | 4 +- symbols/shields/primary_3x2.svg | 4 +- symbols/shields/primary_3x3.svg | 4 +- symbols/shields/primary_3x4.svg | 4 +- symbols/shields/primary_4x1.svg | 4 +- symbols/shields/primary_4x2.svg | 4 +- symbols/shields/primary_4x3.svg | 4 +- symbols/shields/primary_4x4.svg | 4 +- symbols/shields/primary_5x1.svg | 4 +- symbols/shields/primary_5x2.svg | 4 +- symbols/shields/primary_5x3.svg | 4 +- symbols/shields/primary_5x4.svg | 4 +- symbols/shields/primary_6x1.svg | 4 +- symbols/shields/primary_6x2.svg | 4 +- symbols/shields/primary_6x3.svg | 4 +- symbols/shields/primary_6x4.svg | 4 +- symbols/shields/primary_7x1.svg | 4 +- symbols/shields/primary_7x2.svg | 4 +- symbols/shields/primary_7x3.svg | 4 +- symbols/shields/primary_7x4.svg | 4 +- symbols/shields/primary_8x1.svg | 4 +- symbols/shields/primary_8x2.svg | 4 +- symbols/shields/primary_8x3.svg | 4 +- symbols/shields/primary_8x4.svg | 4 +- symbols/shields/primary_9x1.svg | 4 +- symbols/shields/primary_9x2.svg | 4 +- symbols/shields/primary_9x3.svg | 4 +- symbols/shields/primary_9x4.svg | 4 +- symbols/shields/secondary_10x1.svg | 4 +- symbols/shields/secondary_10x2.svg | 4 +- symbols/shields/secondary_10x3.svg | 4 +- symbols/shields/secondary_10x4.svg | 4 +- symbols/shields/secondary_11x1.svg | 4 +- symbols/shields/secondary_11x2.svg | 4 +- symbols/shields/secondary_11x3.svg | 4 +- symbols/shields/secondary_11x4.svg | 4 +- symbols/shields/secondary_1x1.svg | 4 +- symbols/shields/secondary_1x2.svg | 4 +- symbols/shields/secondary_1x3.svg | 4 +- symbols/shields/secondary_1x4.svg | 4 +- symbols/shields/secondary_2x1.svg | 4 +- symbols/shields/secondary_2x2.svg | 4 +- symbols/shields/secondary_2x3.svg | 4 +- symbols/shields/secondary_2x4.svg | 4 +- symbols/shields/secondary_3x1.svg | 4 +- symbols/shields/secondary_3x2.svg | 4 +- symbols/shields/secondary_3x3.svg | 4 +- symbols/shields/secondary_3x4.svg | 4 +- symbols/shields/secondary_4x1.svg | 4 +- symbols/shields/secondary_4x2.svg | 4 +- symbols/shields/secondary_4x3.svg | 4 +- symbols/shields/secondary_4x4.svg | 4 +- symbols/shields/secondary_5x1.svg | 4 +- symbols/shields/secondary_5x2.svg | 4 +- symbols/shields/secondary_5x3.svg | 4 +- symbols/shields/secondary_5x4.svg | 4 +- symbols/shields/secondary_6x1.svg | 4 +- symbols/shields/secondary_6x2.svg | 4 +- symbols/shields/secondary_6x3.svg | 4 +- symbols/shields/secondary_6x4.svg | 4 +- symbols/shields/secondary_7x1.svg | 4 +- symbols/shields/secondary_7x2.svg | 4 +- symbols/shields/secondary_7x3.svg | 4 +- symbols/shields/secondary_7x4.svg | 4 +- symbols/shields/secondary_8x1.svg | 4 +- symbols/shields/secondary_8x2.svg | 4 +- symbols/shields/secondary_8x3.svg | 4 +- symbols/shields/secondary_8x4.svg | 4 +- symbols/shields/secondary_9x1.svg | 4 +- symbols/shields/secondary_9x2.svg | 4 +- symbols/shields/secondary_9x3.svg | 4 +- symbols/shields/secondary_9x4.svg | 4 +- symbols/shields/tertiary_10x1.svg | 4 +- symbols/shields/tertiary_10x2.svg | 4 +- symbols/shields/tertiary_10x3.svg | 4 +- symbols/shields/tertiary_10x4.svg | 4 +- symbols/shields/tertiary_11x1.svg | 4 +- symbols/shields/tertiary_11x2.svg | 4 +- symbols/shields/tertiary_11x3.svg | 4 +- symbols/shields/tertiary_11x4.svg | 4 +- symbols/shields/tertiary_1x1.svg | 4 +- symbols/shields/tertiary_1x2.svg | 4 +- symbols/shields/tertiary_1x3.svg | 4 +- symbols/shields/tertiary_1x4.svg | 4 +- symbols/shields/tertiary_2x1.svg | 4 +- symbols/shields/tertiary_2x2.svg | 4 +- symbols/shields/tertiary_2x3.svg | 4 +- symbols/shields/tertiary_2x4.svg | 4 +- symbols/shields/tertiary_3x1.svg | 4 +- symbols/shields/tertiary_3x2.svg | 4 +- symbols/shields/tertiary_3x3.svg | 4 +- symbols/shields/tertiary_3x4.svg | 4 +- symbols/shields/tertiary_4x1.svg | 4 +- symbols/shields/tertiary_4x2.svg | 4 +- symbols/shields/tertiary_4x3.svg | 4 +- symbols/shields/tertiary_4x4.svg | 4 +- symbols/shields/tertiary_5x1.svg | 4 +- symbols/shields/tertiary_5x2.svg | 4 +- symbols/shields/tertiary_5x3.svg | 4 +- symbols/shields/tertiary_5x4.svg | 4 +- symbols/shields/tertiary_6x1.svg | 4 +- symbols/shields/tertiary_6x2.svg | 4 +- symbols/shields/tertiary_6x3.svg | 4 +- symbols/shields/tertiary_6x4.svg | 4 +- symbols/shields/tertiary_7x1.svg | 4 +- symbols/shields/tertiary_7x2.svg | 4 +- symbols/shields/tertiary_7x3.svg | 4 +- symbols/shields/tertiary_7x4.svg | 4 +- symbols/shields/tertiary_8x1.svg | 4 +- symbols/shields/tertiary_8x2.svg | 4 +- symbols/shields/tertiary_8x3.svg | 4 +- symbols/shields/tertiary_8x4.svg | 4 +- symbols/shields/tertiary_9x1.svg | 4 +- symbols/shields/tertiary_9x2.svg | 4 +- symbols/shields/tertiary_9x3.svg | 4 +- symbols/shields/tertiary_9x4.svg | 4 +- symbols/shields/trunk_10x1.svg | 4 +- symbols/shields/trunk_10x2.svg | 4 +- symbols/shields/trunk_10x3.svg | 4 +- symbols/shields/trunk_10x4.svg | 4 +- symbols/shields/trunk_11x1.svg | 4 +- symbols/shields/trunk_11x2.svg | 4 +- symbols/shields/trunk_11x3.svg | 4 +- symbols/shields/trunk_11x4.svg | 4 +- symbols/shields/trunk_1x1.svg | 4 +- symbols/shields/trunk_1x2.svg | 4 +- symbols/shields/trunk_1x3.svg | 4 +- symbols/shields/trunk_1x4.svg | 4 +- symbols/shields/trunk_2x1.svg | 4 +- symbols/shields/trunk_2x2.svg | 4 +- symbols/shields/trunk_2x3.svg | 4 +- symbols/shields/trunk_2x4.svg | 4 +- symbols/shields/trunk_3x1.svg | 4 +- symbols/shields/trunk_3x2.svg | 4 +- symbols/shields/trunk_3x3.svg | 4 +- symbols/shields/trunk_3x4.svg | 4 +- symbols/shields/trunk_4x1.svg | 4 +- symbols/shields/trunk_4x2.svg | 4 +- symbols/shields/trunk_4x3.svg | 4 +- symbols/shields/trunk_4x4.svg | 4 +- symbols/shields/trunk_5x1.svg | 4 +- symbols/shields/trunk_5x2.svg | 4 +- symbols/shields/trunk_5x3.svg | 4 +- symbols/shields/trunk_5x4.svg | 4 +- symbols/shields/trunk_6x1.svg | 4 +- symbols/shields/trunk_6x2.svg | 4 +- symbols/shields/trunk_6x3.svg | 4 +- symbols/shields/trunk_6x4.svg | 4 +- symbols/shields/trunk_7x1.svg | 4 +- symbols/shields/trunk_7x2.svg | 4 +- symbols/shields/trunk_7x3.svg | 4 +- symbols/shields/trunk_7x4.svg | 4 +- symbols/shields/trunk_8x1.svg | 4 +- symbols/shields/trunk_8x2.svg | 4 +- symbols/shields/trunk_8x3.svg | 4 +- symbols/shields/trunk_8x4.svg | 4 +- symbols/shields/trunk_9x1.svg | 4 +- symbols/shields/trunk_9x2.svg | 4 +- symbols/shields/trunk_9x3.svg | 4 +- symbols/shields/trunk_9x4.svg | 4 +- 225 files changed, 952 insertions(+), 617 deletions(-) create mode 100644 scripts/generate_road_colors.py create mode 100755 scripts/regenerate_shields.sh diff --git a/preview.png b/preview.png index 88a31a16bf4ad9268b31e299fc4068fff541b9ce..f2667cd691278594f8e2812ea94317d3912c9766 100644 GIT binary patch literal 85866 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 DW9WLG literal 80167 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%0A=$I+YsK#`@aL!O@a{5f3zy`Tgrx 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�qj(uscyxXL;9A1)zWp*1O-x>O^_Usr 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 12] { + [zoom >= 11] { [feature = 'highway_motorway'] { - line-width: @motorway-width-z12; + line-width: @motorway-width-z11; + [zoom >= 11] { line-width: @motorway-width-z11; } + [zoom >= 12] { line-width: @motorway-width-z12; } [zoom >= 13] { line-width: @motorway-width-z13; } [zoom >= 15] { line-width: @motorway-width-z15; } [zoom >= 17] { line-width: @motorway-width-z17; } + [zoom >= 18] { line-width: @motorway-width-z18; } [link = 'yes'] { line-width: @motorway-link-width-z12; [zoom >= 13] { line-width: @motorway-link-width-z13; } [zoom >= 15] { line-width: @motorway-link-width-z15; } [zoom >= 17] { line-width: @motorway-link-width-z17; } + [zoom >= 18] { line-width: @motorway-link-width-z18; } + } + line-color: @motorway-low-zoom-casing; + [zoom >= 13] { + line-color: @motorway-casing; } - line-color: @motorway-casing; .roads-casing { line-join: round; line-cap: round; @@ -175,12 +238,17 @@ } [feature = 'highway_trunk'] { - [zoom >= 12] { - line-color: @trunk-casing; - line-width: @trunk-width-z12; + [zoom >= 11] { + line-color: @trunk-low-zoom-casing; + [zoom >= 13] { + line-color: @trunk-casing; + } + line-width: @trunk-width-z11; + [zoom >= 12] { line-width: @trunk-width-z12; } [zoom >= 13] { line-width: @trunk-width-z13; } [zoom >= 15] { line-width: @trunk-width-z15; } [zoom >= 17] { line-width: @trunk-width-z17; } + [zoom >= 18] { line-width: @trunk-width-z18; } .roads-casing { line-join: round; line-cap: round; @@ -196,12 +264,17 @@ } [feature = 'highway_primary'] { - [zoom >= 12] { - line-color: @primary-casing; - line-width: @primary-width-z12; + [zoom >= 11] { + line-color: @primary-low-zoom-casing; + [zoom >= 13] { + line-color: @primary-casing; + } + line-width: @primary-width-z11; + [zoom >= 12] { line-width: @primary-width-z12; } [zoom >= 13] { line-width: @primary-width-z13; } [zoom >= 15] { line-width: @primary-width-z15; } [zoom >= 17] { line-width: @primary-width-z17; } + [zoom >= 18] { line-width: @primary-width-z18; } .roads-casing { line-join: round; line-cap: round; @@ -217,12 +290,17 @@ } [feature = 'highway_secondary'] { - [zoom >= 12] { - line-color: @secondary-casing; - line-width: @secondary-width-z12; + [zoom >= 11] { + line-color: @secondary-low-zoom-casing; + [zoom >= 13] { + line-color: @secondary-casing; + } + line-width: @secondary-width-z11; + [zoom >= 12] { line-width: @secondary-width-z12; } [zoom >= 13] { line-width: @secondary-width-z13; } [zoom >= 15] { line-width: @secondary-width-z15; } [zoom >= 17] { line-width: @secondary-width-z17; } + [zoom >= 18] { line-width: @secondary-width-z18; } .roads-casing { line-join: round; line-cap: round; @@ -246,7 +324,9 @@ [zoom >= 13] { line-width: @tertiary-width-z13; } [zoom >= 14] { line-width: @tertiary-width-z14; } [zoom >= 15] { line-width: @tertiary-width-z15; } + [zoom >= 16] { line-width: @tertiary-width-z16; } [zoom >= 17] { line-width: @tertiary-width-z17; } + [zoom >= 18] { line-width: @tertiary-width-z18; } .roads-casing { line-join: round; line-cap: round; @@ -264,8 +344,7 @@ } [feature = 'highway_residential'], - [feature = 'highway_unclassified'], - [feature = 'highway_road'] { + [feature = 'highway_unclassified'] { [zoom >= 13] { line-color: @residential-casing; line-width: @residential-width-z13; @@ -289,6 +368,7 @@ } } + [feature = 'highway_road'], [feature = 'highway_service'] { [zoom >= 14][service = 'INT-normal'], [zoom >= 16][service = 'INT-minor'] { @@ -950,131 +1030,162 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_motorway'] { [zoom >= 5] { - line-color: @motorway-fill; - line-width: 0.5; + line-color: @motorway-low-zoom; + line-width: @motorway-width-z5; + [zoom >= 11] { + line-color: @motorway-fill; + } + } + [zoom >= 7] { line-width: @motorway-width-z7; } + [zoom >= 9] { line-width: @motorway-width-z9; } + [zoom >= 10] { line-width: @motorway-width-z10; } + [zoom >= 11] { + line-width: @motorway-width-z11 - 2 * @major-casing-width-z11; + line-cap: round; + line-join: round; } - [zoom >= 7] { line-width: 1; } - [zoom >= 9] { line-width: 1.4; } - [zoom >= 10] { line-width: 2; } - [zoom >= 11] { line-width: 2.5; } [zoom >= 12] { - line-width: @motorway-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @casing-width-z17; } + 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; } [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; } } .tunnels-fill { line-color: @motorway-tunnel-fill; } .bridges-fill { - line-width: @motorway-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @bridge-casing-width-z17; } + 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; } [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; } } } - line-cap: round; - line-join: round; } } [feature = 'highway_trunk'] { [zoom >= 5] { - line-width: 0.4; - line-color: @trunk-fill; + line-width: @trunk-width-z5; + line-color: @trunk-low-zoom; + [zoom >= 11] { + line-color: @trunk-fill; + } } [zoom >= 7] { - line-width: 1; - line-color: @trunk-fill-alternative; + line-width: @trunk-width-z7; + } + [zoom >= 9] { line-width: @trunk-width-z9; } + [zoom >= 10] { line-width: @trunk-width-z10; } + [zoom >= 11] { + line-width: @trunk-width-z11 - 2 * @major-casing-width-z11; + line-cap: round; + line-join: round; } - [zoom >= 9] { line-width: 2; } - [zoom >= 11] { line-width: 2.5; } [zoom >= 12] { - line-color: @trunk-fill; - line-width: @trunk-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; } + 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; } .tunnels-fill { line-color: @trunk-tunnel-fill; } .bridges-fill { - line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; } + 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; } } - line-cap: round; - line-join: round; } } [feature = 'highway_primary'] { - [zoom >= 7] { - line-width: 0.5; - line-color: @primary-fill; + [zoom >= 8] { + line-width: @primary-width-z8; + line-color: @primary-low-zoom; + [zoom >= 11] { + line-color: @primary-fill; + } + } + [zoom >= 9] { line-width: @primary-width-z9; } + [zoom >= 10] { line-width: @primary-width-z10; } + [zoom >= 11] { + line-width: @primary-width-z11 - 2 * @major-casing-width-z11; + line-cap: round; + line-join: round; } - [zoom >= 9] { line-width: 1.2; } - [zoom >= 10] { line-width: 2; } - [zoom >= 11] { line-width: 2.5; } [zoom >= 12] { - line-width: @primary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; } + 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; } .tunnels-fill { line-color: @primary-tunnel-fill; } .bridges-fill { - line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; } + 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; } } - line-cap: round; - line-join: round; } } [feature = 'highway_secondary'] { [zoom >= 9] { + line-color: @residential-casing; line-width: 1; - line-color: @secondary-fill; } - [zoom >= 11] { line-width: 2; } - [zoom >= 12] { - line-width: @secondary-width-z12 - 2 * @casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; } - .tunnels-fill { - line-color: @secondary-tunnel-fill; - } - .bridges-fill { - line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; } - } + [zoom >=10] { + line-color: @residential-casing; + line-width: 1.1; + } + [zoom >= 11] { + line-color: @secondary-fill; + line-width: @secondary-width-z11 - 2 * @major-casing-width-z11; line-cap: round; line-join: round; + [zoom >= 12] { + line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; + [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @major-casing-width-z13; } + [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @major-casing-width-z15; } + [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @major-casing-width-z17; } + [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @major-casing-width-z18; } + .tunnels-fill { + line-color: @secondary-tunnel-fill; + } + .bridges-fill { + line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12; + [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @major-bridge-casing-width-z13; } + [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @major-bridge-casing-width-z15; } + [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; } + } + } } } [feature = 'highway_tertiary'] { [zoom >= 10] { line-color: @residential-casing; - line-width: 1; + line-width: 0.55; } [zoom >= 12] { line-color: @tertiary-fill; @@ -1082,7 +1193,9 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ [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; } .tunnels-fill { line-color: @tertiary-tunnel-fill; } @@ -1091,7 +1204,9 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ [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; } } line-cap: round; line-join: round; @@ -1132,42 +1247,6 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ } } - [feature = 'highway_road'] { - [zoom >= 10] { - line-color: @residential-casing; - line-width: 1; - } - [zoom >= 13] { - .roads-fill, .bridges-fill { - line-color: @road-fill; - } - .tunnels-fill { - line-color: @residential-tunnel-fill; - } - .roads-fill { - line-width: 2; - [zoom >= 14] { line-width: 3; } - [zoom >= 15] { line-width: 6.5; } - [zoom >= 16] { line-width: 9.4; } - [zoom >= 17] { line-width: 13; } - } - .bridges-fill { - line-width: 3.5; - [zoom >= 14] { line-width: 7.5; } - [zoom >= 15] { line-width: 9.5; } - [zoom >= 17] { line-width: 14; } - } - .tunnels-fill { - line-width: 2; - [zoom >= 14] { line-width: 3.5; } - [zoom >= 15] { line-width: 9.5; } - [zoom >= 17] { line-width: 14; } - } - line-cap: round; - line-join: round; - } - } - [feature = 'highway_living_street'] { [zoom >= 13] { line-width: @living-street-width-z13 - 2 * @casing-width-z13; @@ -1193,7 +1272,14 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ } } + [feature = 'highway_road'], [feature = 'highway_service'] { + [zoom >= 13][feature = 'highway_road'] { + .roads-fill, .bridges-fill { + line-color: @road-fill; + } + } + [zoom >= 10][feature = 'highway_road'], [zoom >= 13][service = 'INT-normal'] { line-width: 1; line-color: @residential-casing; @@ -1201,6 +1287,7 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 14][service = 'INT-normal'], [zoom >= 16][service = 'INT-minor'] { line-color: @service-fill; + [feature = 'highway_road'], [service = 'INT-normal'] { line-width: @service-width-z14 - 2 * @casing-width-z14; [zoom >= 16] { line-width: @service-width-z16 - 2 * @casing-width-z16; } @@ -1213,6 +1300,9 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ line-cap: round; .tunnels-fill { line-color: darken(white, 5%); + [feature = 'highway_road'] { + line-color: @residential-tunnel-fill; + } } .bridges-fill { [service = 'INT-normal'] { @@ -1700,10 +1790,18 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ marker-fill: @tertiary-casing; marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15; marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15; + [zoom >= 16] { + marker-width: (@tertiary-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16; + marker-height: (@tertiary-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16; + } [zoom >= 17] { marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17; marker-height: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17; } + [zoom >= 18] { + marker-width: (@tertiary-width-z18 - 2 * @casing-width-z18) * 1.8 + 2 * @casing-width-z18; + marker-height: (@tertiary-width-z18 - 2 * @casing-width-z18) * 1.8 + 2 * @casing-width-z18; + } marker-allow-overlap: true; marker-ignore-placement: true; marker-line-width: 0; diff --git a/scripts/create_standard_shields b/scripts/create_standard_shields index be84c50dac..204782cbd1 100755 --- a/scripts/create_standard_shields +++ b/scripts/create_standard_shields @@ -18,11 +18,19 @@ widths=' 10:75.75 11:80.75' -colours='motorway:#7788a1 -trunk:#87ab87 -primary:#bb7b7f -secondary:#c6ad84 -tertiary:#c4c68f' +#shield colors were generated with scripts/generate_road_colors.py +colours='motorway:#d18996 +trunk:#da9b88 +primary:#d5b284 +secondary:#c6ca90 +tertiary:#c6c6c6' + +#motorway: lch(65, 30, 10) Conversion error on moving from lch to rgb: 0.4 lch(-0.3, -0.4, -0.9) +#trunk: lch(70, 30, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.3, -1.4, 1.1) +#primary: lch(75, 30, 74) Conversion error on moving from lch to rgb: 1.7 lch(-0.3, -0.8, 3.9) +#secondary: lch(80, 30, 106) Conversion error on moving from lch to rgb: 1.7 lch(-0.2, 0.7, 4.3) +#tertiary: lch(80, 0, 0) Conversion error on moving from lch to rgb: 0.0 lch(-0.0, 0.0, 322.5) + xoffset=1.25 diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py new file mode 100644 index 0000000000..f5708ac661 --- /dev/null +++ b/scripts/generate_road_colors.py @@ -0,0 +1,227 @@ +from colormath.color_conversions import convert_color +from colormath.color_objects import LabColor, LCHabColor, SpectralColor, sRGBColor, \ +XYZColor, LCHuvColor, IPTColor +from colormath.color_diff import delta_e_cie2000 +import numpy + +def int_lch_to_string(lch): + lch = lch.get_value_tuple() + l = "{0:.1f}".format(lch[0]) + c = "{0:.1f}".format(lch[1]) + h = "{0:.1f}".format(lch[2]) + if l[-1] == '0': + l = "{0:.0f}".format(lch[0]) + if c[-1] == '0': + c = "{0:.0f}".format(lch[1]) + if h[-1] == '0': + h = "{0:.0f}".format(lch[2]) + + return 'lch(' + l + ', ' + c + ', ' + h + ')' + + +class Color: + def __init__(self, name, hex): + rgb = sRGBColor.new_from_rgb_hex(hex) + self.lch = convert_color(rgb, LCHabColor) + if name != None: + if 'low-zoom' in name: + self.lch.lch_c = 50 + if 'casing' in name: + self.lch.lch_l = 50 + self.lch.lch_c = 80 + self.intended_lch_string = int_lch_to_string(self.lch) + self.hex = str(convert_color(self.lch, sRGBColor).get_rgb_hex()) + assert(len(self.hex) == 7) + + @classmethod + def lch(self, l, c, h): + lch = LCHabColor(l, c, h) + rgb = convert_color(lch, sRGBColor) + #print(lch.get_value_tuple()) + #print(rgb.get_upscaled_value_tuple()) + hex = str(rgb.get_rgb_hex()) + if (len(hex) != 7): + print("this lch value is outside rgb range") + exit + + effective_lch = convert_color(rgb, LCHabColor) + effective_lch_tuple = effective_lch.get_value_tuple() + lch_tuple = lch.get_value_tuple() + + returned = Color(None, hex) + + color1_lab = convert_color(effective_lch, LabColor); + color2_lab = convert_color(lch, LabColor); + delta_e = delta_e_cie2000(color1_lab, color2_lab); + + if delta_e > 2.5: + print("high conversion error on moving to rgb") + + delta = tuple(numpy.subtract(effective_lch_tuple, lch_tuple)) + lch_delta = ' lch(' + str("{0:.1f}".format(delta[0])) + ', ' + str("{0:.1f}".format(delta[1])) + ', ' + str("{0:.1f}".format(delta[2])) + ')' + + returned.intended_lch_string = int_lch_to_string(lch) + ' Conversion error on moving from lch to rgb: ' + str("{0:.1f}".format(delta_e)) + lch_delta + + return returned + + def get_as_hex(self): + return self.hex + + def get_intended_lch(self): + return self.intended_lch_string + +min_h = 10 +max_h = 106 +delta_h = (max_h - min_h)/3 +motorway_hue = min_h +trunk_hue = min_h + delta_h +primary_hue = min_h + delta_h*2 +secondary_hue = min_h + delta_h*3 + +colors = {} + +min_l = 65 +max_l = 80 +delta_l = (max_l - min_l)/3 + +c = 30 + +i = 0 +colors['motorway_shield'] = Color.lch(min_l+delta_l*i, c, motorway_hue) +i = 1 +colors['trunk_shield'] = Color.lch(min_l+delta_l*i, c, trunk_hue) +i = 2 +colors['primary_shield'] = Color.lch(min_l+delta_l*i, c, primary_hue) +i = 3 +colors['secondary_shield'] = Color.lch(min_l+delta_l*i, c, secondary_hue) + +colors['tertiary_shield'] = Color.lch(min_l+delta_l*i, 0, 0) + + +min_l = 70 +max_l = 97 +delta_l = (max_l - min_l)/3 + +c = 35 + +i = 0 +colors['motorway_fill'] = Color.lch(min_l+delta_l*i, c, motorway_hue) +i = 1 +colors['trunk_fill'] = Color.lch(min_l+delta_l*i, c, trunk_hue) +i = 2 +colors['primary_fill'] = Color.lch(min_l+delta_l*i, c, primary_hue) +i = 3 +colors['secondary_fill'] = Color.lch(min_l+delta_l*i, c, secondary_hue) + +min_c = 29 +max_c = 35 +delta_c = max_c - min_c +delta_c /= 3 + +min_l = 70 +max_l = 97 +delta_l = max_l - min_l +delta_l /= 3 +i = 0 +colors['motorway_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, motorway_hue) +i = 1 +colors['trunk_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, trunk_hue) +i = 2 +colors['primary_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, primary_hue) +i = 3 +colors['secondary_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, secondary_hue) + +min_l = 62 +max_l = 92 +delta_l = (max_l - min_l)/3 + +c = 50 +i = 0 +colors['motorway-low-zoom'] = Color.lch(min_l+delta_l*i, c, motorway_hue) +i = 1 +colors['trunk-low-zoom'] = Color.lch(min_l+delta_l*i, c, trunk_hue) +i = 2 +colors['primary-low-zoom'] = Color.lch(min_l+delta_l*i, c, primary_hue) + +l = 50 + +min_c = 55 +max_c = 70 +delta_c = max_c - min_c +delta_c /= 3 + +i = 0 +colors['motorway-casing'] = Color.lch(l, max_c-delta_c*i, motorway_hue) +i = 1 +colors['trunk-casing'] = Color.lch(l, max_c-delta_c*i, trunk_hue) +i = 2 +colors['primary-casing'] = Color.lch(l, max_c-delta_c*i, primary_hue) +i = 3 +colors['secondary-casing'] = Color.lch(l, max_c-delta_c*i, secondary_hue) + +min_l = 50 +max_l = 70 +delta_l = (max_l - min_l)/3 + +min_c = 50 +max_c = 65 +delta_c = max_c - min_c +delta_c /= 3 + +i = 0 +colors['motorway-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, motorway_hue) +i = 1 +colors['trunk-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, trunk_hue) +i = 2 +colors['primary-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, primary_hue) +i = 3 +colors['secondary-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, secondary_hue) + +road_fill = """ +//road colors for major roads were generated with scripts/generate_road_colors.py +@motorway-fill: """ + colors['motorway_fill'].get_as_hex() + '; // ' + colors['motorway_fill'].intended_lch_string + """ +@trunk-fill: """+colors['trunk_fill'].get_as_hex() + '; // ' + colors['trunk_fill'].intended_lch_string + """ +@primary-fill: """+colors['primary_fill'].get_as_hex() + '; // ' + colors['trunk_fill'].intended_lch_string + """ +@secondary-fill: """+colors['secondary_fill'].get_as_hex() + '; // ' + colors['secondary_fill'].intended_lch_string + """ +""" + +road_low_zoom = """ +@motorway-low-zoom: """+colors['motorway-low-zoom'].get_as_hex() + '; // ' + colors['motorway-low-zoom'].intended_lch_string + """ +@trunk-low-zoom: """+colors['trunk-low-zoom'].get_as_hex() + '; // ' + colors['trunk-low-zoom'].intended_lch_string + """ +@primary-low-zoom: """+colors['primary-low-zoom'].get_as_hex() + '; // ' + colors['primary-low-zoom'].intended_lch_string + """ +""" + +road_casing = """ +@default-casing: white; +@motorway-casing: """+colors['motorway-casing'].get_as_hex() + '; // ' + colors['motorway-casing'].intended_lch_string + """ +@trunk-casing: """+colors['trunk-casing'].get_as_hex() + '; // ' + colors['trunk-casing'].intended_lch_string + """ +@primary-casing: """+colors['primary-casing'].get_as_hex() + '; // ' + colors['primary-casing'].intended_lch_string + """ +@secondary-casing: """+colors['secondary-casing'].get_as_hex() + '; // ' + colors['secondary-casing'].intended_lch_string + """ +""" + +road_low_zoom_casing = """ +@motorway-low-zoom-casing: """+colors['motorway-low-zoom-casing'].get_as_hex() + '; // ' + colors['motorway-low-zoom-casing'].intended_lch_string + """ +@trunk-low-zoom-casing: """+colors['trunk-low-zoom-casing'].get_as_hex() + '; // ' + colors['trunk-low-zoom-casing'].intended_lch_string + """ +@primary-low-zoom-casing: """+colors['primary-low-zoom-casing'].get_as_hex() + '; // ' + colors['primary-low-zoom-casing'].intended_lch_string + """ +@secondary-low-zoom-casing: """+colors['secondary-low-zoom-casing'].get_as_hex() + '; // ' + colors['secondary-low-zoom-casing'].intended_lch_string + """ +""" + +for_create_standard_shields_script = """#shield colors were generated with scripts/generate_road_colors.py +colours='motorway:"""+colors['motorway_shield'].get_as_hex()+""" +trunk:"""+colors['trunk_shield'].get_as_hex()+""" +primary:"""+colors['primary_shield'].get_as_hex()+""" +secondary:"""+colors['secondary_shield'].get_as_hex()+""" +tertiary:"""+colors['tertiary_shield'].get_as_hex()+"""' +""" + +print(road_fill) +print(road_low_zoom) +print(road_casing) +print(road_low_zoom_casing) +print("") +print(for_create_standard_shields_script) +print("#motorway: " + colors['motorway_shield'].intended_lch_string) +print("#trunk: " + colors['trunk_shield'].intended_lch_string) +print("#primary: " + colors['primary_shield'].intended_lch_string) +print("#secondary: " + colors['secondary_shield'].intended_lch_string) +print("#tertiary: " + colors['tertiary_shield'].intended_lch_string) diff --git a/scripts/regenerate_shields.sh b/scripts/regenerate_shields.sh new file mode 100755 index 0000000000..2280b9f76f --- /dev/null +++ b/scripts/regenerate_shields.sh @@ -0,0 +1,2 @@ +./create_standard_shields +mv *.svg ../symbols/shields diff --git a/symbols/shields/motorway_10x1.svg b/symbols/shields/motorway_10x1.svg index 729806511c..d136907397 100644 --- a/symbols/shields/motorway_10x1.svg +++ b/symbols/shields/motorway_10x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_10x2.svg b/symbols/shields/motorway_10x2.svg index 14861c425c..63604ea27a 100644 --- a/symbols/shields/motorway_10x2.svg +++ b/symbols/shields/motorway_10x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_10x3.svg b/symbols/shields/motorway_10x3.svg index 28fcf9edde..223d6e7197 100644 --- a/symbols/shields/motorway_10x3.svg +++ b/symbols/shields/motorway_10x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_10x4.svg b/symbols/shields/motorway_10x4.svg index 8432563c26..6cf49eddd8 100644 --- a/symbols/shields/motorway_10x4.svg +++ b/symbols/shields/motorway_10x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_11x1.svg b/symbols/shields/motorway_11x1.svg index 98115cf202..84c667b62e 100644 --- a/symbols/shields/motorway_11x1.svg +++ b/symbols/shields/motorway_11x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_11x2.svg b/symbols/shields/motorway_11x2.svg index d1445220fb..2863e29082 100644 --- a/symbols/shields/motorway_11x2.svg +++ b/symbols/shields/motorway_11x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_11x3.svg b/symbols/shields/motorway_11x3.svg index 0ce904a49f..5a8b3d8214 100644 --- a/symbols/shields/motorway_11x3.svg +++ b/symbols/shields/motorway_11x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_11x4.svg b/symbols/shields/motorway_11x4.svg index 89e18493d4..789b99a073 100644 --- a/symbols/shields/motorway_11x4.svg +++ b/symbols/shields/motorway_11x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_1x1.svg b/symbols/shields/motorway_1x1.svg index 52b0f77cb9..0cea6a435d 100644 --- a/symbols/shields/motorway_1x1.svg +++ b/symbols/shields/motorway_1x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_1x2.svg b/symbols/shields/motorway_1x2.svg index c5a54e474d..7fbb048388 100644 --- a/symbols/shields/motorway_1x2.svg +++ b/symbols/shields/motorway_1x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_1x3.svg b/symbols/shields/motorway_1x3.svg index 1f27cdd4ce..2f871e5e49 100644 --- a/symbols/shields/motorway_1x3.svg +++ b/symbols/shields/motorway_1x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_1x4.svg b/symbols/shields/motorway_1x4.svg index b25e0057ba..acd6b12d35 100644 --- a/symbols/shields/motorway_1x4.svg +++ b/symbols/shields/motorway_1x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_2x1.svg b/symbols/shields/motorway_2x1.svg index 4377bf022a..a7c8d68501 100644 --- a/symbols/shields/motorway_2x1.svg +++ b/symbols/shields/motorway_2x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_2x2.svg b/symbols/shields/motorway_2x2.svg index bc932a6175..26716a084f 100644 --- a/symbols/shields/motorway_2x2.svg +++ b/symbols/shields/motorway_2x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_2x3.svg b/symbols/shields/motorway_2x3.svg index 259359cf38..8735930fd9 100644 --- a/symbols/shields/motorway_2x3.svg +++ b/symbols/shields/motorway_2x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_2x4.svg b/symbols/shields/motorway_2x4.svg index 13aa6c3896..6c754d44bf 100644 --- a/symbols/shields/motorway_2x4.svg +++ b/symbols/shields/motorway_2x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_3x1.svg b/symbols/shields/motorway_3x1.svg index f005d07954..f56f4111a9 100644 --- a/symbols/shields/motorway_3x1.svg +++ b/symbols/shields/motorway_3x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_3x2.svg b/symbols/shields/motorway_3x2.svg index 35e7fc603f..a33a8a6df4 100644 --- a/symbols/shields/motorway_3x2.svg +++ b/symbols/shields/motorway_3x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_3x3.svg b/symbols/shields/motorway_3x3.svg index e3e706d2cf..7ecb6e3dd2 100644 --- a/symbols/shields/motorway_3x3.svg +++ b/symbols/shields/motorway_3x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_3x4.svg b/symbols/shields/motorway_3x4.svg index cbe8e310d0..94cbe8793c 100644 --- a/symbols/shields/motorway_3x4.svg +++ b/symbols/shields/motorway_3x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_4x1.svg b/symbols/shields/motorway_4x1.svg index 0ca29fe594..9a1df365de 100644 --- a/symbols/shields/motorway_4x1.svg +++ b/symbols/shields/motorway_4x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_4x2.svg b/symbols/shields/motorway_4x2.svg index 637acf85fc..c5f316ea09 100644 --- a/symbols/shields/motorway_4x2.svg +++ b/symbols/shields/motorway_4x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_4x3.svg b/symbols/shields/motorway_4x3.svg index 78abfc378d..cf17bc74de 100644 --- a/symbols/shields/motorway_4x3.svg +++ b/symbols/shields/motorway_4x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_4x4.svg b/symbols/shields/motorway_4x4.svg index fdce2ebe15..4728394d8c 100644 --- a/symbols/shields/motorway_4x4.svg +++ b/symbols/shields/motorway_4x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_5x1.svg b/symbols/shields/motorway_5x1.svg index f5bbf52aaa..c3a2749704 100644 --- a/symbols/shields/motorway_5x1.svg +++ b/symbols/shields/motorway_5x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_5x2.svg b/symbols/shields/motorway_5x2.svg index ca963cbd1e..05939b7cae 100644 --- a/symbols/shields/motorway_5x2.svg +++ b/symbols/shields/motorway_5x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_5x3.svg b/symbols/shields/motorway_5x3.svg index fcba797d67..83f2b5f033 100644 --- a/symbols/shields/motorway_5x3.svg +++ b/symbols/shields/motorway_5x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_5x4.svg b/symbols/shields/motorway_5x4.svg index 7a8c7734cc..921be6e0f6 100644 --- a/symbols/shields/motorway_5x4.svg +++ b/symbols/shields/motorway_5x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_6x1.svg b/symbols/shields/motorway_6x1.svg index b777c68f43..b5c5753c8d 100644 --- a/symbols/shields/motorway_6x1.svg +++ b/symbols/shields/motorway_6x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_6x2.svg b/symbols/shields/motorway_6x2.svg index 950ba9b99b..0d1e8644c9 100644 --- a/symbols/shields/motorway_6x2.svg +++ b/symbols/shields/motorway_6x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_6x3.svg b/symbols/shields/motorway_6x3.svg index 1501526357..69bd2ca74c 100644 --- a/symbols/shields/motorway_6x3.svg +++ b/symbols/shields/motorway_6x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_6x4.svg b/symbols/shields/motorway_6x4.svg index 55397cbf97..6084dd629a 100644 --- a/symbols/shields/motorway_6x4.svg +++ b/symbols/shields/motorway_6x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_7x1.svg b/symbols/shields/motorway_7x1.svg index 358e5904e0..1c25bf0987 100644 --- a/symbols/shields/motorway_7x1.svg +++ b/symbols/shields/motorway_7x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_7x2.svg b/symbols/shields/motorway_7x2.svg index b93b4fcb79..ef3aa63ea3 100644 --- a/symbols/shields/motorway_7x2.svg +++ b/symbols/shields/motorway_7x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_7x3.svg b/symbols/shields/motorway_7x3.svg index 219e8e5480..cde55fef0e 100644 --- a/symbols/shields/motorway_7x3.svg +++ b/symbols/shields/motorway_7x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_7x4.svg b/symbols/shields/motorway_7x4.svg index 0c74453fed..6299594ad5 100644 --- a/symbols/shields/motorway_7x4.svg +++ b/symbols/shields/motorway_7x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_8x1.svg b/symbols/shields/motorway_8x1.svg index dc507ad458..f03a479ea6 100644 --- a/symbols/shields/motorway_8x1.svg +++ b/symbols/shields/motorway_8x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_8x2.svg b/symbols/shields/motorway_8x2.svg index 14cdafeb05..6364971105 100644 --- a/symbols/shields/motorway_8x2.svg +++ b/symbols/shields/motorway_8x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_8x3.svg b/symbols/shields/motorway_8x3.svg index 9e683140d7..a3476e7146 100644 --- a/symbols/shields/motorway_8x3.svg +++ b/symbols/shields/motorway_8x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_8x4.svg b/symbols/shields/motorway_8x4.svg index 869fbe93a8..2140c4c839 100644 --- a/symbols/shields/motorway_8x4.svg +++ b/symbols/shields/motorway_8x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_9x1.svg b/symbols/shields/motorway_9x1.svg index 46f21a82f4..0dcf1b76b7 100644 --- a/symbols/shields/motorway_9x1.svg +++ b/symbols/shields/motorway_9x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_9x2.svg b/symbols/shields/motorway_9x2.svg index d03181ab7f..e13ad53e07 100644 --- a/symbols/shields/motorway_9x2.svg +++ b/symbols/shields/motorway_9x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_9x3.svg b/symbols/shields/motorway_9x3.svg index b338ec96d4..a8ddbe6236 100644 --- a/symbols/shields/motorway_9x3.svg +++ b/symbols/shields/motorway_9x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/motorway_9x4.svg b/symbols/shields/motorway_9x4.svg index 26e2b195de..c92a6fa81b 100644 --- a/symbols/shields/motorway_9x4.svg +++ b/symbols/shields/motorway_9x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_10x1.svg b/symbols/shields/primary_10x1.svg index 9203a6d7fb..587974de42 100644 --- a/symbols/shields/primary_10x1.svg +++ b/symbols/shields/primary_10x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_10x2.svg b/symbols/shields/primary_10x2.svg index 31e7faf9d4..f35e62f877 100644 --- a/symbols/shields/primary_10x2.svg +++ b/symbols/shields/primary_10x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_10x3.svg b/symbols/shields/primary_10x3.svg index 5300559e2f..00fe7b1fcb 100644 --- a/symbols/shields/primary_10x3.svg +++ b/symbols/shields/primary_10x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_10x4.svg b/symbols/shields/primary_10x4.svg index 8f5cdb79df..b9db4a5132 100644 --- a/symbols/shields/primary_10x4.svg +++ b/symbols/shields/primary_10x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_11x1.svg b/symbols/shields/primary_11x1.svg index 44d4587042..d899532eb8 100644 --- a/symbols/shields/primary_11x1.svg +++ b/symbols/shields/primary_11x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_11x2.svg b/symbols/shields/primary_11x2.svg index 4cee0e8a9f..0f9a6f8487 100644 --- a/symbols/shields/primary_11x2.svg +++ b/symbols/shields/primary_11x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_11x3.svg b/symbols/shields/primary_11x3.svg index 06a1708fe6..3538e73cf8 100644 --- a/symbols/shields/primary_11x3.svg +++ b/symbols/shields/primary_11x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_11x4.svg b/symbols/shields/primary_11x4.svg index 6922ac3d4b..51e55c6a2b 100644 --- a/symbols/shields/primary_11x4.svg +++ b/symbols/shields/primary_11x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_1x1.svg b/symbols/shields/primary_1x1.svg index aeed30869c..59f95db44e 100644 --- a/symbols/shields/primary_1x1.svg +++ b/symbols/shields/primary_1x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_1x2.svg b/symbols/shields/primary_1x2.svg index 430b01ca4d..17086e6b9c 100644 --- a/symbols/shields/primary_1x2.svg +++ b/symbols/shields/primary_1x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_1x3.svg b/symbols/shields/primary_1x3.svg index bb986a07fa..104118a4b5 100644 --- a/symbols/shields/primary_1x3.svg +++ b/symbols/shields/primary_1x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_1x4.svg b/symbols/shields/primary_1x4.svg index ffb1da0ec8..9ecb455f2a 100644 --- a/symbols/shields/primary_1x4.svg +++ b/symbols/shields/primary_1x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_2x1.svg b/symbols/shields/primary_2x1.svg index 1b127d498a..45158d9de9 100644 --- a/symbols/shields/primary_2x1.svg +++ b/symbols/shields/primary_2x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_2x2.svg b/symbols/shields/primary_2x2.svg index 781e422dda..70a268b081 100644 --- a/symbols/shields/primary_2x2.svg +++ b/symbols/shields/primary_2x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_2x3.svg b/symbols/shields/primary_2x3.svg index e94cfb357f..601bddd908 100644 --- a/symbols/shields/primary_2x3.svg +++ b/symbols/shields/primary_2x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_2x4.svg b/symbols/shields/primary_2x4.svg index 39207499e9..e38b2b88ab 100644 --- a/symbols/shields/primary_2x4.svg +++ b/symbols/shields/primary_2x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_3x1.svg b/symbols/shields/primary_3x1.svg index 3d92a4a4a9..d34456d7dd 100644 --- a/symbols/shields/primary_3x1.svg +++ b/symbols/shields/primary_3x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_3x2.svg b/symbols/shields/primary_3x2.svg index 61744981b0..996ae71016 100644 --- a/symbols/shields/primary_3x2.svg +++ b/symbols/shields/primary_3x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_3x3.svg b/symbols/shields/primary_3x3.svg index 081902d58f..4e261a27aa 100644 --- a/symbols/shields/primary_3x3.svg +++ b/symbols/shields/primary_3x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_3x4.svg b/symbols/shields/primary_3x4.svg index 58f9cfd1fb..80cdaed036 100644 --- a/symbols/shields/primary_3x4.svg +++ b/symbols/shields/primary_3x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_4x1.svg b/symbols/shields/primary_4x1.svg index b32c626520..2980438f9f 100644 --- a/symbols/shields/primary_4x1.svg +++ b/symbols/shields/primary_4x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_4x2.svg b/symbols/shields/primary_4x2.svg index 4faf4247f3..dabe1ada13 100644 --- a/symbols/shields/primary_4x2.svg +++ b/symbols/shields/primary_4x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_4x3.svg b/symbols/shields/primary_4x3.svg index ecc09fa878..b3f3d2d1f5 100644 --- a/symbols/shields/primary_4x3.svg +++ b/symbols/shields/primary_4x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_4x4.svg b/symbols/shields/primary_4x4.svg index c5a12a529c..9d098528df 100644 --- a/symbols/shields/primary_4x4.svg +++ b/symbols/shields/primary_4x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_5x1.svg b/symbols/shields/primary_5x1.svg index af059cac0d..3645872632 100644 --- a/symbols/shields/primary_5x1.svg +++ b/symbols/shields/primary_5x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_5x2.svg b/symbols/shields/primary_5x2.svg index a59bc0d6c1..b1c9720bca 100644 --- a/symbols/shields/primary_5x2.svg +++ b/symbols/shields/primary_5x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_5x3.svg b/symbols/shields/primary_5x3.svg index 0a2d4b6000..1bc4e8500d 100644 --- a/symbols/shields/primary_5x3.svg +++ b/symbols/shields/primary_5x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_5x4.svg b/symbols/shields/primary_5x4.svg index 34aaabfbeb..1ed145d990 100644 --- a/symbols/shields/primary_5x4.svg +++ b/symbols/shields/primary_5x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_6x1.svg b/symbols/shields/primary_6x1.svg index aa972b7902..75c7e9e492 100644 --- a/symbols/shields/primary_6x1.svg +++ b/symbols/shields/primary_6x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_6x2.svg b/symbols/shields/primary_6x2.svg index c4647357a7..1f7d33c74c 100644 --- a/symbols/shields/primary_6x2.svg +++ b/symbols/shields/primary_6x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_6x3.svg b/symbols/shields/primary_6x3.svg index 96aebabf5d..f601975add 100644 --- a/symbols/shields/primary_6x3.svg +++ b/symbols/shields/primary_6x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_6x4.svg b/symbols/shields/primary_6x4.svg index e1360fd990..2c6e2530a7 100644 --- a/symbols/shields/primary_6x4.svg +++ b/symbols/shields/primary_6x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_7x1.svg b/symbols/shields/primary_7x1.svg index c521b7c10e..6110ea612f 100644 --- a/symbols/shields/primary_7x1.svg +++ b/symbols/shields/primary_7x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_7x2.svg b/symbols/shields/primary_7x2.svg index 84ce6098da..24f28a7ddc 100644 --- a/symbols/shields/primary_7x2.svg +++ b/symbols/shields/primary_7x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_7x3.svg b/symbols/shields/primary_7x3.svg index 08a9a48f9b..046432d24f 100644 --- a/symbols/shields/primary_7x3.svg +++ b/symbols/shields/primary_7x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_7x4.svg b/symbols/shields/primary_7x4.svg index cf56cc611f..40e709b2de 100644 --- a/symbols/shields/primary_7x4.svg +++ b/symbols/shields/primary_7x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_8x1.svg b/symbols/shields/primary_8x1.svg index 513e298a6d..d367b8aa08 100644 --- a/symbols/shields/primary_8x1.svg +++ b/symbols/shields/primary_8x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_8x2.svg b/symbols/shields/primary_8x2.svg index c12b3f5e11..02fd7f1c97 100644 --- a/symbols/shields/primary_8x2.svg +++ b/symbols/shields/primary_8x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_8x3.svg b/symbols/shields/primary_8x3.svg index f0fba8a20f..19e25a8362 100644 --- a/symbols/shields/primary_8x3.svg +++ b/symbols/shields/primary_8x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_8x4.svg b/symbols/shields/primary_8x4.svg index 06c8705d99..4077401598 100644 --- a/symbols/shields/primary_8x4.svg +++ b/symbols/shields/primary_8x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_9x1.svg b/symbols/shields/primary_9x1.svg index 6cdc553b14..7414aeda37 100644 --- a/symbols/shields/primary_9x1.svg +++ b/symbols/shields/primary_9x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_9x2.svg b/symbols/shields/primary_9x2.svg index 1a89a3c6ab..3d8e953329 100644 --- a/symbols/shields/primary_9x2.svg +++ b/symbols/shields/primary_9x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_9x3.svg b/symbols/shields/primary_9x3.svg index 57c57e5f46..c8ba8cd1d3 100644 --- a/symbols/shields/primary_9x3.svg +++ b/symbols/shields/primary_9x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/primary_9x4.svg b/symbols/shields/primary_9x4.svg index 5f7c586c84..a1119878b7 100644 --- a/symbols/shields/primary_9x4.svg +++ b/symbols/shields/primary_9x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_10x1.svg b/symbols/shields/secondary_10x1.svg index 1e90714d13..2560a1f365 100644 --- a/symbols/shields/secondary_10x1.svg +++ b/symbols/shields/secondary_10x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_10x2.svg b/symbols/shields/secondary_10x2.svg index be0935a57a..8c35769dae 100644 --- a/symbols/shields/secondary_10x2.svg +++ b/symbols/shields/secondary_10x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_10x3.svg b/symbols/shields/secondary_10x3.svg index ac58ec9c11..61f9df631b 100644 --- a/symbols/shields/secondary_10x3.svg +++ b/symbols/shields/secondary_10x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_10x4.svg b/symbols/shields/secondary_10x4.svg index b9afbee022..0271ce0905 100644 --- a/symbols/shields/secondary_10x4.svg +++ b/symbols/shields/secondary_10x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_11x1.svg b/symbols/shields/secondary_11x1.svg index c7f25ecbcc..a6b76f59cb 100644 --- a/symbols/shields/secondary_11x1.svg +++ b/symbols/shields/secondary_11x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_11x2.svg b/symbols/shields/secondary_11x2.svg index e79d00604c..ccb5bd3e9c 100644 --- a/symbols/shields/secondary_11x2.svg +++ b/symbols/shields/secondary_11x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_11x3.svg b/symbols/shields/secondary_11x3.svg index 16f52e22fe..14aebd1bac 100644 --- a/symbols/shields/secondary_11x3.svg +++ b/symbols/shields/secondary_11x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_11x4.svg b/symbols/shields/secondary_11x4.svg index 620e924518..6cc3cc656d 100644 --- a/symbols/shields/secondary_11x4.svg +++ b/symbols/shields/secondary_11x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_1x1.svg b/symbols/shields/secondary_1x1.svg index 8cfc21ec35..e6021dbaaa 100644 --- a/symbols/shields/secondary_1x1.svg +++ b/symbols/shields/secondary_1x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_1x2.svg b/symbols/shields/secondary_1x2.svg index 92e601459f..4d3f5aebad 100644 --- a/symbols/shields/secondary_1x2.svg +++ b/symbols/shields/secondary_1x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_1x3.svg b/symbols/shields/secondary_1x3.svg index d12fdb6cc0..77f26e3e6d 100644 --- a/symbols/shields/secondary_1x3.svg +++ b/symbols/shields/secondary_1x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_1x4.svg b/symbols/shields/secondary_1x4.svg index d46d7a0117..71c2635266 100644 --- a/symbols/shields/secondary_1x4.svg +++ b/symbols/shields/secondary_1x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_2x1.svg b/symbols/shields/secondary_2x1.svg index 5c3bacff84..451a8c147b 100644 --- a/symbols/shields/secondary_2x1.svg +++ b/symbols/shields/secondary_2x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_2x2.svg b/symbols/shields/secondary_2x2.svg index 02a6797763..9f7b1c41f6 100644 --- a/symbols/shields/secondary_2x2.svg +++ b/symbols/shields/secondary_2x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_2x3.svg b/symbols/shields/secondary_2x3.svg index 997347a3e3..e8416f4fc7 100644 --- a/symbols/shields/secondary_2x3.svg +++ b/symbols/shields/secondary_2x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_2x4.svg b/symbols/shields/secondary_2x4.svg index 5070a311a6..c23576a526 100644 --- a/symbols/shields/secondary_2x4.svg +++ b/symbols/shields/secondary_2x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_3x1.svg b/symbols/shields/secondary_3x1.svg index 62614bb553..a472458be0 100644 --- a/symbols/shields/secondary_3x1.svg +++ b/symbols/shields/secondary_3x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_3x2.svg b/symbols/shields/secondary_3x2.svg index 0d67319aca..cc073817a4 100644 --- a/symbols/shields/secondary_3x2.svg +++ b/symbols/shields/secondary_3x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_3x3.svg b/symbols/shields/secondary_3x3.svg index 60c373916d..14b0038a1a 100644 --- a/symbols/shields/secondary_3x3.svg +++ b/symbols/shields/secondary_3x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_3x4.svg b/symbols/shields/secondary_3x4.svg index 1be64ee45e..8d48049a88 100644 --- a/symbols/shields/secondary_3x4.svg +++ b/symbols/shields/secondary_3x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_4x1.svg b/symbols/shields/secondary_4x1.svg index 1c4b49997d..1ed87719f7 100644 --- a/symbols/shields/secondary_4x1.svg +++ b/symbols/shields/secondary_4x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_4x2.svg b/symbols/shields/secondary_4x2.svg index aaa82459eb..4e15c0274e 100644 --- a/symbols/shields/secondary_4x2.svg +++ b/symbols/shields/secondary_4x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_4x3.svg b/symbols/shields/secondary_4x3.svg index 1ce851dc99..6355564203 100644 --- a/symbols/shields/secondary_4x3.svg +++ b/symbols/shields/secondary_4x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_4x4.svg b/symbols/shields/secondary_4x4.svg index 3b0d65a155..a4f75d2fee 100644 --- a/symbols/shields/secondary_4x4.svg +++ b/symbols/shields/secondary_4x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_5x1.svg b/symbols/shields/secondary_5x1.svg index b24ddedbca..a565cd7be2 100644 --- a/symbols/shields/secondary_5x1.svg +++ b/symbols/shields/secondary_5x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_5x2.svg b/symbols/shields/secondary_5x2.svg index 2c1a6ea40b..3f479e0962 100644 --- a/symbols/shields/secondary_5x2.svg +++ b/symbols/shields/secondary_5x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_5x3.svg b/symbols/shields/secondary_5x3.svg index 354d394ba3..8ac905793e 100644 --- a/symbols/shields/secondary_5x3.svg +++ b/symbols/shields/secondary_5x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_5x4.svg b/symbols/shields/secondary_5x4.svg index 42e86fa664..cffee3f7ed 100644 --- a/symbols/shields/secondary_5x4.svg +++ b/symbols/shields/secondary_5x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_6x1.svg b/symbols/shields/secondary_6x1.svg index 16182c530a..78e6ffd117 100644 --- a/symbols/shields/secondary_6x1.svg +++ b/symbols/shields/secondary_6x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_6x2.svg b/symbols/shields/secondary_6x2.svg index 4408687c0b..036d4d8fb3 100644 --- a/symbols/shields/secondary_6x2.svg +++ b/symbols/shields/secondary_6x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_6x3.svg b/symbols/shields/secondary_6x3.svg index d6afdf15b3..cc7f8fd716 100644 --- a/symbols/shields/secondary_6x3.svg +++ b/symbols/shields/secondary_6x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_6x4.svg b/symbols/shields/secondary_6x4.svg index b0ed2525e2..2f352b1593 100644 --- a/symbols/shields/secondary_6x4.svg +++ b/symbols/shields/secondary_6x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_7x1.svg b/symbols/shields/secondary_7x1.svg index 42c46054eb..58d3dc4300 100644 --- a/symbols/shields/secondary_7x1.svg +++ b/symbols/shields/secondary_7x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_7x2.svg b/symbols/shields/secondary_7x2.svg index 3e3e03772c..35114c1b40 100644 --- a/symbols/shields/secondary_7x2.svg +++ b/symbols/shields/secondary_7x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_7x3.svg b/symbols/shields/secondary_7x3.svg index 6b1eba9f02..9629797965 100644 --- a/symbols/shields/secondary_7x3.svg +++ b/symbols/shields/secondary_7x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_7x4.svg b/symbols/shields/secondary_7x4.svg index 876cd78a35..8ea88f4832 100644 --- a/symbols/shields/secondary_7x4.svg +++ b/symbols/shields/secondary_7x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_8x1.svg b/symbols/shields/secondary_8x1.svg index 4c0ed5fa8b..5bad14737d 100644 --- a/symbols/shields/secondary_8x1.svg +++ b/symbols/shields/secondary_8x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_8x2.svg b/symbols/shields/secondary_8x2.svg index 836251661f..988097fa48 100644 --- a/symbols/shields/secondary_8x2.svg +++ b/symbols/shields/secondary_8x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_8x3.svg b/symbols/shields/secondary_8x3.svg index 2922686c68..492e1a5d75 100644 --- a/symbols/shields/secondary_8x3.svg +++ b/symbols/shields/secondary_8x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_8x4.svg b/symbols/shields/secondary_8x4.svg index 237ae3de20..094827fa4e 100644 --- a/symbols/shields/secondary_8x4.svg +++ b/symbols/shields/secondary_8x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_9x1.svg b/symbols/shields/secondary_9x1.svg index 9664a1b98c..846a8ac2b9 100644 --- a/symbols/shields/secondary_9x1.svg +++ b/symbols/shields/secondary_9x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_9x2.svg b/symbols/shields/secondary_9x2.svg index 64ae0bbebe..651d027f1c 100644 --- a/symbols/shields/secondary_9x2.svg +++ b/symbols/shields/secondary_9x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_9x3.svg b/symbols/shields/secondary_9x3.svg index 3bc7c80596..3978a66569 100644 --- a/symbols/shields/secondary_9x3.svg +++ b/symbols/shields/secondary_9x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/secondary_9x4.svg b/symbols/shields/secondary_9x4.svg index 8713f8d4f6..eefe72ee1c 100644 --- a/symbols/shields/secondary_9x4.svg +++ b/symbols/shields/secondary_9x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_10x1.svg b/symbols/shields/tertiary_10x1.svg index 76ed8784e3..98a4a3f81a 100644 --- a/symbols/shields/tertiary_10x1.svg +++ b/symbols/shields/tertiary_10x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_10x2.svg b/symbols/shields/tertiary_10x2.svg index aff10b5b00..553328d6d2 100644 --- a/symbols/shields/tertiary_10x2.svg +++ b/symbols/shields/tertiary_10x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_10x3.svg b/symbols/shields/tertiary_10x3.svg index c5fc4a8d3c..46d5ee1847 100644 --- a/symbols/shields/tertiary_10x3.svg +++ b/symbols/shields/tertiary_10x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_10x4.svg b/symbols/shields/tertiary_10x4.svg index c8eddf79dd..c1b667f997 100644 --- a/symbols/shields/tertiary_10x4.svg +++ b/symbols/shields/tertiary_10x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_11x1.svg b/symbols/shields/tertiary_11x1.svg index 9cc4f46a5f..f5e3e1abbc 100644 --- a/symbols/shields/tertiary_11x1.svg +++ b/symbols/shields/tertiary_11x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_11x2.svg b/symbols/shields/tertiary_11x2.svg index 81c1c229fd..9c16402e7d 100644 --- a/symbols/shields/tertiary_11x2.svg +++ b/symbols/shields/tertiary_11x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_11x3.svg b/symbols/shields/tertiary_11x3.svg index 5b18b8504b..5031d0f744 100644 --- a/symbols/shields/tertiary_11x3.svg +++ b/symbols/shields/tertiary_11x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_11x4.svg b/symbols/shields/tertiary_11x4.svg index ac1fec90a7..5dc7a06e1c 100644 --- a/symbols/shields/tertiary_11x4.svg +++ b/symbols/shields/tertiary_11x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_1x1.svg b/symbols/shields/tertiary_1x1.svg index ca221bc308..18f9b5ff9c 100644 --- a/symbols/shields/tertiary_1x1.svg +++ b/symbols/shields/tertiary_1x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_1x2.svg b/symbols/shields/tertiary_1x2.svg index 49e201cd3b..7d329870e1 100644 --- a/symbols/shields/tertiary_1x2.svg +++ b/symbols/shields/tertiary_1x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_1x3.svg b/symbols/shields/tertiary_1x3.svg index 8f2b51e27c..d1f2cb7e0a 100644 --- a/symbols/shields/tertiary_1x3.svg +++ b/symbols/shields/tertiary_1x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_1x4.svg b/symbols/shields/tertiary_1x4.svg index f5bffed918..a808bdb120 100644 --- a/symbols/shields/tertiary_1x4.svg +++ b/symbols/shields/tertiary_1x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_2x1.svg b/symbols/shields/tertiary_2x1.svg index 9c0c7a571f..e5caf5f835 100644 --- a/symbols/shields/tertiary_2x1.svg +++ b/symbols/shields/tertiary_2x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_2x2.svg b/symbols/shields/tertiary_2x2.svg index 141d76966d..7a4b38248c 100644 --- a/symbols/shields/tertiary_2x2.svg +++ b/symbols/shields/tertiary_2x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_2x3.svg b/symbols/shields/tertiary_2x3.svg index f82418a414..c8b2dc34c4 100644 --- a/symbols/shields/tertiary_2x3.svg +++ b/symbols/shields/tertiary_2x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_2x4.svg b/symbols/shields/tertiary_2x4.svg index 5d7eb09822..ce5f803d65 100644 --- a/symbols/shields/tertiary_2x4.svg +++ b/symbols/shields/tertiary_2x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_3x1.svg b/symbols/shields/tertiary_3x1.svg index 09d4ca6d9b..b57804ac5f 100644 --- a/symbols/shields/tertiary_3x1.svg +++ b/symbols/shields/tertiary_3x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_3x2.svg b/symbols/shields/tertiary_3x2.svg index 44a3df3d49..7899551799 100644 --- a/symbols/shields/tertiary_3x2.svg +++ b/symbols/shields/tertiary_3x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_3x3.svg b/symbols/shields/tertiary_3x3.svg index 57c476f5d4..5d0f7f4baf 100644 --- a/symbols/shields/tertiary_3x3.svg +++ b/symbols/shields/tertiary_3x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_3x4.svg b/symbols/shields/tertiary_3x4.svg index 607d0c4929..74a0f80584 100644 --- a/symbols/shields/tertiary_3x4.svg +++ b/symbols/shields/tertiary_3x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_4x1.svg b/symbols/shields/tertiary_4x1.svg index e24d04aade..c213f3bdc8 100644 --- a/symbols/shields/tertiary_4x1.svg +++ b/symbols/shields/tertiary_4x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_4x2.svg b/symbols/shields/tertiary_4x2.svg index 7f6907d998..bd17fb62e9 100644 --- a/symbols/shields/tertiary_4x2.svg +++ b/symbols/shields/tertiary_4x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_4x3.svg b/symbols/shields/tertiary_4x3.svg index a5e7f88392..3c2ccfa9b1 100644 --- a/symbols/shields/tertiary_4x3.svg +++ b/symbols/shields/tertiary_4x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_4x4.svg b/symbols/shields/tertiary_4x4.svg index 23892d87c7..b90aa5bad5 100644 --- a/symbols/shields/tertiary_4x4.svg +++ b/symbols/shields/tertiary_4x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_5x1.svg b/symbols/shields/tertiary_5x1.svg index e92206b4a0..1deb0f2f58 100644 --- a/symbols/shields/tertiary_5x1.svg +++ b/symbols/shields/tertiary_5x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_5x2.svg b/symbols/shields/tertiary_5x2.svg index 7cd283d107..98bcc5f0f4 100644 --- a/symbols/shields/tertiary_5x2.svg +++ b/symbols/shields/tertiary_5x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_5x3.svg b/symbols/shields/tertiary_5x3.svg index cf2718ac74..2dc0590095 100644 --- a/symbols/shields/tertiary_5x3.svg +++ b/symbols/shields/tertiary_5x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_5x4.svg b/symbols/shields/tertiary_5x4.svg index 0d69012a20..53ae0ff7fe 100644 --- a/symbols/shields/tertiary_5x4.svg +++ b/symbols/shields/tertiary_5x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_6x1.svg b/symbols/shields/tertiary_6x1.svg index 17699260e6..2dafa69cc4 100644 --- a/symbols/shields/tertiary_6x1.svg +++ b/symbols/shields/tertiary_6x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_6x2.svg b/symbols/shields/tertiary_6x2.svg index 1d4f5acd63..34740cd51f 100644 --- a/symbols/shields/tertiary_6x2.svg +++ b/symbols/shields/tertiary_6x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_6x3.svg b/symbols/shields/tertiary_6x3.svg index a207a3c182..dcdbd472a6 100644 --- a/symbols/shields/tertiary_6x3.svg +++ b/symbols/shields/tertiary_6x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_6x4.svg b/symbols/shields/tertiary_6x4.svg index 0248947cc8..d9c6622d48 100644 --- a/symbols/shields/tertiary_6x4.svg +++ b/symbols/shields/tertiary_6x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_7x1.svg b/symbols/shields/tertiary_7x1.svg index 3f47242362..90a28d0999 100644 --- a/symbols/shields/tertiary_7x1.svg +++ b/symbols/shields/tertiary_7x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_7x2.svg b/symbols/shields/tertiary_7x2.svg index d6baacc572..d49466c92a 100644 --- a/symbols/shields/tertiary_7x2.svg +++ b/symbols/shields/tertiary_7x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_7x3.svg b/symbols/shields/tertiary_7x3.svg index aeb9b0a8b9..62a1cc1a1d 100644 --- a/symbols/shields/tertiary_7x3.svg +++ b/symbols/shields/tertiary_7x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_7x4.svg b/symbols/shields/tertiary_7x4.svg index 3dd39e3c97..371d80b450 100644 --- a/symbols/shields/tertiary_7x4.svg +++ b/symbols/shields/tertiary_7x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_8x1.svg b/symbols/shields/tertiary_8x1.svg index e7877cba72..642995c1fd 100644 --- a/symbols/shields/tertiary_8x1.svg +++ b/symbols/shields/tertiary_8x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_8x2.svg b/symbols/shields/tertiary_8x2.svg index 9d4ea49d70..687811eeaf 100644 --- a/symbols/shields/tertiary_8x2.svg +++ b/symbols/shields/tertiary_8x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_8x3.svg b/symbols/shields/tertiary_8x3.svg index 3d2821f9ee..df7f3dbbe5 100644 --- a/symbols/shields/tertiary_8x3.svg +++ b/symbols/shields/tertiary_8x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_8x4.svg b/symbols/shields/tertiary_8x4.svg index 111b9bc262..14e0b6b6d2 100644 --- a/symbols/shields/tertiary_8x4.svg +++ b/symbols/shields/tertiary_8x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_9x1.svg b/symbols/shields/tertiary_9x1.svg index e943c7047f..ea93073899 100644 --- a/symbols/shields/tertiary_9x1.svg +++ b/symbols/shields/tertiary_9x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_9x2.svg b/symbols/shields/tertiary_9x2.svg index 16489073db..035602b6b1 100644 --- a/symbols/shields/tertiary_9x2.svg +++ b/symbols/shields/tertiary_9x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_9x3.svg b/symbols/shields/tertiary_9x3.svg index ed1b4a11fe..089c87742f 100644 --- a/symbols/shields/tertiary_9x3.svg +++ b/symbols/shields/tertiary_9x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/tertiary_9x4.svg b/symbols/shields/tertiary_9x4.svg index c5069273d4..369a74df6d 100644 --- a/symbols/shields/tertiary_9x4.svg +++ b/symbols/shields/tertiary_9x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_10x1.svg b/symbols/shields/trunk_10x1.svg index 09faf43854..0a44c3f1c0 100644 --- a/symbols/shields/trunk_10x1.svg +++ b/symbols/shields/trunk_10x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_10x2.svg b/symbols/shields/trunk_10x2.svg index 912c42c533..28380bef86 100644 --- a/symbols/shields/trunk_10x2.svg +++ b/symbols/shields/trunk_10x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_10x3.svg b/symbols/shields/trunk_10x3.svg index 343834f074..40985891cf 100644 --- a/symbols/shields/trunk_10x3.svg +++ b/symbols/shields/trunk_10x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_10x4.svg b/symbols/shields/trunk_10x4.svg index e681955179..02944118ca 100644 --- a/symbols/shields/trunk_10x4.svg +++ b/symbols/shields/trunk_10x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_11x1.svg b/symbols/shields/trunk_11x1.svg index f519e7c6a3..f04c0f1399 100644 --- a/symbols/shields/trunk_11x1.svg +++ b/symbols/shields/trunk_11x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_11x2.svg b/symbols/shields/trunk_11x2.svg index ea9b8af272..bd2166de4e 100644 --- a/symbols/shields/trunk_11x2.svg +++ b/symbols/shields/trunk_11x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_11x3.svg b/symbols/shields/trunk_11x3.svg index 7a0bc0596a..8a9565682e 100644 --- a/symbols/shields/trunk_11x3.svg +++ b/symbols/shields/trunk_11x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_11x4.svg b/symbols/shields/trunk_11x4.svg index 4d4cf4bb6c..bf75ec0c64 100644 --- a/symbols/shields/trunk_11x4.svg +++ b/symbols/shields/trunk_11x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_1x1.svg b/symbols/shields/trunk_1x1.svg index 3f87f83158..1a3a6b342a 100644 --- a/symbols/shields/trunk_1x1.svg +++ b/symbols/shields/trunk_1x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_1x2.svg b/symbols/shields/trunk_1x2.svg index 98c44866e8..44cabea968 100644 --- a/symbols/shields/trunk_1x2.svg +++ b/symbols/shields/trunk_1x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_1x3.svg b/symbols/shields/trunk_1x3.svg index 3c68953d55..827bb98b67 100644 --- a/symbols/shields/trunk_1x3.svg +++ b/symbols/shields/trunk_1x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_1x4.svg b/symbols/shields/trunk_1x4.svg index e56905f4ef..c30b9cc8b2 100644 --- a/symbols/shields/trunk_1x4.svg +++ b/symbols/shields/trunk_1x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_2x1.svg b/symbols/shields/trunk_2x1.svg index 0b661501e2..1f1d60c713 100644 --- a/symbols/shields/trunk_2x1.svg +++ b/symbols/shields/trunk_2x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_2x2.svg b/symbols/shields/trunk_2x2.svg index c2b60aebe9..9877baeacc 100644 --- a/symbols/shields/trunk_2x2.svg +++ b/symbols/shields/trunk_2x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_2x3.svg b/symbols/shields/trunk_2x3.svg index d24f803ef2..c9f1be8514 100644 --- a/symbols/shields/trunk_2x3.svg +++ b/symbols/shields/trunk_2x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_2x4.svg b/symbols/shields/trunk_2x4.svg index 422f2dd846..84f15f15e5 100644 --- a/symbols/shields/trunk_2x4.svg +++ b/symbols/shields/trunk_2x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_3x1.svg b/symbols/shields/trunk_3x1.svg index 801adcd3e5..9273f67904 100644 --- a/symbols/shields/trunk_3x1.svg +++ b/symbols/shields/trunk_3x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_3x2.svg b/symbols/shields/trunk_3x2.svg index 8bd3a5b736..d09de74c25 100644 --- a/symbols/shields/trunk_3x2.svg +++ b/symbols/shields/trunk_3x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_3x3.svg b/symbols/shields/trunk_3x3.svg index 2ad03f3f3d..1f036aa8d6 100644 --- a/symbols/shields/trunk_3x3.svg +++ b/symbols/shields/trunk_3x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_3x4.svg b/symbols/shields/trunk_3x4.svg index ff6becb9a8..ecdf1295ca 100644 --- a/symbols/shields/trunk_3x4.svg +++ b/symbols/shields/trunk_3x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_4x1.svg b/symbols/shields/trunk_4x1.svg index b56d54c598..958daf7269 100644 --- a/symbols/shields/trunk_4x1.svg +++ b/symbols/shields/trunk_4x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_4x2.svg b/symbols/shields/trunk_4x2.svg index 68e452721c..4838ff4524 100644 --- a/symbols/shields/trunk_4x2.svg +++ b/symbols/shields/trunk_4x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_4x3.svg b/symbols/shields/trunk_4x3.svg index b1e899e77b..9365b81650 100644 --- a/symbols/shields/trunk_4x3.svg +++ b/symbols/shields/trunk_4x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_4x4.svg b/symbols/shields/trunk_4x4.svg index f330d27afa..7ba009129f 100644 --- a/symbols/shields/trunk_4x4.svg +++ b/symbols/shields/trunk_4x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_5x1.svg b/symbols/shields/trunk_5x1.svg index 5765608c98..db79926aea 100644 --- a/symbols/shields/trunk_5x1.svg +++ b/symbols/shields/trunk_5x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_5x2.svg b/symbols/shields/trunk_5x2.svg index 6ef419d104..ceadcca652 100644 --- a/symbols/shields/trunk_5x2.svg +++ b/symbols/shields/trunk_5x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_5x3.svg b/symbols/shields/trunk_5x3.svg index b41feabb9b..f8f7d9656d 100644 --- a/symbols/shields/trunk_5x3.svg +++ b/symbols/shields/trunk_5x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_5x4.svg b/symbols/shields/trunk_5x4.svg index eb416b48ad..2d1ec07f2a 100644 --- a/symbols/shields/trunk_5x4.svg +++ b/symbols/shields/trunk_5x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_6x1.svg b/symbols/shields/trunk_6x1.svg index b65e29d52a..614f46c852 100644 --- a/symbols/shields/trunk_6x1.svg +++ b/symbols/shields/trunk_6x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_6x2.svg b/symbols/shields/trunk_6x2.svg index 56a00ccc19..054e159f3d 100644 --- a/symbols/shields/trunk_6x2.svg +++ b/symbols/shields/trunk_6x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_6x3.svg b/symbols/shields/trunk_6x3.svg index b3253194ff..fd6c7a5307 100644 --- a/symbols/shields/trunk_6x3.svg +++ b/symbols/shields/trunk_6x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_6x4.svg b/symbols/shields/trunk_6x4.svg index 0b8e3f0cd5..a752375b39 100644 --- a/symbols/shields/trunk_6x4.svg +++ b/symbols/shields/trunk_6x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_7x1.svg b/symbols/shields/trunk_7x1.svg index fe0a215338..fbbe2b5974 100644 --- a/symbols/shields/trunk_7x1.svg +++ b/symbols/shields/trunk_7x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_7x2.svg b/symbols/shields/trunk_7x2.svg index cae79f339c..bf132dcab9 100644 --- a/symbols/shields/trunk_7x2.svg +++ b/symbols/shields/trunk_7x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_7x3.svg b/symbols/shields/trunk_7x3.svg index b68c25765c..b2c8fe5864 100644 --- a/symbols/shields/trunk_7x3.svg +++ b/symbols/shields/trunk_7x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_7x4.svg b/symbols/shields/trunk_7x4.svg index e98e374db5..e27a0aef24 100644 --- a/symbols/shields/trunk_7x4.svg +++ b/symbols/shields/trunk_7x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_8x1.svg b/symbols/shields/trunk_8x1.svg index fe6a8f040f..db507f901b 100644 --- a/symbols/shields/trunk_8x1.svg +++ b/symbols/shields/trunk_8x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_8x2.svg b/symbols/shields/trunk_8x2.svg index 225b563b21..e37ee1f2f8 100644 --- a/symbols/shields/trunk_8x2.svg +++ b/symbols/shields/trunk_8x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_8x3.svg b/symbols/shields/trunk_8x3.svg index 7ad16ac922..05be550feb 100644 --- a/symbols/shields/trunk_8x3.svg +++ b/symbols/shields/trunk_8x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_8x4.svg b/symbols/shields/trunk_8x4.svg index d8e01374b5..c8b04dc670 100644 --- a/symbols/shields/trunk_8x4.svg +++ b/symbols/shields/trunk_8x4.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_9x1.svg b/symbols/shields/trunk_9x1.svg index 80b5abaa02..ac0bc51ef8 100644 --- a/symbols/shields/trunk_9x1.svg +++ b/symbols/shields/trunk_9x1.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_9x2.svg b/symbols/shields/trunk_9x2.svg index f37cd3408f..67dcb337d5 100644 --- a/symbols/shields/trunk_9x2.svg +++ b/symbols/shields/trunk_9x2.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_9x3.svg b/symbols/shields/trunk_9x3.svg index c2202e43af..674677f7db 100644 --- a/symbols/shields/trunk_9x3.svg +++ b/symbols/shields/trunk_9x3.svg @@ -1,5 +1,5 @@ - + - + diff --git a/symbols/shields/trunk_9x4.svg b/symbols/shields/trunk_9x4.svg index 648e6d5e93..99097132ef 100644 --- a/symbols/shields/trunk_9x4.svg +++ b/symbols/shields/trunk_9x4.svg @@ -1,5 +1,5 @@ - + - + From 55c4b2745c10645036a709d92e811a527f05aae0 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 11 Aug 2015 20:06:12 +0200 Subject: [PATCH 03/34] rework width for service roads --- roads.mss | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/roads.mss b/roads.mss index 3da52f6e92..cca0c3dde1 100644 --- a/roads.mss +++ b/roads.mss @@ -153,6 +153,7 @@ @living-street-width-z17: 12; @pedestrian-width-z17: 12; @service-width-z17: 7; +@minor-service-width-z17: 3.5; @motorway-width-z18: 20; @motorway-link-width-z18: 12; @@ -160,6 +161,8 @@ @primary-width-z18: 20; @secondary-width-z18: 20; @tertiary-width-z18: 20; +@service-width-z18: 8; +@minor-service-width-z18: 4.25; @major-casing-width-z11: 0.3; @casing-width-z12: 0.1; @@ -377,9 +380,12 @@ line-width: @service-width-z14; [zoom >= 16] { line-width: @service-width-z16; } [zoom >= 17] { line-width: @service-width-z17; } + [zoom >= 18] { line-width: @service-width-z18; } } [service = 'INT-minor'] { line-width: @minor-service-width-z16; + [zoom >= 17] { line-width: @minor-service-width-z17; } + [zoom >= 18] { line-width: @minor-service-width-z18; } } .roads-casing { line-join: round; @@ -1292,9 +1298,12 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ 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; } } [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; } } line-join: round; line-cap: round; @@ -1309,9 +1318,12 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ 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; } } [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; } } } } From 3887b2735ef72339679a543d418b6b98d0ec4fa9 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 12:11:13 +0200 Subject: [PATCH 04/34] refactor setting casings --- roads.mss | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/roads.mss b/roads.mss index cca0c3dde1..df2955467f 100644 --- a/roads.mss +++ b/roads.mss @@ -112,6 +112,7 @@ @track-grade2-width-z13: 0.5; @steps-width-z13: 0.7; +@secondary-width-z14: 5; @tertiary-width-z14: 5; @residential-width-z14: 3; @living-street-width-z14: 3; @@ -136,7 +137,8 @@ @track-grade2-width-z15: 0.75; @steps-width-z15: 3; -@tertiary-width-z16: 10; +@secondary-width-z16: 10; +@tertiary-width-z16: 10; @residential-width-z16: 6; @living-street-width-z16: 6; @pedestrian-width-z16: 6; @@ -165,21 +167,34 @@ @minor-service-width-z18: 4.25; @major-casing-width-z11: 0.3; + @casing-width-z12: 0.1; @secondary-casing-width-z12: 0.3; @major-casing-width-z12: 0.5; -@major-casing-width-z13: 0.5; + @casing-width-z13: 0.5; @residential-casing-width-z13: 0.5; +@secondary-casing-width-z13: 0.5; +@major-casing-width-z13: 0.5; + @casing-width-z14: 0.5; +@secondary-casing-width-z14: 0.6; @major-casing-width-z14: 0.6; + @casing-width-z15: 0.6; +@secondary-casing-width-z15: 0.7; @major-casing-width-z15: 0.7; + @casing-width-z16: 0.6; +@secondary-casing-width-z16: 0.7; @major-casing-width-z16: 0.7; + @casing-width-z17: 0.8; +@secondary-casing-width-z17: 1; @major-casing-width-z17: 1; + @casing-width-z18: 0.8; +@secondary-casing-width-z18: 1; @major-casing-width-z18: 1; @bridge-casing-width-z12: 0.1; @@ -301,7 +316,9 @@ line-width: @secondary-width-z11; [zoom >= 12] { line-width: @secondary-width-z12; } [zoom >= 13] { line-width: @secondary-width-z13; } + [zoom >= 14] { line-width: @secondary-width-z14; } [zoom >= 15] { line-width: @secondary-width-z15; } + [zoom >= 16] { line-width: @secondary-width-z16; } [zoom >= 17] { line-width: @secondary-width-z17; } [zoom >= 18] { line-width: @secondary-width-z18; } .roads-casing { @@ -1170,17 +1187,21 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ line-join: round; [zoom >= 12] { line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; - [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @major-casing-width-z13; } - [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @major-casing-width-z15; } - [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @major-casing-width-z17; } - [zoom >= 18] { line-width: @secondary-width-z18 - 2 * @major-casing-width-z18; } + [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; } .tunnels-fill { line-color: @secondary-tunnel-fill; } .bridges-fill { 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; } } From 67251c8110b4d0808e09c52cc14fbaff64c95b85 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 12:18:04 +0200 Subject: [PATCH 05/34] reduce casing for secondaries at z14 and z13 --- roads.mss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roads.mss b/roads.mss index df2955467f..4dd92da415 100644 --- a/roads.mss +++ b/roads.mss @@ -174,11 +174,11 @@ @casing-width-z13: 0.5; @residential-casing-width-z13: 0.5; -@secondary-casing-width-z13: 0.5; +@secondary-casing-width-z13: 0.35; @major-casing-width-z13: 0.5; @casing-width-z14: 0.5; -@secondary-casing-width-z14: 0.6; +@secondary-casing-width-z14: 0.35; @major-casing-width-z14: 0.6; @casing-width-z15: 0.6; From 09debc12ddf209c4b80d425da0c67c3476d4c585 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 18:30:19 +0200 Subject: [PATCH 06/34] fix bug in script producing a wrong comment --- roads.mss | 2 +- scripts/generate_road_colors.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/roads.mss b/roads.mss index 4dd92da415..37564645a4 100644 --- a/roads.mss +++ b/roads.mss @@ -3,7 +3,7 @@ //road colors for major roads were generated with scripts/generate_road_colors.py @motorway-fill: #e892a2; // lch(70, 35, 10) Conversion error on moving from lch to rgb: 0.5 lch(-0.3, -0.5, -0.9) @trunk-fill: #f9b29c; // lch(79, 33, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.4, -1.5, 1.1) -@primary-fill: #fcd6a4; // lch(79, 33, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.4, -1.5, 1.1) +@primary-fill: #fcd6a4; // lch(88, 31, 74) Conversion error on moving from lch to rgb: 1.8 lch(-0.3, -0.8, 4.0) @secondary-fill: #f7fabf; // lch(97, 29, 106) Conversion error on moving from lch to rgb: 1.8 lch(-0.2, 0.7, 4.4) @tertiary-fill: #ffffff; @residential-fill: #ffffff; diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index f5708ac661..e8e4b63fc5 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -181,7 +181,7 @@ def get_intended_lch(self): //road colors for major roads were generated with scripts/generate_road_colors.py @motorway-fill: """ + colors['motorway_fill'].get_as_hex() + '; // ' + colors['motorway_fill'].intended_lch_string + """ @trunk-fill: """+colors['trunk_fill'].get_as_hex() + '; // ' + colors['trunk_fill'].intended_lch_string + """ -@primary-fill: """+colors['primary_fill'].get_as_hex() + '; // ' + colors['trunk_fill'].intended_lch_string + """ +@primary-fill: """+colors['primary_fill'].get_as_hex() + '; // ' + colors['primary_fill'].intended_lch_string + """ @secondary-fill: """+colors['secondary_fill'].get_as_hex() + '; // ' + colors['secondary_fill'].intended_lch_string + """ """ From 2d52532123ef8919de161671fc936c03ebbc9635 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 18:32:55 +0200 Subject: [PATCH 07/34] fix tertiary construction it was displayed as white stripes on white --- roads.mss | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/roads.mss b/roads.mss index 37564645a4..11fd5afb0d 100644 --- a/roads.mss +++ b/roads.mss @@ -995,9 +995,7 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ line-color: @secondary-fill; } [construction = 'tertiary'], - [construction = 'tertiary_link'] { - line-color: @tertiary-fill; - } + [construction = 'tertiary_link'], [construction = 'residential'], [construction = 'unclassified'], [construction = 'living_street'] { From bcd25431e4eb94377d39787fe3ff81a7ba4e9d67 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 19:03:52 +0200 Subject: [PATCH 08/34] allow setting motorway, trunk width on z8 --- roads.mss | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/roads.mss b/roads.mss index 11fd5afb0d..7023461d41 100644 --- a/roads.mss +++ b/roads.mss @@ -72,6 +72,8 @@ @motorway-width-z7: 0.8; @trunk-width-z7: 0.8; +@motorway-width-z8: 0.8; +@trunk-width-z8: 0.8; @primary-width-z8: 1; @motorway-width-z9: 1.4; @@ -1058,6 +1060,7 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ } } [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] { @@ -1106,9 +1109,8 @@ residential is rendered from z10 and is not included in osm_planet_roads. */ line-color: @trunk-fill; } } - [zoom >= 7] { - line-width: @trunk-width-z7; - } + [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] { From 9252648689ef2e03fa94285ebdae6ee3fdfcc6e8 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Wed, 12 Aug 2015 19:04:47 +0200 Subject: [PATCH 09/34] motorway, trunk, primary - width 1.0 on z8 --- roads.mss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/roads.mss b/roads.mss index 7023461d41..fa0abe0569 100644 --- a/roads.mss +++ b/roads.mss @@ -72,8 +72,8 @@ @motorway-width-z7: 0.8; @trunk-width-z7: 0.8; -@motorway-width-z8: 0.8; -@trunk-width-z8: 0.8; +@motorway-width-z8: 1; +@trunk-width-z8: 1; @primary-width-z8: 1; @motorway-width-z9: 1.4; From 2c53c69c3faa41fd0615d331dca6cbd809776e92 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 13 Aug 2015 22:23:05 +0200 Subject: [PATCH 10/34] glow for secondary on z9 and z10 and for tertiary on z11 --- project.mml | 6 +++--- project.yaml | 6 +++--- roads.mss | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/project.mml b/project.mml index 3189cc4212..d8b587693c 100644 --- a/project.mml +++ b/project.mml @@ -575,7 +575,7 @@ ], "properties": { "group-by": "layernotnull", - "minzoom": 10 + "minzoom": 9 }, "advanced": {} }, @@ -809,7 +809,7 @@ ], "id": "roads-casing", "properties": { - "minzoom": 10 + "minzoom": 9 }, "advanced": {} }, @@ -992,7 +992,7 @@ ], "properties": { "group-by": "layernotnull", - "minzoom": 10 + "minzoom": 9 }, "advanced": {} }, diff --git a/project.yaml b/project.yaml index 22dcf90929..d023fcf06b 100644 --- a/project.yaml +++ b/project.yaml @@ -585,7 +585,7 @@ Layer: ) AS tunnels properties: group-by: "layernotnull" - minzoom: 10 + minzoom: 9 advanced: {} - id: "citywalls" name: "citywalls" @@ -863,7 +863,7 @@ Layer: CASE WHEN int_surface IN ('unpaved') THEN 0 ELSE 2 END ) AS roads_casing properties: - minzoom: 10 + minzoom: 9 advanced: {} - id: "highway-area-fill" name: "highway-area-fill" @@ -1239,7 +1239,7 @@ Layer: ) AS bridges properties: group-by: "layernotnull" - minzoom: 10 + minzoom: 9 advanced: {} - id: "guideways" name: "guideways" diff --git a/roads.mss b/roads.mss index 8e3a99f78b..2ee89dfa53 100644 --- a/roads.mss +++ b/roads.mss @@ -227,6 +227,24 @@ .roads-casing, .bridges-casing, .tunnels-casing { ::casing { + [zoom = 9][feature = 'highway_secondary'] { + line-color: white; + line-width: 2.2; + line-opacity: 0.4; + line-join: round; + //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering + //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. + } + [zoom = 10][feature = 'highway_secondary'], + [zoom = 11][feature = 'highway_tertiary'] { + line-color: white; + line-width: 2.7; + line-opacity: 0.4; + line-join: round; + //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering + //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. + } + [zoom >= 11] { [feature = 'highway_motorway'] { line-width: @motorway-width-z11; From e60e2f3f64bcc8c606ab642417fc6076e2455ea1 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Fri, 14 Aug 2015 08:58:39 +0200 Subject: [PATCH 11/34] z11 is now again without casings and using low zoom style --- roads.mss | 73 ++++++++++++++++++++++++------------------------------- 1 file changed, 32 insertions(+), 41 deletions(-) diff --git a/roads.mss b/roads.mss index 2ee89dfa53..33134878fd 100644 --- a/roads.mss +++ b/roads.mss @@ -79,15 +79,17 @@ @motorway-width-z9: 1.4; @trunk-width-z9: 1.4; @primary-width-z9: 1.4; +@secondary-width-z9: 1; @motorway-width-z10: 1.9; @trunk-width-z10: 1.9; @primary-width-z10: 1.9; +@secondary-width-z10: 1; -@motorway-width-z11: 2.5; -@trunk-width-z11: 2.5; -@primary-width-z11: 2.5; -@secondary-width-z11: 2; +@motorway-width-z11: 2.0; +@trunk-width-z11: 1.8; +@primary-width-z11: 1.3; +@secondary-width-z11: 1; @motorway-width-z12: 3.5; @motorway-link-width-z12: 1.5; @@ -245,11 +247,9 @@ //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } - [zoom >= 11] { + [zoom >= 12] { [feature = 'highway_motorway'] { - line-width: @motorway-width-z11; - [zoom >= 11] { line-width: @motorway-width-z11; } - [zoom >= 12] { line-width: @motorway-width-z12; } + line-width: @motorway-width-z12; [zoom >= 13] { line-width: @motorway-width-z13; } [zoom >= 15] { line-width: @motorway-width-z15; } [zoom >= 17] { line-width: @motorway-width-z17; } @@ -280,13 +280,12 @@ } [feature = 'highway_trunk'] { - [zoom >= 11] { + [zoom >= 12] { line-color: @trunk-low-zoom-casing; [zoom >= 13] { line-color: @trunk-casing; } - line-width: @trunk-width-z11; - [zoom >= 12] { line-width: @trunk-width-z12; } + line-width: @trunk-width-z12; [zoom >= 13] { line-width: @trunk-width-z13; } [zoom >= 15] { line-width: @trunk-width-z15; } [zoom >= 17] { line-width: @trunk-width-z17; } @@ -306,13 +305,12 @@ } [feature = 'highway_primary'] { - [zoom >= 11] { + [zoom >= 12] { line-color: @primary-low-zoom-casing; [zoom >= 13] { line-color: @primary-casing; } - line-width: @primary-width-z11; - [zoom >= 12] { line-width: @primary-width-z12; } + line-width: @primary-width-z12; [zoom >= 13] { line-width: @primary-width-z13; } [zoom >= 15] { line-width: @primary-width-z15; } [zoom >= 17] { line-width: @primary-width-z17; } @@ -332,13 +330,12 @@ } [feature = 'highway_secondary'] { - [zoom >= 11] { + [zoom >= 12] { line-color: @secondary-low-zoom-casing; [zoom >= 13] { line-color: @secondary-casing; } - line-width: @secondary-width-z11; - [zoom >= 12] { line-width: @secondary-width-z12; } + line-width: @secondary-width-z12; [zoom >= 13] { line-width: @secondary-width-z13; } [zoom >= 14] { line-width: @secondary-width-z14; } [zoom >= 15] { line-width: @secondary-width-z15; } @@ -1042,7 +1039,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 5] { line-color: @motorway-low-zoom; line-width: @motorway-width-z5; - [zoom >= 11] { + [zoom >= 12] { line-color: @motorway-fill; } } @@ -1050,11 +1047,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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 - 2 * @major-casing-width-z11; - line-cap: round; - line-join: round; - } + [zoom >= 11] { line-width: @motorway-width-z11; } [zoom >= 12] { line-width: @motorway-width-z12 - 2 * @major-casing-width-z12; [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @major-casing-width-z13; } @@ -1085,6 +1078,8 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 18] { line-width: @motorway-link-width-z18 - 2 * @bridge-casing-width-z18; } } } + line-cap: round; + line-join: round; } } @@ -1092,7 +1087,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 5] { line-width: @trunk-width-z5; line-color: @trunk-low-zoom; - [zoom >= 11] { + [zoom >= 12] { line-color: @trunk-fill; } } @@ -1100,11 +1095,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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 - 2 * @major-casing-width-z11; - line-cap: round; - line-join: round; - } + [zoom >= 11] { line-width: @trunk-width-z11; } [zoom >= 12] { line-width: @trunk-width-z12 - 2 * @major-casing-width-z12; [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @major-casing-width-z13; } @@ -1121,6 +1112,8 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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; } } + line-cap: round; + line-join: round; } } @@ -1128,17 +1121,13 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 8] { line-width: @primary-width-z8; line-color: @primary-low-zoom; - [zoom >= 11] { + [zoom >= 12] { line-color: @primary-fill; } } [zoom >= 9] { line-width: @primary-width-z9; } [zoom >= 10] { line-width: @primary-width-z10; } - [zoom >= 11] { - line-width: @primary-width-z11 - 2 * @major-casing-width-z11; - line-cap: round; - line-join: round; - } + [zoom >= 11] { line-width: @primary-width-z11; } [zoom >= 12] { line-width: @primary-width-z12 - 2 * @major-casing-width-z12; [zoom >= 13] { line-width: @primary-width-z13 - 2 * @major-casing-width-z13; } @@ -1155,25 +1144,27 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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; } } + line-cap: round; + line-join: round; } } [feature = 'highway_secondary'] { [zoom >= 9] { line-color: @residential-casing; - line-width: 1; + line-width: @secondary-width-z9; } [zoom >=10] { line-color: @residential-casing; - line-width: 1.1; + line-width: @secondary-width-z10; } - [zoom >= 11] { + [zoom >= 11] { line-width: @secondary-width-z11; } + [zoom >= 12] { line-color: @secondary-fill; - line-width: @secondary-width-z11 - 2 * @major-casing-width-z11; + line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; line-cap: round; line-join: round; - [zoom >= 12] { - line-width: @secondary-width-z12 - 2 * @secondary-casing-width-z12; + [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; } From 3456586f2bba887bbd937c697b8010884a425adc Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Mon, 24 Aug 2015 17:10:42 +0200 Subject: [PATCH 12/34] narrower trunk on z7 --- roads.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 33134878fd..3fa731529f 100644 --- a/roads.mss +++ b/roads.mss @@ -70,7 +70,7 @@ @trunk-width-z5: 0.4; @motorway-width-z7: 0.8; -@trunk-width-z7: 0.8; +@trunk-width-z7: 0.6; @motorway-width-z8: 1; @trunk-width-z8: 1; From 9896b5f7451de3b1756d98603fbbf0e64865fbbf Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Mon, 24 Aug 2015 19:40:21 +0200 Subject: [PATCH 13/34] less wide railway on z7 --- roads.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 3fa731529f..74294aef6c 100644 --- a/roads.mss +++ b/roads.mss @@ -1557,7 +1557,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'railway_INT-spur-siding-yard'][zoom >= 13] { [zoom < 13] { line-color: #787878; - line-width: 0.7; + line-width: 0.5; [zoom >= 8] { line-width: 0.8; } [zoom >= 12] { line-width: 0.9; } line-join: round; From 5ed16dfd9ab101b3c7c064db5a85506ffa944019 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 12:22:45 +0200 Subject: [PATCH 14/34] fix inconsistent widths on z10 and z11 --- roads.mss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/roads.mss b/roads.mss index 74294aef6c..345562e0a7 100644 --- a/roads.mss +++ b/roads.mss @@ -83,12 +83,12 @@ @motorway-width-z10: 1.9; @trunk-width-z10: 1.9; -@primary-width-z10: 1.9; +@primary-width-z10: 1.8; @secondary-width-z10: 1; @motorway-width-z11: 2.0; -@trunk-width-z11: 1.8; -@primary-width-z11: 1.3; +@trunk-width-z11: 1.9; +@primary-width-z11: 1.8; @secondary-width-z11: 1; @motorway-width-z12: 3.5; From 112641ec71419960e7c4475e37a8c38ae15f7f55 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 12:38:59 +0200 Subject: [PATCH 15/34] add missing glow for decondaries at z11 --- roads.mss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 345562e0a7..4c15057a40 100644 --- a/roads.mss +++ b/roads.mss @@ -238,7 +238,8 @@ //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } [zoom = 10][feature = 'highway_secondary'], - [zoom = 11][feature = 'highway_tertiary'] { + [zoom = 11][feature = 'highway_tertiary'], + [zoom = 11][feature = 'highway_secondary'] { line-color: white; line-width: 2.7; line-opacity: 0.4; From 3a07f1f54ca4e7175f87eb3f5e23b8b1d2366435 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 12:39:47 +0200 Subject: [PATCH 16/34] handle cases like min_h = 280; max_h = 460 --- scripts/generate_road_colors.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index e8e4b63fc5..f0bdbf816c 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -72,11 +72,11 @@ def get_intended_lch(self): min_h = 10 max_h = 106 -delta_h = (max_h - min_h)/3 -motorway_hue = min_h -trunk_hue = min_h + delta_h -primary_hue = min_h + delta_h*2 -secondary_hue = min_h + delta_h*3 +delta_h = (max_h - min_h) / 3 +motorway_hue = (min_h) % 360 +trunk_hue = (min_h + delta_h) % 360 +primary_hue = (min_h + delta_h*2) % 360 +secondary_hue = (min_h + delta_h*3) % 360 colors = {} From 31485b55dab6911d57a345b5d5ee483aadc72608 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 13:04:12 +0200 Subject: [PATCH 17/34] tweak and extend halos to z10 tertiary and z12 unclassified --- roads.mss | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 4c15057a40..1873477c6c 100644 --- a/roads.mss +++ b/roads.mss @@ -238,7 +238,6 @@ //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } [zoom = 10][feature = 'highway_secondary'], - [zoom = 11][feature = 'highway_tertiary'], [zoom = 11][feature = 'highway_secondary'] { line-color: white; line-width: 2.7; @@ -247,6 +246,16 @@ //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } + [zoom = 10][feature = 'highway_tertiary'], + [zoom = 11][feature = 'highway_tertiary'], + [zoom = 12][feature = 'highway_unclassified'] { + line-color: white; + line-width: 2.2; + line-opacity: 0.3; + line-join: round; + //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering + //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. + } [zoom >= 12] { [feature = 'highway_motorway'] { From 969e04d449df44908aa5d7b13994918b9f5af229 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 25 Aug 2015 14:18:15 +0200 Subject: [PATCH 18/34] show red dashes for steps --- roads.mss | 1 + 1 file changed, 1 insertion(+) diff --git a/roads.mss b/roads.mss index 1873477c6c..2ef227845e 100644 --- a/roads.mss +++ b/roads.mss @@ -2162,6 +2162,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_track'], [feature = 'highway_path'], [feature = 'highway_footway'], + [feature = 'highway_steps'], [feature = 'highway_cycleway'], [feature = 'highway_bridleway'] { [zoom >= 15] { From 0303956be44f51fe1d8d493f0726035438b7e24f Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 25 Aug 2015 15:06:41 +0200 Subject: [PATCH 19/34] rework private access width --- roads.mss | 51 ++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/roads.mss b/roads.mss index 2ef227845e..5c2b7498b8 100644 --- a/roads.mss +++ b/roads.mss @@ -2157,32 +2157,53 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_tertiary'], [feature = 'highway_unclassified'], [feature = 'highway_residential'], + [feature = 'highway_living_street'] { + [zoom >= 15] { + access/line-width: 6; + access/line-color: @private-marking; + access/line-dasharray: 6,8; + access/line-opacity: 0.5; + access/line-join: round; + access/line-cap: round; + } + } [feature = 'highway_road'], - [feature = 'highway_living_street'], [feature = 'highway_track'], - [feature = 'highway_path'], + [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15] { + [zoom >= 15] { + access/line-width: 3; + access/line-color: @private-marking; + access/line-dasharray: 6,8; + access/line-opacity: 0.5; + access/line-join: round; + access/line-cap: round; + [zoom >= 16] { access/line-width: 6; } + } + } [feature = 'highway_footway'], - [feature = 'highway_steps'], + [feature = 'highway_path'], [feature = 'highway_cycleway'], - [feature = 'highway_bridleway'] { + [feature = 'highway_bridleway'], + [feature = 'highway_steps'] { [zoom >= 15] { - access/line-width: 6; + access/line-width: 5; access/line-color: @private-marking; access/line-dasharray: 6,8; access/line-opacity: 0.5; access/line-join: round; access/line-cap: round; - } + } } - [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15], - [feature = 'highway_service'][zoom >= 16] { - access/line-width: 3; - access/line-color: @private-marking; - access/line-dasharray: 6,8; - access/line-opacity: 0.5; - access/line-join: round; - access/line-cap: round; - [zoom >= 16] { access/line-width: 6; } + + [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] { + [zoom >= 15] { + access/line-width: 2.5; + access/line-color: @private-marking; + access/line-dasharray: 6,8; + access/line-opacity: 0.5; + access/line-join: round; + access/line-cap: round; + } } } } From 2347f82d8602bfbabb021e1ab2816e281c230bd3 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 25 Aug 2015 15:55:15 +0200 Subject: [PATCH 20/34] make access=private/no visible on red roads fixes #831 --- roads.mss | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/roads.mss b/roads.mss index 5c2b7498b8..012e071140 100644 --- a/roads.mss +++ b/roads.mss @@ -54,6 +54,7 @@ @destination-marking: #c2e0ff; @private-marking: #efa9a9; +@private-marking-for-red: #C26363; @tunnel-casing: grey; @bridge-casing: black; @@ -2165,6 +2166,11 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ access/line-opacity: 0.5; access/line-join: round; access/line-cap: round; + [feature = 'highway_motorway'], + [feature = 'highway_trunk'], + [feature = 'highway_primary'] { + access/line-color: @private-marking-for-red; + } } } [feature = 'highway_road'], From 93d2e80d15ad3fac4e91e45c0c65eb09cd053f3e Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Tue, 25 Aug 2015 19:04:02 +0200 Subject: [PATCH 21/34] rework also destination marks --- roads.mss | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/roads.mss b/roads.mss index 012e071140..1c0fa6f83d 100644 --- a/roads.mss +++ b/roads.mss @@ -2128,26 +2128,37 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_tertiary'], [feature = 'highway_unclassified'], [feature = 'highway_residential'], - [feature = 'highway_road'], [feature = 'highway_living_street'] { [zoom >= 15] { access/line-width: 6; access/line-color: @destination-marking; access/line-dasharray: 6,8; - access/line-cap: round; + access/line-opacity: 0.5; access/line-join: round; + access/line-cap: round; + } + } + [feature = 'highway_road'], + [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15] { + [zoom >= 15] { + access/line-width: 3; + access/line-color: @destination-marking; + access/line-dasharray: 6,8; access/line-opacity: 0.5; + access/line-join: round; + access/line-cap: round; + [zoom >= 16] { access/line-width: 6; } } } - [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15], - [feature = 'highway_service'][zoom >= 16] { - access/line-width: 3; - access/line-color: @destination-marking; - access/line-dasharray: 6,8; - access/line-cap: round; - access/line-join: round; - access/line-opacity: 0.5; - [zoom >= 16] { access/line-width: 6; } + [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] { + [zoom >= 15] { + access/line-width: 2.5; + access/line-color: @destination-marking; + access/line-dasharray: 6,8; + access/line-opacity: 0.5; + access/line-join: round; + access/line-cap: round; + } } } [access = 'no'] { From 7a4580ff783aeb5b9d0fe9988a51f1e4deb132d4 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 14:38:24 +0200 Subject: [PATCH 22/34] remove duplicated and dead code --- scripts/generate_road_colors.py | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index f0bdbf816c..fcfb728ad9 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -97,22 +97,6 @@ def get_intended_lch(self): colors['tertiary_shield'] = Color.lch(min_l+delta_l*i, 0, 0) - -min_l = 70 -max_l = 97 -delta_l = (max_l - min_l)/3 - -c = 35 - -i = 0 -colors['motorway_fill'] = Color.lch(min_l+delta_l*i, c, motorway_hue) -i = 1 -colors['trunk_fill'] = Color.lch(min_l+delta_l*i, c, trunk_hue) -i = 2 -colors['primary_fill'] = Color.lch(min_l+delta_l*i, c, primary_hue) -i = 3 -colors['secondary_fill'] = Color.lch(min_l+delta_l*i, c, secondary_hue) - min_c = 29 max_c = 35 delta_c = max_c - min_c From 32f701afe700cc22db5cdc26414451c9ca5e1963 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Thu, 27 Aug 2015 14:49:45 +0200 Subject: [PATCH 23/34] stronger casing for minor roads at z14 --- roads.mss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/roads.mss b/roads.mss index 1c0fa6f83d..d407c35299 100644 --- a/roads.mss +++ b/roads.mss @@ -186,7 +186,7 @@ @secondary-casing-width-z13: 0.35; @major-casing-width-z13: 0.5; -@casing-width-z14: 0.5; +@casing-width-z14: 0.55; @secondary-casing-width-z14: 0.35; @major-casing-width-z14: 0.6; From 084732f8564404cb3d5caba7f34ccc3d3e20b683 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 15:05:40 +0200 Subject: [PATCH 24/34] refactoring of minor details --- roads.mss | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/roads.mss b/roads.mss index 621aaf9648..b880a51c96 100644 --- a/roads.mss +++ b/roads.mss @@ -32,7 +32,7 @@ @trunk-casing: #c84e2f; // lch(50, 65, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.7, -1.8, 0.0) @primary-casing: #a06b00; // lch(50, 60, 74) Conversion error on moving from lch to rgb: 1.6 lch(-0.4, -1.7, 2.2) @secondary-casing: #707d05; // lch(50, 55, 106) Conversion error on moving from lch to rgb: 1.9 lch(-0.2, 1.7, 3.2) -@tertiary-casing: #8F8F8F; +@tertiary-casing: #8f8f8f; @residential-casing: #bbb; @service-casing: @residential-casing; @living-street-casing: @residential-casing; @@ -230,32 +230,33 @@ @paths-bridge-casing-width: 0.5; @paths-tunnel-casing-width: 1; -@oneway-arrow-color: #404040; -@junction-text-color: #960000; +@oneway-arrow-color: #404040; +@junction-text-color: #960000; +@road-halo-color: white; .roads-casing, .bridges-casing, .tunnels-casing { ::casing { [zoom = 9][feature = 'highway_secondary'] { - line-color: white; + line-color: @road-halo-color; line-width: 2.2; line-opacity: 0.4; line-join: round; //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering - //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. + //Also, bridges - including bridge casings - are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } [zoom = 10][feature = 'highway_secondary'], [zoom = 11][feature = 'highway_secondary'] { - line-color: white; + line-color: @road-halo-color; line-width: 2.7; line-opacity: 0.4; line-join: round; //Missing line-cap: round; is intentional. It would cause rendering glow multiple times in some places - what as result of partial transparency would cause differences in rendering - //Also, bridges - including bridge casings are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. + //Also, bridges - including bridge casings - are rendered on top of roads. Enabling line-cap: round would result in glow from bridges rendered on top of road around bridges. } [zoom = 10][feature = 'highway_tertiary'], [zoom = 11][feature = 'highway_tertiary'], [zoom = 12][feature = 'highway_unclassified'] { - line-color: white; + line-color: @road-halo-color; line-width: 2.2; line-opacity: 0.3; line-join: round; @@ -1071,9 +1072,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 5] { line-color: @motorway-low-zoom; line-width: @motorway-width-z5; - [zoom >= 12] { - line-color: @motorway-fill; - } } [zoom >= 7] { line-width: @motorway-width-z7; } [zoom >= 8] { line-width: @motorway-width-z8; } @@ -1081,6 +1079,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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; } @@ -1119,9 +1118,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 5] { line-width: @trunk-width-z5; line-color: @trunk-low-zoom; - [zoom >= 12] { - line-color: @trunk-fill; - } } [zoom >= 7] { line-width: @trunk-width-z7; } [zoom >= 8] { line-width: @trunk-width-z8; } @@ -1129,6 +1125,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [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; } @@ -1153,14 +1150,12 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 8] { line-width: @primary-width-z8; line-color: @primary-low-zoom; - [zoom >= 12] { - line-color: @primary-fill; - } } [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; } From 66929b6b6b77d86101c715a95139803d920f088c Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 16:15:55 +0200 Subject: [PATCH 25/34] proper definition of highway=road --- roads.mss | 60 +++++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 10 deletions(-) diff --git a/roads.mss b/roads.mss index b880a51c96..f49e4acb1d 100644 --- a/roads.mss +++ b/roads.mss @@ -34,6 +34,7 @@ @secondary-casing: #707d05; // lch(50, 55, 106) Conversion error on moving from lch to rgb: 1.9 lch(-0.2, 1.7, 3.2) @tertiary-casing: #8f8f8f; @residential-casing: #bbb; +@road-casing: @residential-casing; @service-casing: @residential-casing; @living-street-casing: @residential-casing; @pedestrian-casing: #999; @@ -122,6 +123,7 @@ @residential-width-z14: 3; @living-street-width-z14: 3; @pedestrian-width-z14: 3; +@road-width-z14: 2; @service-width-z14: 2; @motorway-width-z15: 10; @@ -147,6 +149,7 @@ @residential-width-z16: 6; @living-street-width-z16: 6; @pedestrian-width-z16: 6; +@road-width-z16: 3.5; @service-width-z16: 3.5; @minor-service-width-z16: 2; @footway-width-z16: 1.3; @@ -161,6 +164,7 @@ @residential-width-z17: 12; @living-street-width-z17: 12; @pedestrian-width-z17: 12; +@road-width-z17: 7; @service-width-z17: 7; @minor-service-width-z17: 3.5; @@ -170,6 +174,7 @@ @primary-width-z18: 20; @secondary-width-z18: 20; @tertiary-width-z18: 20; +@road-width-z18: 8; @service-width-z18: 8; @minor-service-width-z18: 4.25; @@ -426,7 +431,25 @@ } } - [feature = 'highway_road'], + [feature = 'highway_road'] { + [zoom >= 14] { + line-color: @road-casing; + line-width: @road-width-z14; + [zoom >= 16] { line-width: @road-width-z16; } + [zoom >= 17] { line-width: @road-width-z17; } + [zoom >= 18] { line-width: @road-width-z18; } + .roads-casing { + line-join: round; + line-cap: round; + } + .tunnels-casing { line-dasharray: 4,2; } + .bridges-casing { + line-color: @bridge-casing; + line-join: round; + } + } + } + [feature = 'highway_service'] { [zoom >= 14][service = 'INT-normal'], [zoom >= 16][service = 'INT-minor'] { @@ -1304,14 +1327,35 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } - [feature = 'highway_road'], - [feature = 'highway_service'] { - [zoom >= 13][feature = 'highway_road'] { - .roads-fill, .bridges-fill { + [feature = 'highway_road'] { + [zoom >= 10] { + line-width: 1; + line-color: @residential-casing; + line-join: round; + line-cap: round; + } + [zoom >= 14] { + line-width: @road-width-z14 - 2 * @casing-width-z14; + [zoom >= 16] { line-width: @road-width-z16 - 2 * @casing-width-z16; } + [zoom >= 17] { line-width: @road-width-z17 - 2 * @casing-width-z17; } + [zoom >= 18] { line-width: @road-width-z18 - 2 * @casing-width-z18; } + .roads-fill { + line-color: @road-fill; + } + .bridges-fill { + line-width: @road-width-z14 - 2 * @bridge-casing-width-z14; + [zoom >= 16] { line-width: @road-width-z16 - 2 * @bridge-casing-width-z16; } + [zoom >= 17] { line-width: @road-width-z17 - 2 * @bridge-casing-width-z17; } + [zoom >= 18] { line-width: @road-width-z18 - 2 * @bridge-casing-width-z18; } + line-color: @road-fill; + } + .tunnels-fill { line-color: @road-fill; } } - [zoom >= 10][feature = 'highway_road'], + } + + [feature = 'highway_service'] { [zoom >= 13][service = 'INT-normal'] { line-width: 1; line-color: @residential-casing; @@ -1319,7 +1363,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 14][service = 'INT-normal'], [zoom >= 16][service = 'INT-minor'] { line-color: @service-fill; - [feature = 'highway_road'], [service = 'INT-normal'] { line-width: @service-width-z14 - 2 * @casing-width-z14; [zoom >= 16] { line-width: @service-width-z16 - 2 * @casing-width-z16; } @@ -1335,9 +1378,6 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ line-cap: round; .tunnels-fill { line-color: darken(white, 5%); - [feature = 'highway_road'] { - line-color: @residential-tunnel-fill; - } } .bridges-fill { [service = 'INT-normal'] { From b65083666d8247eb8f9708ac5b4d0aab9fd0c88f Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 15:56:06 +0200 Subject: [PATCH 26/34] drop unneded duplicates of z limits --- roads.mss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roads.mss b/roads.mss index f49e4acb1d..66587b6722 100644 --- a/roads.mss +++ b/roads.mss @@ -2308,7 +2308,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } } [feature = 'highway_road'], - [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15] { + [feature = 'highway_service'][service = 'INT-normal'] { [zoom >= 15] { access/line-width: 3; access/line-color: @destination-marking; @@ -2319,8 +2319,8 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [zoom >= 16] { access/line-width: 6; } } } - [feature = 'highway_service'][service = 'INT-minor'][zoom >= 16] { - [zoom >= 15] { + [feature = 'highway_service'][service = 'INT-minor'] { + [zoom >= 16] { access/line-width: 2.5; access/line-color: @destination-marking; access/line-dasharray: 6,8; @@ -2355,7 +2355,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ } [feature = 'highway_road'], [feature = 'highway_track'], - [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15] { + [feature = 'highway_service'][service = 'INT-normal'] { [zoom >= 15] { access/line-width: 3; access/line-color: @private-marking; From 48d31e7fe8e6dbf1890f5d5aa1b1ac1a4a2ee606 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 16:28:27 +0200 Subject: [PATCH 27/34] fix name collision --- roads.mss | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/roads.mss b/roads.mss index 66587b6722..5ae317d539 100644 --- a/roads.mss +++ b/roads.mss @@ -237,12 +237,12 @@ @oneway-arrow-color: #404040; @junction-text-color: #960000; -@road-halo-color: white; +@halo-color-for-minor-road: white; .roads-casing, .bridges-casing, .tunnels-casing { ::casing { [zoom = 9][feature = 'highway_secondary'] { - line-color: @road-halo-color; + line-color: @halo-color-for-minor-road; line-width: 2.2; line-opacity: 0.4; line-join: round; @@ -251,7 +251,7 @@ } [zoom = 10][feature = 'highway_secondary'], [zoom = 11][feature = 'highway_secondary'] { - line-color: @road-halo-color; + line-color: @halo-color-for-minor-road; line-width: 2.7; line-opacity: 0.4; line-join: round; @@ -261,7 +261,7 @@ [zoom = 10][feature = 'highway_tertiary'], [zoom = 11][feature = 'highway_tertiary'], [zoom = 12][feature = 'highway_unclassified'] { - line-color: @road-halo-color; + line-color: @halo-color-for-minor-road; line-width: 2.2; line-opacity: 0.3; line-join: round; From 39491d4ae181f626c1b4aed7b72b86092a7a4456 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 16:30:12 +0200 Subject: [PATCH 28/34] unify code style --- roads.mss | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/roads.mss b/roads.mss index 5ae317d539..d7e50d0806 100644 --- a/roads.mss +++ b/roads.mss @@ -442,7 +442,9 @@ line-join: round; line-cap: round; } - .tunnels-casing { line-dasharray: 4,2; } + .tunnels-casing { + line-dasharray: 4,2; + } .bridges-casing { line-color: @bridge-casing; line-join: round; @@ -469,7 +471,9 @@ line-join: round; line-cap: round; } - .tunnels-casing { line-dasharray: 4,2; } + .tunnels-casing { + line-dasharray: 4,2; + } .bridges-casing { line-color: @bridge-casing; line-join: round; From c7d750e38faf94938e29eaf4928a2cea921e5320 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 30 Aug 2015 22:02:55 +0200 Subject: [PATCH 29/34] introduce new variable for unimportant roads --- roads.mss | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/roads.mss b/roads.mss index d7e50d0806..7ee13e40df 100644 --- a/roads.mss +++ b/roads.mss @@ -50,6 +50,8 @@ @primary-low-zoom-casing: #c48e37; // lch(63.3, 55, 74) Conversion error on moving from lch to rgb: 2.0 lch(-0.5, -1.0, 2.9) @secondary-low-zoom-casing: #a8b14f; // lch(70, 50, 106) Conversion error on moving from lch to rgb: 2.1 lch(-0.3, 1.4, 3.7) +@unimportant-road: @residential-casing; + @residential-construction: #aaa; @service-construction: #aaa; @@ -1205,11 +1207,11 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_secondary'] { [zoom >= 9] { - line-color: @residential-casing; + line-color: @unimportant-road; line-width: @secondary-width-z9; } [zoom >=10] { - line-color: @residential-casing; + line-color: @unimportant-road; line-width: @secondary-width-z10; } [zoom >= 11] { line-width: @secondary-width-z11; } @@ -1243,7 +1245,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_tertiary'] { [zoom >= 10] { - line-color: @residential-casing; + line-color: @unimportant-road; line-width: 0.55; } [zoom >= 12] { @@ -1275,11 +1277,11 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_residential'], [feature = 'highway_unclassified'] { [zoom = 12][feature = 'highway_residential'] { - line-color: @residential-casing; + line-color: @unimportant-road; line-width: 0.4; } [zoom = 12][feature = 'highway_unclassified'] { - line-color: @residential-casing; + line-color: @unimportant-road; line-width: 1; } [zoom >= 13] { @@ -1334,7 +1336,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_road'] { [zoom >= 10] { line-width: 1; - line-color: @residential-casing; + line-color: @unimportant-road; line-join: round; line-cap: round; } @@ -1362,7 +1364,7 @@ tertiary is rendered from z10 and is not included in osm_planet_roads. */ [feature = 'highway_service'] { [zoom >= 13][service = 'INT-normal'] { line-width: 1; - line-color: @residential-casing; + line-color: @unimportant-road; } [zoom >= 14][service = 'INT-normal'], [zoom >= 16][service = 'INT-minor'] { From 46b169d448f21ed177e69ed7c022be6b6844b474 Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 6 Sep 2015 09:15:57 +0200 Subject: [PATCH 30/34] stop importing unused modules in the helper script --- scripts/generate_road_colors.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index fcfb728ad9..a3e816bc8a 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -1,6 +1,5 @@ from colormath.color_conversions import convert_color -from colormath.color_objects import LabColor, LCHabColor, SpectralColor, sRGBColor, \ -XYZColor, LCHuvColor, IPTColor +from colormath.color_objects import LabColor, LCHabColor, sRGBColor from colormath.color_diff import delta_e_cie2000 import numpy From 535e2c4c93f0951c698480860bf21e9aa49cca4d Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 6 Sep 2015 09:32:20 +0200 Subject: [PATCH 31/34] better documentation of development dependencies --- INSTALL.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/INSTALL.md b/INSTALL.md index 5a65290128..2e0992f679 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -94,4 +94,8 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn * curl, unzip for downloading and decompressing files * shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles +### Development dependencies + +* Python and Ruby to run helper scripts * [PyYAML](http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as `python-yaml` on Ubuntu, or installed with `pip install pyyaml`) +* [Color Math](https://github.com/gtaylor/python-colormath) if running generate_road_colors.py helper script (may be obtained with `pip install colormath`) \ No newline at end of file From 49436866aaabdeeea7f5a0a45b8305b80ac4656e Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 6 Sep 2015 09:37:06 +0200 Subject: [PATCH 32/34] stop using numpy in the helper script --- scripts/generate_road_colors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index a3e816bc8a..d93d4b0fe1 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -1,7 +1,6 @@ from colormath.color_conversions import convert_color from colormath.color_objects import LabColor, LCHabColor, sRGBColor from colormath.color_diff import delta_e_cie2000 -import numpy def int_lch_to_string(lch): lch = lch.get_value_tuple() @@ -56,7 +55,8 @@ def lch(self, l, c, h): if delta_e > 2.5: print("high conversion error on moving to rgb") - delta = tuple(numpy.subtract(effective_lch_tuple, lch_tuple)) + delta = tuple(effective - target for effective, target in zip(effective_lch_tuple, lch_tuple)) + lch_delta = ' lch(' + str("{0:.1f}".format(delta[0])) + ', ' + str("{0:.1f}".format(delta[1])) + ', ' + str("{0:.1f}".format(delta[2])) + ')' returned.intended_lch_string = int_lch_to_string(lch) + ' Conversion error on moving from lch to rgb: ' + str("{0:.1f}".format(delta_e)) + lch_delta From c6269edb7b6d102a9b9b0ee0c9bdeabfe8bc8ecd Mon Sep 17 00:00:00 2001 From: Mateusz Konieczny Date: Sun, 6 Sep 2015 13:41:31 +0200 Subject: [PATCH 33/34] Restore numpy in the helper script This reverts commit 49436866aaabdeeea7f5a0a45b8305b80ac4656e and adds documentation Note that numpy was anyway required by colormath --- INSTALL.md | 2 +- scripts/generate_road_colors.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/INSTALL.md b/INSTALL.md index 2e0992f679..7c58358b13 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -98,4 +98,4 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn * Python and Ruby to run helper scripts * [PyYAML](http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as `python-yaml` on Ubuntu, or installed with `pip install pyyaml`) -* [Color Math](https://github.com/gtaylor/python-colormath) if running generate_road_colors.py helper script (may be obtained with `pip install colormath`) \ No newline at end of file +* [Color Math](https://github.com/gtaylor/python-colormath) and [numpy](http://www.numpy.org/) if running generate_road_colors.py helper script (may be obtained with `pip install colormath numpy`) \ No newline at end of file diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py index d93d4b0fe1..a3e816bc8a 100644 --- a/scripts/generate_road_colors.py +++ b/scripts/generate_road_colors.py @@ -1,6 +1,7 @@ from colormath.color_conversions import convert_color from colormath.color_objects import LabColor, LCHabColor, sRGBColor from colormath.color_diff import delta_e_cie2000 +import numpy def int_lch_to_string(lch): lch = lch.get_value_tuple() @@ -55,8 +56,7 @@ def lch(self, l, c, h): if delta_e > 2.5: print("high conversion error on moving to rgb") - delta = tuple(effective - target for effective, target in zip(effective_lch_tuple, lch_tuple)) - + delta = tuple(numpy.subtract(effective_lch_tuple, lch_tuple)) lch_delta = ' lch(' + str("{0:.1f}".format(delta[0])) + ', ' + str("{0:.1f}".format(delta[1])) + ', ' + str("{0:.1f}".format(delta[2])) + ')' returned.intended_lch_string = int_lch_to_string(lch) + ' Conversion error on moving from lch to rgb: ' + str("{0:.1f}".format(delta_e)) + lch_delta From 57f503757fe6022f71d554edcf7d02a7514b39be Mon Sep 17 00:00:00 2001 From: Paul Norman Date: Fri, 11 Sep 2015 03:14:18 -0700 Subject: [PATCH 34/34] Refact road colour generation script --- roads.mss | 31 ++--- scripts/create_standard_shields | 11 +- scripts/generate_road_colors.py | 210 ------------------------------- scripts/generate_road_colours.py | 94 ++++++++++++++ 4 files changed, 116 insertions(+), 230 deletions(-) delete mode 100644 scripts/generate_road_colors.py create mode 100644 scripts/generate_road_colours.py diff --git a/roads.mss b/roads.mss index 7ee13e40df..a7a0cd53cd 100644 --- a/roads.mss +++ b/roads.mss @@ -1,10 +1,10 @@ /* For the main linear features, such as roads and railways. */ //road colors for major roads were generated with scripts/generate_road_colors.py -@motorway-fill: #e892a2; // lch(70, 35, 10) Conversion error on moving from lch to rgb: 0.5 lch(-0.3, -0.5, -0.9) -@trunk-fill: #f9b29c; // lch(79, 33, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.4, -1.5, 1.1) -@primary-fill: #fcd6a4; // lch(88, 31, 74) Conversion error on moving from lch to rgb: 1.8 lch(-0.3, -0.8, 4.0) -@secondary-fill: #f7fabf; // lch(97, 29, 106) Conversion error on moving from lch to rgb: 1.8 lch(-0.2, 0.7, 4.4) +@motorway-fill: #e892a2; // Lch(70,35,10), error 0.5 +@trunk-fill: #f9b29c; // Lch(79,33,42), error 0.7 +@primary-fill: #fcd6a4; // Lch(88,31,74), error 1.7 +@secondary-fill: #f7fabf; // Lch(97,29,106), error 1.7 @tertiary-fill: #ffffff; @residential-fill: #ffffff; @service-fill: @residential-fill; @@ -23,15 +23,16 @@ @taxiway-fill: @aeroway-fill; @helipad-fill: @aeroway-fill; -@motorway-low-zoom: #e66e89; // lch(62, 50, 10) Conversion error on moving from lch to rgb: 0.6 lch(-0.4, -0.4, -1.1) -@trunk-low-zoom: #fa9476; // lch(72, 50, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.5, -1.9, 0.7) -@primary-low-zoom: #f8c171; // lch(82, 50, 74) Conversion error on moving from lch to rgb: 2.1 lch(-0.5, -1.1, 3.4) +@motorway-low-zoom: #e66e89; // Lch(62,50,10), error 0.7 +@trunk-low-zoom: #fa9476; // Lch(72,50,42), error 0.8 +@primary-low-zoom: #f8c171; // Lch(82,50,74), error 2.1 +@secondary-low-zoom: #e6ef89; // Lch(92,50,106), error 2.2 @default-casing: white; -@motorway-casing: #dc2a67; // lch(50, 70, 10) Conversion error on moving from lch to rgb: 1.0 lch(-0.7, -0.1, -1.2) -@trunk-casing: #c84e2f; // lch(50, 65, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.7, -1.8, 0.0) -@primary-casing: #a06b00; // lch(50, 60, 74) Conversion error on moving from lch to rgb: 1.6 lch(-0.4, -1.7, 2.2) -@secondary-casing: #707d05; // lch(50, 55, 106) Conversion error on moving from lch to rgb: 1.9 lch(-0.2, 1.7, 3.2) +@motorway-casing: #dc2a67; // Lch(50,70,10), error 1.1 +@trunk-casing: #c84e2f; // Lch(50,65,42), error 0.7 +@primary-casing: #a06b00; // Lch(50,60,74), error 1.6 +@secondary-casing: #707d05; // Lch(50,55,106), error 1.9 @tertiary-casing: #8f8f8f; @residential-casing: #bbb; @road-casing: @residential-casing; @@ -45,10 +46,10 @@ @bridleway-casing: @default-casing; @track-casing: @default-casing; -@motorway-low-zoom-casing: #d63668; // lch(50, 65, 10) Conversion error on moving from lch to rgb: 0.9 lch(-0.6, -0.2, -1.2) -@trunk-low-zoom-casing: #d76444; // lch(56.7, 60, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.6, -1.9, 0.3) -@primary-low-zoom-casing: #c48e37; // lch(63.3, 55, 74) Conversion error on moving from lch to rgb: 2.0 lch(-0.5, -1.0, 2.9) -@secondary-low-zoom-casing: #a8b14f; // lch(70, 50, 106) Conversion error on moving from lch to rgb: 2.1 lch(-0.3, 1.4, 3.7) +@motorway-low-zoom-casing: #c24e6b; // Lch(50,50,10), error 0.8 +@trunk-low-zoom-casing: #cf6649; // Lch(56,55,42), error 0.9 +@primary-low-zoom-casing: #c38a27; // Lch(62,60,74), error 2.1 +@secondary-low-zoom-casing: #9eae23; // Lch(68,65,106), error 2.3 @unimportant-road: @residential-casing; diff --git a/scripts/create_standard_shields b/scripts/create_standard_shields index 204782cbd1..96cb70a1b4 100755 --- a/scripts/create_standard_shields +++ b/scripts/create_standard_shields @@ -25,11 +25,12 @@ primary:#d5b284 secondary:#c6ca90 tertiary:#c6c6c6' -#motorway: lch(65, 30, 10) Conversion error on moving from lch to rgb: 0.4 lch(-0.3, -0.4, -0.9) -#trunk: lch(70, 30, 42) Conversion error on moving from lch to rgb: 0.8 lch(-0.3, -1.4, 1.1) -#primary: lch(75, 30, 74) Conversion error on moving from lch to rgb: 1.7 lch(-0.3, -0.8, 3.9) -#secondary: lch(80, 30, 106) Conversion error on moving from lch to rgb: 1.7 lch(-0.2, 0.7, 4.3) -#tertiary: lch(80, 0, 0) Conversion error on moving from lch to rgb: 0.0 lch(-0.0, 0.0, 322.5) +# motorway: Lch(65,30,10), error 0.5 +# trunk: Lch(70,30,42), error 0.7 +# primary: Lch(75,30,74), error 1.6 +# secondary: Lch(80,30,106), error 1.8 +# tertiary: Lch(80,0,0), error 0.1 + diff --git a/scripts/generate_road_colors.py b/scripts/generate_road_colors.py deleted file mode 100644 index a3e816bc8a..0000000000 --- a/scripts/generate_road_colors.py +++ /dev/null @@ -1,210 +0,0 @@ -from colormath.color_conversions import convert_color -from colormath.color_objects import LabColor, LCHabColor, sRGBColor -from colormath.color_diff import delta_e_cie2000 -import numpy - -def int_lch_to_string(lch): - lch = lch.get_value_tuple() - l = "{0:.1f}".format(lch[0]) - c = "{0:.1f}".format(lch[1]) - h = "{0:.1f}".format(lch[2]) - if l[-1] == '0': - l = "{0:.0f}".format(lch[0]) - if c[-1] == '0': - c = "{0:.0f}".format(lch[1]) - if h[-1] == '0': - h = "{0:.0f}".format(lch[2]) - - return 'lch(' + l + ', ' + c + ', ' + h + ')' - - -class Color: - def __init__(self, name, hex): - rgb = sRGBColor.new_from_rgb_hex(hex) - self.lch = convert_color(rgb, LCHabColor) - if name != None: - if 'low-zoom' in name: - self.lch.lch_c = 50 - if 'casing' in name: - self.lch.lch_l = 50 - self.lch.lch_c = 80 - self.intended_lch_string = int_lch_to_string(self.lch) - self.hex = str(convert_color(self.lch, sRGBColor).get_rgb_hex()) - assert(len(self.hex) == 7) - - @classmethod - def lch(self, l, c, h): - lch = LCHabColor(l, c, h) - rgb = convert_color(lch, sRGBColor) - #print(lch.get_value_tuple()) - #print(rgb.get_upscaled_value_tuple()) - hex = str(rgb.get_rgb_hex()) - if (len(hex) != 7): - print("this lch value is outside rgb range") - exit - - effective_lch = convert_color(rgb, LCHabColor) - effective_lch_tuple = effective_lch.get_value_tuple() - lch_tuple = lch.get_value_tuple() - - returned = Color(None, hex) - - color1_lab = convert_color(effective_lch, LabColor); - color2_lab = convert_color(lch, LabColor); - delta_e = delta_e_cie2000(color1_lab, color2_lab); - - if delta_e > 2.5: - print("high conversion error on moving to rgb") - - delta = tuple(numpy.subtract(effective_lch_tuple, lch_tuple)) - lch_delta = ' lch(' + str("{0:.1f}".format(delta[0])) + ', ' + str("{0:.1f}".format(delta[1])) + ', ' + str("{0:.1f}".format(delta[2])) + ')' - - returned.intended_lch_string = int_lch_to_string(lch) + ' Conversion error on moving from lch to rgb: ' + str("{0:.1f}".format(delta_e)) + lch_delta - - return returned - - def get_as_hex(self): - return self.hex - - def get_intended_lch(self): - return self.intended_lch_string - -min_h = 10 -max_h = 106 -delta_h = (max_h - min_h) / 3 -motorway_hue = (min_h) % 360 -trunk_hue = (min_h + delta_h) % 360 -primary_hue = (min_h + delta_h*2) % 360 -secondary_hue = (min_h + delta_h*3) % 360 - -colors = {} - -min_l = 65 -max_l = 80 -delta_l = (max_l - min_l)/3 - -c = 30 - -i = 0 -colors['motorway_shield'] = Color.lch(min_l+delta_l*i, c, motorway_hue) -i = 1 -colors['trunk_shield'] = Color.lch(min_l+delta_l*i, c, trunk_hue) -i = 2 -colors['primary_shield'] = Color.lch(min_l+delta_l*i, c, primary_hue) -i = 3 -colors['secondary_shield'] = Color.lch(min_l+delta_l*i, c, secondary_hue) - -colors['tertiary_shield'] = Color.lch(min_l+delta_l*i, 0, 0) - -min_c = 29 -max_c = 35 -delta_c = max_c - min_c -delta_c /= 3 - -min_l = 70 -max_l = 97 -delta_l = max_l - min_l -delta_l /= 3 -i = 0 -colors['motorway_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, motorway_hue) -i = 1 -colors['trunk_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, trunk_hue) -i = 2 -colors['primary_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, primary_hue) -i = 3 -colors['secondary_fill'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, secondary_hue) - -min_l = 62 -max_l = 92 -delta_l = (max_l - min_l)/3 - -c = 50 -i = 0 -colors['motorway-low-zoom'] = Color.lch(min_l+delta_l*i, c, motorway_hue) -i = 1 -colors['trunk-low-zoom'] = Color.lch(min_l+delta_l*i, c, trunk_hue) -i = 2 -colors['primary-low-zoom'] = Color.lch(min_l+delta_l*i, c, primary_hue) - -l = 50 - -min_c = 55 -max_c = 70 -delta_c = max_c - min_c -delta_c /= 3 - -i = 0 -colors['motorway-casing'] = Color.lch(l, max_c-delta_c*i, motorway_hue) -i = 1 -colors['trunk-casing'] = Color.lch(l, max_c-delta_c*i, trunk_hue) -i = 2 -colors['primary-casing'] = Color.lch(l, max_c-delta_c*i, primary_hue) -i = 3 -colors['secondary-casing'] = Color.lch(l, max_c-delta_c*i, secondary_hue) - -min_l = 50 -max_l = 70 -delta_l = (max_l - min_l)/3 - -min_c = 50 -max_c = 65 -delta_c = max_c - min_c -delta_c /= 3 - -i = 0 -colors['motorway-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, motorway_hue) -i = 1 -colors['trunk-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, trunk_hue) -i = 2 -colors['primary-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, primary_hue) -i = 3 -colors['secondary-low-zoom-casing'] = Color.lch(min_l+delta_l*i, max_c-delta_c*i, secondary_hue) - -road_fill = """ -//road colors for major roads were generated with scripts/generate_road_colors.py -@motorway-fill: """ + colors['motorway_fill'].get_as_hex() + '; // ' + colors['motorway_fill'].intended_lch_string + """ -@trunk-fill: """+colors['trunk_fill'].get_as_hex() + '; // ' + colors['trunk_fill'].intended_lch_string + """ -@primary-fill: """+colors['primary_fill'].get_as_hex() + '; // ' + colors['primary_fill'].intended_lch_string + """ -@secondary-fill: """+colors['secondary_fill'].get_as_hex() + '; // ' + colors['secondary_fill'].intended_lch_string + """ -""" - -road_low_zoom = """ -@motorway-low-zoom: """+colors['motorway-low-zoom'].get_as_hex() + '; // ' + colors['motorway-low-zoom'].intended_lch_string + """ -@trunk-low-zoom: """+colors['trunk-low-zoom'].get_as_hex() + '; // ' + colors['trunk-low-zoom'].intended_lch_string + """ -@primary-low-zoom: """+colors['primary-low-zoom'].get_as_hex() + '; // ' + colors['primary-low-zoom'].intended_lch_string + """ -""" - -road_casing = """ -@default-casing: white; -@motorway-casing: """+colors['motorway-casing'].get_as_hex() + '; // ' + colors['motorway-casing'].intended_lch_string + """ -@trunk-casing: """+colors['trunk-casing'].get_as_hex() + '; // ' + colors['trunk-casing'].intended_lch_string + """ -@primary-casing: """+colors['primary-casing'].get_as_hex() + '; // ' + colors['primary-casing'].intended_lch_string + """ -@secondary-casing: """+colors['secondary-casing'].get_as_hex() + '; // ' + colors['secondary-casing'].intended_lch_string + """ -""" - -road_low_zoom_casing = """ -@motorway-low-zoom-casing: """+colors['motorway-low-zoom-casing'].get_as_hex() + '; // ' + colors['motorway-low-zoom-casing'].intended_lch_string + """ -@trunk-low-zoom-casing: """+colors['trunk-low-zoom-casing'].get_as_hex() + '; // ' + colors['trunk-low-zoom-casing'].intended_lch_string + """ -@primary-low-zoom-casing: """+colors['primary-low-zoom-casing'].get_as_hex() + '; // ' + colors['primary-low-zoom-casing'].intended_lch_string + """ -@secondary-low-zoom-casing: """+colors['secondary-low-zoom-casing'].get_as_hex() + '; // ' + colors['secondary-low-zoom-casing'].intended_lch_string + """ -""" - -for_create_standard_shields_script = """#shield colors were generated with scripts/generate_road_colors.py -colours='motorway:"""+colors['motorway_shield'].get_as_hex()+""" -trunk:"""+colors['trunk_shield'].get_as_hex()+""" -primary:"""+colors['primary_shield'].get_as_hex()+""" -secondary:"""+colors['secondary_shield'].get_as_hex()+""" -tertiary:"""+colors['tertiary_shield'].get_as_hex()+"""' -""" - -print(road_fill) -print(road_low_zoom) -print(road_casing) -print(road_low_zoom_casing) -print("") -print(for_create_standard_shields_script) -print("#motorway: " + colors['motorway_shield'].intended_lch_string) -print("#trunk: " + colors['trunk_shield'].intended_lch_string) -print("#primary: " + colors['primary_shield'].intended_lch_string) -print("#secondary: " + colors['secondary_shield'].intended_lch_string) -print("#tertiary: " + colors['tertiary_shield'].intended_lch_string) diff --git a/scripts/generate_road_colours.py b/scripts/generate_road_colours.py new file mode 100644 index 0000000000..7c0bd4a8f4 --- /dev/null +++ b/scripts/generate_road_colours.py @@ -0,0 +1,94 @@ +from colormath.color_conversions import convert_color +from colormath.color_objects import LabColor, LCHabColor, sRGBColor +from colormath.color_diff import delta_e_cie2000 +import numpy + +from collections import OrderedDict, namedtuple + +class Color: + def __init__(self, lch_tuple): + self.m_lch = LCHabColor(*lch_tuple) + + def lch(self): + return "Lch({:.0f},{:.0f},{:.0f})".format(*(self.m_lch.get_value_tuple())) + + def rgb(self): + rgb = convert_color(self.m_lch, sRGBColor) + if (rgb.rgb_r != rgb.clamped_rgb_r or rgb.rgb_g != rgb.clamped_rgb_g or rgb.rgb_b != rgb.clamped_rgb_b): + raise Exception("Colour {} is outside sRGB".format(self.lch())) + return rgb.get_rgb_hex() + + def rgb_error(self): + return delta_e_cie2000(convert_color(self.m_lch, LabColor), + convert_color(sRGBColor.new_from_rgb_hex(self.rgb()), LabColor)) + +road_classes = ["motorway", "trunk", "primary", "secondary"] +colour_divisions = len(road_classes) - 1 +hues = OrderedDict() + +# The minimum and maximum hue for the road colours +# Because hue is a circle, it may be needed to add/subtract 360 to the min or +# max when changing them + +min_h = 10 +max_h = 106 +delta_h = (max_h - min_h) / colour_divisions + +h = min_h +for name in road_classes: + hues[name] = h + h = (h + delta_h) % 360 + +print hues +# A class to hold information for each line +ColourInfo = namedtuple("ColourInfo", ["start_l", "end_l", "start_c", "end_c"]) + +line_colour_infos = OrderedDict() + +# The saturation and lightness for each type of line +line_colour_infos["fill"] = ColourInfo(start_l = 70, end_l = 97, start_c = 35, end_c = 29) +line_colour_infos["low-zoom"] = ColourInfo(start_l = 62, end_l = 92, start_c = 50, end_c = 50) + +line_colour_infos["casing"] = ColourInfo(start_l = 50, end_l = 50, start_c = 70, end_c = 55) +line_colour_infos["low-zoom-casing"] = ColourInfo(start_l = 50, end_l = 70, start_c = 50, end_c = 65) + +# Colours for the MSS +colours = OrderedDict() + +for line_name, line_colour_info in line_colour_infos.iteritems(): + c = line_colour_info.start_c + delta_c = (line_colour_info.end_c - line_colour_info.start_c) / colour_divisions + l = line_colour_info.start_l + delta_l = (line_colour_info.end_l - line_colour_info.start_l) / colour_divisions + + for name in road_classes: + colours[name + "-" + line_name] = Color((l, c, hues[name])) + c += delta_c + l += delta_l + +for name, colour in colours.iteritems(): + print "@{name}: {rgb}; // {lch}, error {delta:.1f}".format(name = name, rgb = colour.rgb(), lch = colour.lch(), delta = colour.rgb_error()) + +# Generate colours for the shields +shield_colour_info = ColourInfo(start_l = 65, end_l = 80, start_c = 30, end_c = 30) +shield_colours = OrderedDict() + + +c = shield_colour_info.start_c +delta_c = (shield_colour_info.end_c - shield_colour_info.start_c) / colour_divisions +l = shield_colour_info.start_l +delta_l = (shield_colour_info.end_l - shield_colour_info.start_l) / colour_divisions + +for name in road_classes: + shield_colours[name] = Color((l, c, hues[name])) + c += delta_c + l += delta_l + +shield_colours["tertiary"] = Color((shield_colour_info.end_l, 0, 0)) + +print "\n\nRoad shield information\n\n" +for name, colour in shield_colours.iteritems(): + print "{name}:{rgb}".format(name = name, rgb = colour.rgb()) + +for name, colour in shield_colours.iteritems(): + print "# {name}: {lch}, error {delta:.1f}".format(name = name, lch = colour.lch(), delta = colour.rgb_error()) \ No newline at end of file