Created
February 24, 2019 17:15
-
-
Save Phyks/6cf2e030f5d7442f36ae8070e2207357 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/usr/bin/env python | |
| import yaml | |
| CYCLEWAYS_OUTLINES = [ | |
| 'lane', | |
| 'opposite_lane', | |
| 'track', | |
| 'opposite_track', | |
| 'share_busway', | |
| 'opposite_share_busway', | |
| ] | |
| SIDES = ['left', 'right'] | |
| def get_width_variable(zoom, highway): | |
| return '@rdz%s_%s' % (zoom, highway) | |
| def get_outline_variable(zoom, highway): | |
| return '@rdz%s_%s_outline' % (zoom, highway) | |
| with open('roads.yaml', 'r') as fh: | |
| params = yaml.load(fh).get('params', []) | |
| out = [] | |
| for zoom_data in params: | |
| zoom = zoom_data['zoom'] | |
| # Generate width variables | |
| out.append('/* Z%s widths */' % zoom) | |
| for highway, width in zoom_data['widths'].items(): | |
| out.append('%s: %s;' % (get_width_variable(zoom, highway), width)) | |
| out.append('/* Z%s outlines */' % zoom) | |
| # Generate outlines variables | |
| for highway, outline in zoom_data['outlines'].items(): | |
| out.append('%s: %s;' % (get_outline_variable(zoom, highway), outline)) | |
| out.append('') | |
| out.append('') | |
| # Generate outline code | |
| # Line to draw both borders (left and right) | |
| out.append( | |
| "#roads_high::outline[zoom>=11],\n" | |
| "#tunnel::outline[zoom>=11],\n" | |
| "#bridge::outline[zoom>=11] {" | |
| ) | |
| out.append(""" | |
| line-cap: round; | |
| line-join: round; | |
| line-color: @standard-case; | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: @motorway-case; | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: @trunk-case; | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: @primary-case; | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: @secondary-case; | |
| } | |
| [cycleway='lane'], | |
| [cycleway='opposite_lane'] { | |
| line-color: @cycle_lane_case; | |
| line-dasharray: 6,3; | |
| line-cap: butt; | |
| } | |
| [cycleway='track'], | |
| [cycleway='opposite_track'] { | |
| line-color: @cycle_track_case; | |
| line-cap: butt; | |
| } | |
| [cycleway='share_busway'], | |
| [cycleway='opposite_share_busway'] { | |
| line-color: @cycle_busway_case; | |
| line-dasharray: 6,10; | |
| line-cap: butt; | |
| } | |
| [type='steps']{ | |
| line-color: @steps-case; | |
| [ramp_cycle='yes'],[ramp_wheelchair='yes'],[ramp_stroller='yes']{ | |
| line-color: fadeout(@cycle_lane_case, 50%); | |
| } | |
| } | |
| [type='railway'] { | |
| line-color: fadeout(@land,50%); | |
| } | |
| """) | |
| for zoom_data in params: | |
| zoom = zoom_data['zoom'] | |
| out.append(' [zoom=%s] {' % zoom) | |
| for highway, width in zoom_data['widths'].items(): | |
| width_variable = get_width_variable(zoom, highway) | |
| outline_variable = get_outline_variable(zoom, highway) | |
| out.append(" [type='%s'] {" % highway) | |
| out.append(" line-width: %s + (2 * %s);" % (width_variable, | |
| outline_variable)) | |
| out.append(' }') | |
| out.append(' }') | |
| out.append('}') | |
| # Bridge and tunnel specific outline | |
| out.append(''' | |
| bridge::outline[zoom>=11] { | |
| line-cap: butt; | |
| line-color: @standard-case * 0.8; | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: @motorway-case * 0.8; | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: @trunk-case * 0.8; | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: @primary-case * 0.8; | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: @secondary-case * 0.8; | |
| } | |
| [type='railway'] { | |
| line-color: @secondary-case * 0.8; | |
| } | |
| } | |
| #tunnel::outline[zoom>=11] { | |
| line-cap: butt; | |
| line-dasharray: 3,3; | |
| } | |
| ''') | |
| for side in ['left', 'right']: | |
| # Generate reset left/right outline | |
| # This eventually overload one side border for cycleways. First, hide the | |
| # casing on this side, then show cycleway. | |
| for cycleway in CYCLEWAYS_OUTLINES: | |
| out.append( | |
| "#roads_high::reset_outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append( | |
| "#tunnel::reset_outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append( | |
| "#bridge::reset_outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append('''{ | |
| /* -- colors & styles -- */ | |
| line-color: @standard-fill; | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: @motorway-fill; | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: @trunk-fill; | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: @primary-fill; | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: @secondary-fill; | |
| } | |
| [type='path'], | |
| [type='pedestrian'], | |
| [type='bridleway'], | |
| [type='footway'] { | |
| line-color: @pedestrian-fill; | |
| } | |
| [type='cycleway'], | |
| [type='path'][bicycle='yes'], | |
| [type='path'][bicycle='designated'], | |
| [type='footway'][bicycle='yes'], | |
| [type='footway'][bicycle='designated'], | |
| [type='bridleway'][bicycle='yes'], | |
| [type='bridleway'][bicycle='designated'], | |
| [type='pedestrian'][bicycle='yes'], | |
| [type='pedestrian'][bicycle='designated'] { | |
| line-color: @cycle-fill; | |
| } | |
| [type='steps'] { | |
| line-color: @steps-fill; | |
| } | |
| ''') | |
| for zoom_data in params: | |
| zoom = zoom_data['zoom'] | |
| out.append(' [zoom=%s] {' % zoom) | |
| for highway, width in zoom_data['widths'].items(): | |
| width_variable = get_width_variable(zoom, highway) | |
| outline_variable = get_outline_variable(zoom, highway) | |
| out.append(" [type='%s'] {" % highway) | |
| out.append(" line-width: %s + %s;" % (width_variable, | |
| outline_variable)) | |
| out.append(" line-offset: %s;" % outline_variable) | |
| out.append(' }') | |
| out.append(' }') | |
| out.append('}') | |
| out.append('') | |
| for cycleway in CYCLEWAYS_OUTLINES: | |
| out.append( | |
| "#tunnel::reset_outline_%s[zoom>=11][cycleway_right='%s']" | |
| % (side, cycleway) | |
| ) | |
| out.append('''{ | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: lighten(@motorway-fill, 10%); | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: lighten(@trunk-fill, 10%); | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: lighten(@primary-fill, 10%); | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: lighten(@secondary-fill, 10%); | |
| } | |
| }''') | |
| out.append('') | |
| # Generate left/right outline | |
| for cycleway in CYCLEWAYS_OUTLINES: | |
| out.append( | |
| "#roads_high::outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append( | |
| "#tunnel::outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append( | |
| "#bridge::outline_%s[zoom>=11][cycleway_%s='%s']," | |
| % (side, side, cycleway) | |
| ) | |
| out.append('''{ | |
| /* -- colors & styles -- */ | |
| [cycleway_right='lane'], | |
| [cycleway_right='opposite_lane'] { | |
| line-color: @cycle_lane_case; | |
| line-dasharray: 6,3; | |
| line-cap: butt; | |
| } | |
| [cycleway_right='track'], | |
| [cycleway_right='opposite_track'] { | |
| line-color: @cycle_track_case; | |
| line-cap: butt; | |
| } | |
| [cycleway_right='share_busway'], | |
| [cycleway_right='opposite_share_busway'] { | |
| line-color: @cycle_busway_case; | |
| line-dasharray: 6,10; | |
| line-cap: butt; | |
| }''') | |
| for zoom_data in params: | |
| zoom = zoom_data['zoom'] | |
| out.append(' [zoom=%s] {' % zoom) | |
| for highway, width in zoom_data['widths'].items(): | |
| width_variable = get_width_variable(zoom, highway) | |
| outline_variable = get_outline_variable(zoom, highway) | |
| out.append(" [type='%s'] {" % highway) | |
| out.append(" line-width: %s + %s;" % (width_variable, | |
| outline_variable)) | |
| out.append(" line-offset: %s;" % outline_variable) | |
| out.append(' }') | |
| out.append(' }') | |
| out.append('}') | |
| out.append('') | |
| # Generate inline fill | |
| out.append("#roads_high[zoom>=11],") | |
| out.append("#tunnel::inline[zoom>=11],") | |
| out.append("#bridge::inline[zoom>=11] {") | |
| out.append('''/* -- colors & styles -- */ | |
| line-color: @standard-fill; | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: @motorway-fill; | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: @trunk-fill; | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: @primary-fill; | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: @secondary-fill; | |
| } | |
| [type='railway'] { | |
| line-color: @rail-line; | |
| line-dasharray: 1,1; | |
| [type='subway'] { line-opacity: 0.67; } | |
| [zoom >= 16] { line-dasharray: 1, 2; } | |
| } | |
| [type='cycleway'] { | |
| line-color: @cycle-fill; | |
| } | |
| [type='pedestrian'], | |
| [type='bridleway'], | |
| [type='footway'], | |
| [type='path'] { | |
| line-color: @pedestrian-fill; | |
| } | |
| [type='steps'] { | |
| line-color: @steps-fill; | |
| } | |
| [type='service'], | |
| [type='track'], | |
| [type='tertiary'], | |
| [type='living_street'], | |
| [type='road'], | |
| [type='unclassified'], | |
| [type='residential'], | |
| [type='tertiary_link'], | |
| [type='secondary_link'], | |
| [type='primary_link'], | |
| [type='trunk_link'], | |
| [type='motorway_link'], | |
| [type='primary'], | |
| [type='secondary'], | |
| [type='motorway'], | |
| [type='trunk'] { | |
| line-cap: round; | |
| line-join: round; | |
| } | |
| [type='cycleway'], | |
| [type='pedestrian'], | |
| [type='bridleway'], | |
| [type='footway'], | |
| [type='path'] { | |
| line-join: round; | |
| } | |
| ''') | |
| for zoom_data in params: | |
| zoom = zoom_data['zoom'] | |
| out.append(' [zoom=%s] {' % zoom) | |
| for highway, width in zoom_data['widths'].items(): | |
| width_variable = get_width_variable(zoom, highway) | |
| out.append(" [type='%s'] {" % highway) | |
| out.append(" line-width: %s;" % (width_variable)) | |
| out.append(' }') | |
| out.append(' }') | |
| out.append('}') | |
| # Tunnel-specific overload | |
| out.append('''#tunnel::inline[zoom>=11] { | |
| line-cap: butt; | |
| [type='motorway'], | |
| [type='motorway_link'] { | |
| line-color: lighten(@motorway-fill, 10%); | |
| } | |
| [type='trunk'], | |
| [type='trunk_link'] { | |
| line-color: lighten(@trunk-fill, 10%); | |
| } | |
| [type='primary'], | |
| [type='primary_link'] { | |
| line-color: lighten(@primary-fill, 10%); | |
| } | |
| [type='secondary'], | |
| [type='secondary_link'] { | |
| line-color: lighten(@secondary-fill, 10%); | |
| } | |
| } | |
| ''') | |
| print('\n'.join(out)) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Road width variables that are used in road & bridge styles. | |
| # | |
| # Roads are drawn in two steps. First, a line if the width of the road + the | |
| # two borders is drawn and then a line of the width of the road is drawn on | |
| # top, to make a road with borders. Here, the width of the ways is the width | |
| # of the fill of the road and the border width is the width of a single | |
| # border, on one side (first line is drawn with a width of way with + 2 * | |
| # border_width). | |
| params: | |
| - zoom: 11 | |
| widths: | |
| motorway: 1.6 | |
| trunk: 1.6 | |
| primary: 0.8 | |
| secondary: 0.8 | |
| motorway_link: 0 | |
| trunk_link: 0 | |
| primary_link: 0 | |
| secondary_link: 0 | |
| tertiary: 0 | |
| tertiary_link: 0 | |
| residential: 0 | |
| unclassified: 0 | |
| road: 0 | |
| living_street: 0 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: '@rdz11_pedestrian' | |
| cycle: 0.5 | |
| railway: 0.2 | |
| outlines: | |
| primary: 0.8 | |
| secondary: 0.8 | |
| motorway_link: 0.15 | |
| trunk_link: 0.15 | |
| primary_link: 0.15 | |
| secondary_link: 0.15 | |
| tertiary: 0.15 | |
| tertiary_link: 0.15 | |
| residential: 0.15 | |
| unclassified: 0.15 | |
| road: 0.15 | |
| living_street: 0.15 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 0 | |
| cycle: 0 | |
| railway: 0 | |
| - zoom: 12 | |
| widths: | |
| motorway: 2.5 | |
| trunk: 2.5 | |
| primary: 1.2 | |
| secondary: 1.2 | |
| motorway_link: 0.5 | |
| trunk_link: 0.5 | |
| primary_link: 0.5 | |
| secondary_link: 0.5 | |
| tertiary: 0.5 | |
| tertiary_link: 0.5 | |
| residential: 0.5 | |
| unclassified: 0.5 | |
| road: 0.5 | |
| living_street: 0.5 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: pedestrian | |
| cycle: 1 | |
| railway: 0.4 | |
| outlines: | |
| motorway: 1 | |
| trunk: 1 | |
| primary: 1 | |
| secondary: 1 | |
| motorway_link: 0.25 | |
| trunk_link: 0.25 | |
| primary_link: 0.25 | |
| secondary_link: 0.25 | |
| tertiary: 0.25 | |
| tertiary_link: 0.25 | |
| residential: 0.25 | |
| unclassified: 0.25 | |
| road: 0.25 | |
| living_street: 0.25 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 0 | |
| cycle: 0 | |
| railway: 0 | |
| - zoom: 13 | |
| widths: | |
| motorway: 3 | |
| trunk: 3 | |
| primary: 1.5 | |
| secondary: 1.5 | |
| motorway_link: 0.6 | |
| trunk_link: 0.6 | |
| primary_link: 0.6 | |
| secondary_link: 0.6 | |
| tertiary: 1 | |
| tertiary_link: 0.6 | |
| residential: 0.6 | |
| unclassified: 0.6 | |
| road: 0.6 | |
| living_street: 0.6 | |
| service: 0.3 | |
| track: 0.2 | |
| pedestrian: 0.20 | |
| bridleway: 0.20 | |
| path: 0.20 | |
| footway: 0.20 | |
| steps: '@rdz13_pedestrian' | |
| cycle: 1 | |
| railway: 0.8 | |
| outlines: | |
| motorway: 1 | |
| trunk: 1 | |
| primary: 1 | |
| secondary: 1 | |
| motorway_link: 0.6 | |
| trunk_link: 0.6 | |
| primary_link: 0.6 | |
| secondary_link: 0.6 | |
| tertiary: 0.6 | |
| tertiary_link: 0.6 | |
| residential: 0.6 | |
| unclassified: 0.6 | |
| road: 0.6 | |
| living_street: 0.6 | |
| tertiary: 1 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 0 | |
| cycle: 0 | |
| railway: 0 | |
| - zoom: 14 | |
| widths: | |
| motorway: 4 | |
| trunk: 4 | |
| primary: 2.8 | |
| secondary: 2.8 | |
| motorway_link: 1 | |
| trunk_link: 1 | |
| primary_link: 1 | |
| secondary_link: 1 | |
| tertiary: 1 | |
| tertiary_link: 1 | |
| residential: 1 | |
| unclassified: 1 | |
| road: 1 | |
| living_street: 1 | |
| service: 0.33 | |
| track: 0.5 | |
| pedestrian: 0.25 | |
| bridleway: 0.25 | |
| path: 0.25 | |
| footway: 0.25 | |
| steps: '@rdz14_pedestrian' | |
| cycle: 2 | |
| railway: 1.0 | |
| outlines: | |
| motorway: 1 | |
| trunk: 1 | |
| primary: 1 | |
| secondary: 1 | |
| motorway_link: 1 | |
| trunk_link: 1 | |
| primary_link: 1 | |
| secondary_link: 1 | |
| tertiary: 1 | |
| tertiary_link: 1 | |
| residential: 1 | |
| unclassified: 1 | |
| road: 1 | |
| living_street: 1 | |
| service: 0 | |
| track: 0 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 0 | |
| cycle: 0 | |
| railway: 0 | |
| - zoom: 15 | |
| widths: | |
| motorway: 6 | |
| trunk: 6 | |
| primary: 4 | |
| secondary: 4 | |
| motorway_link: 1.5 | |
| trunk_link: 1.5 | |
| primary_link: 1.5 | |
| secondary_link: 1.5 | |
| tertiary: 1.5 | |
| tertiary_link: 1.5 | |
| residential: 1.5 | |
| unclassified: 1.5 | |
| road: 1.5 | |
| living_street: 1.5 | |
| service: 0.5 | |
| track: 0.5 | |
| pedestrian: 0.5 | |
| bridleway: 0.5 | |
| path: 0.5 | |
| footway: 0.5 | |
| steps: '@rdz15_pedestrian' | |
| cycle: 2 | |
| railway: 1.5 | |
| outlines: | |
| motorway: 1.25 | |
| trunk: 1.25 | |
| primary: 1 | |
| secondary: 1 | |
| motorway_link: 1 | |
| trunk_link: 1 | |
| primary_link: 1 | |
| secondary_link: 1 | |
| tertiary: 1 | |
| tertiary_link: 1 | |
| residential: 1 | |
| unclassified: 1 | |
| road: 1 | |
| living_street: 1 | |
| service: 1 | |
| track: 1 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 1 | |
| cycle: 0 | |
| railway: 1 | |
| - zoom: 16 | |
| widths: | |
| motorway: 10 | |
| trunk: 10 | |
| primary: 8 | |
| secondary: 8 | |
| motorway_link: 4 | |
| trunk_link: 4 | |
| primary_link: 4 | |
| secondary_link: 4 | |
| tertiary: 4 | |
| tertiary_link: 4 | |
| residential: 4 | |
| unclassified: 4 | |
| road: 4 | |
| living_street: 4 | |
| service: 1.33 | |
| track: 1.33 | |
| pedestrian: 0.75 | |
| bridleway: 0.75 | |
| path: 0.75 | |
| footway: 0.75 | |
| steps: '@rdz16_pedestrian' | |
| cycle: 2 | |
| railway: 2 | |
| outlines: | |
| motorway: 1.25 | |
| trunk: 1.25 | |
| primary: 1.25 | |
| secondary: 1.25 | |
| motorway_link: 1 | |
| trunk_link: 1 | |
| primary_link: 1 | |
| secondary_link: 1 | |
| tertiary: 1 | |
| tertiary_link: 1 | |
| residential: 1 | |
| unclassified: 1 | |
| road: 1 | |
| living_street: 1 | |
| service: 1 | |
| track: 1 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 1 | |
| cycle: 0 | |
| railway: 1 | |
| - zoom: 17 | |
| widths: | |
| motorway: 17 | |
| trunk: 17 | |
| primary: 15 | |
| secondary: 15 | |
| motorway_link: 10 | |
| trunk_link: 10 | |
| primary_link: 10 | |
| secondary_link: 10 | |
| tertiary: 10 | |
| tertiary_link: 10 | |
| residential: 10 | |
| unclassified: 10 | |
| road: 10 | |
| living_street: 10 | |
| service: 3.3 | |
| track: 3.3 | |
| pedestrian: 1 | |
| bridleway: 1 | |
| path: 1 | |
| footway: 1 | |
| steps: '@rdz17_pedestrian' | |
| cycle: 3 | |
| railway: 3 | |
| outlines: | |
| motorway: 1.5 | |
| trunk: 1.5 | |
| primary: 1.25 | |
| secondary: 1.25 | |
| motorway_link: 1 | |
| trunk_link: 1 | |
| primary_link: 1 | |
| secondary_link: 1 | |
| tertiary: 1 | |
| tertiary_link: 1 | |
| residential: 1 | |
| unclassified: 1 | |
| road: 1 | |
| living_street: 1 | |
| service: 1 | |
| track: 1 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 1 | |
| cycle: 0 | |
| railway: 2 | |
| - zoom: 18 | |
| widths: | |
| motorway: 23 | |
| trunk: 23 | |
| primary: 20 | |
| secondary: 20 | |
| motorway_link: 14 | |
| trunk_link: 14 | |
| primary_link: 14 | |
| secondary_link: 14 | |
| tertiary: 14 | |
| tertiary_link: 14 | |
| residential: 14 | |
| unclassified: 14 | |
| road: 14 | |
| living_street: 14 | |
| service: 7 | |
| track: 7 | |
| pedestrian: 1.5 | |
| bridleway: 1.5 | |
| path: 1.5 | |
| footway: 1.5 | |
| steps: 2 | |
| cycle: 4 | |
| railway: 4 | |
| outlines: | |
| motorway: 2 | |
| trunk: 2 | |
| primary: 2 | |
| secondary: 2 | |
| motorway_link: 1.75 | |
| trunk_link: 1.75 | |
| primary_link: 1.75 | |
| secondary_link: 1.75 | |
| tertiary: 1.75 | |
| tertiary_link: 1.75 | |
| residential: 1.75 | |
| unclassified: 1.75 | |
| road: 1.75 | |
| living_street: 1.75 | |
| service: 1.75 | |
| track: 1.75 | |
| pedestrian: 0 | |
| bridleway: 0 | |
| path: 0 | |
| footway: 0 | |
| steps: 1 | |
| cycle: 0 | |
| railway: 3 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment