type: overpass query: 11: |- ( way[railway~"^(rail|narrow_gauge|subway|light_rail|monorail)$"][usage~'^(main|branch)$']; way[railway~"^(construction|proposed|abandoned|disused|razed)$"][~"^(construction|proposed|abandoned|disused|razed)$"~"^(rail|narrow_gauge|subway|light_rail|monorail)$"][usage~'^(main|branch)$']; way[railway~"^(construction|proposed|abandoned|disused|razed)$"][~"^railway:(construction|proposed|abandoned|disused|razed)$"~"^(rail|narrow_gauge|subway|light_rail|monorail)$"][usage~'^(main|branch)$']; ) 13: way[railway~"^(rail|narrow_gauge|funicular|monorail|narrow_gauge|subway|light_rail|tram|construction|proposed|abandoned|disused|razed)$"][!service]; 15: way[railway~"^(rail|narrow_gauge|funicular|monorail|narrow_gauge|subway|light_rail|tram|construction|proposed|abandoned|disused|razed)$"]; feature: pre: |- {% set type = tags.railway %} {% set lifecyle = 'active' %} {% if tags.railway in ['abandoned', 'construction', 'proposed', 'disused', 'razed'] %} {% set lifecyle = tags.railway %} {% set type = attribute(tags, tags.railway)|default(attribute(tags, tags.railway ~ ':railway')) %} {% endif %} {% set color = const.types[type ~ '/' ~ tags.usage].color|default(const.types[type].color)|default(const.types.default.color) %} {% if tags.tunnel and tags.tunnel != 'no' %} {% set color = colorInterpolate([ color, '#ffffff' ], 0.3) %} {% endif %} {% set width = 2 %} {% if tags.service == 'yard' or tags.service == 'siding' or tags.service == 'spur' or tags.service == 'crossover' %} {% set width = 1 %} {% elseif tags.railway in ['rail', 'narrow_gauge', 'abandoned', 'disused', 'razed'] %} {% if tags.usage in ['main', 'branch'] %} {% set width = 3 %} {% else %} {% set width = 2 %} {% endif %} {% endif %} title: |- {% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %} {{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator')) }} {% if attribute(tags, 'tunnel:name') %}- {{ localizedTag(tags, 'tunnel:name') }}{% endif %} {% if attribute(tags, 'bridge:name') %}- {{ localizedTag(tags, 'bridge:name') }}{% endif %} description: |- {{ tagTrans('railway', type) }} {% if lifecyle != 'active' %} ({{ tagTrans('railway', lifecyle) }}) {%- endif -%} {%- if tags.usage %} , {{ tagTrans('railway=rail usage', tags.usage) }} {% endif -%} {%- if tags.service %} , {{ tagTrans('railway=rail service', tags.service) }} {% endif -%} body: |- {% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}
{% endif %} {% if tags.usage %}{{ keyTrans('railway=rail usage') }}: {{ tagTrans('railway=rail usage', tags.usage)|default(trans('unknown')) }}
{% endif %} {% if tags.service %}{{ keyTrans('railway=rail service') }}: {{ tagTrans('railway=rail service', tags.service ) }}
{% endif %} {{ keyTrans('gauge') }}: {{ tags.gauge|default(trans('unknown')) }}
{% if tags.electrified == 'no' %} {{ keyTrans('electrified') }}: {{ tagTrans('electrified', 'no') }} {% elseif tags.electrified %} {{ keyTrans('electrified') }}: {{ tagTrans('electrified', tags.electrified) }}, {{ keyTrans('voltage') }}: {{ tags.voltage|default(trans('unknown')) }}, {{ keyTrans('frequency') }}: {{ tags.frequency|default(trans('unknown')) }} {% endif %}
markerSign: |- {% if tags.railway in [ 'halt', 'tram_stop', 'station', 'stop', 'subway_entrance' ] %}X {% endif %} markerSymbol: false listMarkerSymbol: line styles: |- {% if tags.bridge and tags.bridge != 'no' %}casing_bridge,{% endif %} casing_back,casing_layer, {% if lifecyle != 'active' %}background,{% endif %} {% if tags.railway == 'narrow_gauge' %}default,narrow {% else %}default {% endif %} style: width: |- {{ width }} zIndex: |- {{ tags.layer|default(0) }} color: |- {{ color }} opacity: 1 lineCap: |- {{ lifecyle == 'active' ? 'round' : 'butt' }} dashArray: |- {{ const.lifecyle[lifecyle].dashArray }} fill: false style:background: width: |- {{ width }} zIndex: |- {{ tags.layer|default(0) - 0.1 }} color: white opacity: 1 fill: false style:casing_back: color: '#ffffff' pane: casing width: |- {{ width + 2 }} style:casing_layer: color: '#ffffff' zIndex: |- {{ tags.layer|default(0) - 0.2 }} width: |- {{ width + 2 }} lineCap: butt style:casing_bridge: color: '#000000' zIndex: |- {{ tags.layer|default(0) - 0.3 }} width: |- {{ width + 4 }} lineCap: butt style:narrow: width: |- {{ width + 2 }} zIndex: |- {{ tags.layer|default(0) }} color: |- {{ color }} lineCap: butt dashArray: '2,4' info: |- {% for k, v in const.types %} {% if not v.hideInfo %} {% set railway_usage = k|split('/') %} {% if railway_usage|length == 2 %} {% else %} {% endif %} {% endif %} {% endfor %} {% for k, v in const.lifecyle %} {% if not v.hideInfo %} {% endif %} {% endfor %}
{{ markerLine(evaluate({ 'railway': railway_usage[0], 'usage': railway_usage[1] }))|raw }} {{ tagTrans('railway', railway_usage[0]) }}, {{ keyTrans('usage') }}: {{ tagTrans('usage', railway_usage[1]) }}
{{ markerLine(evaluate({ "railway": k }))|raw }} {{ tagTrans('railway', k) }}
{{ markerLine(evaluate({ 'railway': 'rail', 'tunnel': 'yes'}))|raw }} {{ keyTrans('tunnel') }}
{{ markerLine(evaluate({ 'railway': 'rail', 'bridge': 'yes'}))|raw }} {{ keyTrans('bridge') }}
{{ markerLine(evaluate({ 'railway': k, (k): 'rail'}))|raw }} {{ tagTrans('railway', k) }}
const: types: rail/main: color: '#ff8100' rail/branch: color: '#daca00' rail: color: '#000000' narrow_gauge: color: '#000000' subway: color: '#0000ff' tram: color: '#ff00ff' light_rail: color: '#ff007f' funicular: color: '#00BD14' monorail: color: '#007f00' default: color: '#ff0000' hideInfo: true lifecyle: active: dashArray: '' hideInfo: true proposed: dashArray: '5,5' construction: dashArray: '5,2' disused: dashArray: '2,5' abandoned: dashArray: '1,5' razed: dashArray: '1,9'