| | 1 | . |
| | 2 | [[TranslatedPages]] |
| | 3 | [[PageOutline(2-10)]] |
| | 4 | = [[Image(icon.svg,36,middle,inline)]] Enhanced Lanes and Road Attributes mappaint style |
| | 5 | |
| | 6 | '''The differences between this and the normal style are : |
| | 7 | * '''Ability to show the end segments as a square.''' |
| | 8 | * '''All roads that are higher then unclassified will be showed with read, so you can easily find and fix them.''' |
| | 9 | * '''Ability to see your edits with green'''''' |
| | 10 | |
| | 11 | This style visualizes a number of lane and road specific attributes. Namely common variants of the following tags are considered: |
| | 12 | * [[osmwiki:Key:lanes|lanes]]: Number of lanes for motorized traffic. |
| | 13 | * [[osmwiki:Key:width|width]]: The width of the carriageway. Lane-dependent width using width:lanes is fully supported. |
| | 14 | * [[osmwiki:Key:change|change]]: Allowed resp. forbidden lane changes. |
| | 15 | * [[osmwiki:Key:turn|turn]]: Indication of turning lanes, including preliminary support for values hook_right and hook_left (this might change!) |
| | 16 | * [[osmwiki:Key:cycleway|cycleway]]: Only cycle tracks are supported if specified with cycleway. Cycle lanes need bicycle:lanes=...|designated|... to be visible. |
| | 17 | * [[osmwiki:Key:bicycle|bicycle:lanes]]: Dedicated bicycle lanes. |
| | 18 | * [[osmwiki:Key:bus|bus:lanes]]: Dedicated bus lanes. |
| | 19 | * [[osmwiki:Key:lanes:psv|psv:lanes]]: Dedicated PSV (public service vehicle) lanes. |
| | 20 | * [[osmwiki:Key:placement|placement]]: Placement of the road relative to the OSM-way. The value transition is not supported. |
| | 21 | * [[osmwiki:Tag:man_made=bridge|man_made=bridge]]: Used to indicate the outline of a bridge and group together all features of that bridge. |
| | 22 | * [[osmwiki:Key:lit|lit]]: Indication if a road is lit or not. |
| | 23 | * [[osmwiki:Tag:highway=street_lamp|highway=street_lamp]]: Street lamp |
| | 24 | * [[osmwiki:Key:destination|destination]]: Signposted destination of a road. Only rudimentary support without lane-dependent values. The subkeys [[osmwiki:Key:destination:ref|destination:ref]] and [[osmwiki:Key:destination:country|destination:country]] are also supported. |
| | 25 | * [[osmwiki:Proposed_features/highway=junction|highway=junction]]: Can be used to indicate the outline of a junction and group together all features of it. |
| | 26 | * [[osmwiki:Relation:enforcement|Relation enforcement]]: The to and from members of such relations are highlighted |
| | 27 | * [[osmwiki:Key:traffic_sign|traffic_sign]]: Traffic signs for speed limits and overtaking are displayed if tagged with traffic_sign=maxspeed/overtaking and maxspeed=<limit> resp. overtaking=yes/no. The value implicit for maxspeed is interpreted as the end of the speed limit. Combinations like traffic_sign=maxspeed;overtaking are also supported. |
| | 28 | * [[osmwiki:Key:hov|hov:lanes]]: Dedicated HOV lanes. The minimum requirement can be specified by hov:minimum (supported values: 2 and 3) |
| | 29 | * [[osmwiki:Relation:destination_sign|Relation destination_sign]]: Experimental and very limited support! |
| | 30 | * [[osmwiki:Key:driving_side|driving_side]]: Used to specify the driving side of the traffic. This is only supported on ways. |
| | 31 | * [[osmwiki:Key:railway|railway]]: Tracks of railways are rendered with limited support for gauge, embedded and electrified. |
| | 32 | * [[osmwiki:Key:transit|transit]]: Specify how a lane continues in the next road segment. Only verification of valid values! |
| | 33 | |
| | 34 | Furthermore: |
| | 35 | * Common suffixes like :forward, :backward, :left, :right: and :both as well as the proposed :both_ways (for lanes in both directions) are supported where appropriate. |
| | 36 | * Some common tagging errors are detected and displayed, e.g. inconsistent number of lane-dependent values and typos in the keys turn and change. |
| | 37 | * The style also supports '''left-hand traffic'''; see section Settings. |
| | 38 | |
| | 39 | Use the [[Help/Dialog/MapPaint|Map Style Dialog]] to download and activate the style. A good starting point to see it in action is the [osmwww:#map=14/47.0705/15.4353 area around Graz in Austria]. |
| | 40 | |
| | 41 | To '''report bugs or provide feedback''' send [[osmwiki:User:Imagic|me a message]]. |
| | 42 | |
| | 43 | == Settings |
| | 44 | Some settings of the style can be configured using Edit -> Preferences -> Display settings -> Colours. All settings start with mappaint.lane.and.road.attributes. Settings that contain the text "boolean" treat white as yes and any other color as no. Settings that contain the text "opacity" use the lightness to specify the opacity (the values for transparency or alpha are completely ignored!) |
| | 45 | * The settings '''carriage.way.backward''', '''carriage.way.forward''' and '''carriage.way.both_ways''' specify the colour of the respective lanes. |
| | 46 | * The settings '''sidewalk''', '''cycletrack''' and '''combined.sidewalk.and.cycletrack''' specify the colour of the sidewalk, a cycletrack and a combined sidewalk and cycletrack |
| | 47 | * If '''boolean.right.hand.traffic''' is set to white, lanes are rendered for right hand traffic, if set to black for left hand traffic and if set to anything else (which is now the default) the right- and left-hand traffic database from JOSM is used to automatically determine the side. |
| | 48 | * If '''boolean.use.svg.for.turning.markings''' is set to white, the markings for turning lanes are rendered more precisely. '''If you run into memory problems, set this to black.''' If this is set to black, the setting '''integer.png.turn.variant''' can be used to specify which set of png images should be used for turn markings. Currently two sets are supplied (value 000000 and 000001). |
| | 49 | * The settings '''opacity.lane''', '''opacity.markings''' and '''opacity.sidewalk''' specify the opacity of the lane background, road markings and the sidewalk background. If set to white they are opaque; if set to black they are completely transparent, any grey setting in between is treated an appropriate opacity. |
| | 50 | |
| | 51 | == Known limitations/bugs |
| | 52 | * [[ticket:8429|A bug in JOSM]] leads sometimes to rendering artefacts. |
| | 53 | * Left-hand traffic is nearly untested. Please provide feedback. |
| | 54 | * Roads with oneway=-1 may lead to incorrect results. Please provide feedback. |
| | 55 | * change:lanes without suffix is currently only supported on one-ways and for the special case of change:lanes=no|no. |
| | 56 | * In forward and backward direction a maximum of eight lanes and for lanes in both directions a maximum of four lanes is displayed. |
| | 57 | |
| | 58 | == Acknowledgments |
| | 59 | * To Wolfgang Hinsch who created a first style which visualizes many lane-specific features. Before I saw his style I wouldn't believe that this is possible. |
| | 60 | * To Paul Hartmann who implemented some desperately needed extensions for JOSM which made the implementation of this style a lot easier and improved performance significantly. |
| | 61 | * To all who provided valuable feedback during the creation of this style. |
| | 62 | |
| | 63 | == Preset |
| | 64 | An appropriate preset for lane attributes is available at [wiki:Presets/LaneAttributes Lane Attributes]. |
| | 65 | |
| | 66 | == Screenshot |
| | 67 | [[Image(Screenshot_Style_Lane_and_Road_Attributes.jpeg)]] |
| | 68 | [[Image(http://img.ctrlv.in/img/16/09/20/57e0f664d73c8.png)]] |
| | 69 | [[Image(http://img.ctrlv.in/img/16/09/20/57e0f54bb5151.jpg)]] |
| | 70 | |
| | 71 | == Code |
| | 72 | |
| | 73 | {{{ |
| | 74 | #!style type="mapcss" |
| | 75 | |
| | 76 | |
| | 77 | meta |
| | 78 | { |
| | 79 | title: "Enhanced Lane and road attributes"; |
| | 80 | description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes. |
| | 81 | Added modification by Florin Badita : |
| | 82 | - You can see the end of each road segment as a square. |
| | 83 | - If you modify the lines from ~70 until ~80 and you add your own name, you will be able to see with green your modifications, so that you can inspect the other ways that already have lanes attributes, but were not made by you. |
| | 84 | - We only show lanes to road categoryes highwer then unclassified, residential."; |
| | 85 | original_link: "http://josm.openstreetmap.de/wiki/Styles/Lane_and_Road_Attributes"; |
| | 86 | link: "http://josm.openstreetmap.de/wiki/Styles/Enhanced_Lane_and_Road_Attributes"; |
| | 87 | author: "Martin Vonwald,Florin Badita"; |
| | 88 | version: "2.10-61_2015-06-02"; |
| | 89 | license: "CC-BY-SA"; |
| | 90 | icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxNyAxOCI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM4NSAtNTI0LjM2KSI+PHBhdGggZmlsbD0iIzIwMmQyMCIgZD0ibSAzODUgNTI0LjM2IGggMTcgdiAxOCBoIC0xNyB6Ii8+PGcgZmlsbD0ibm9uZSI+PGcgc3Ryb2tlLWxpbmVjYXA9InNxdWFyZSIgc3Ryb2tlLXdpZHRoPSIxLjgiPjxwYXRoIGQ9Im0gMzg3LjUgNTI1LjI2IHYgMTYuMiIgc3Ryb2tlPSIjZTRlN2U0Ii8+PHBhdGggZD0ibSAzOTkuNSA1MjUuMjYgdiAxNi4yIiBzdHJva2U9IiNlNWU3ZTUiLz48L2c+PHBhdGggZD0ibSAzOTMuNSA1MjYuMzYgdiA0IiBzdHJva2U9IiNlNWU3ZTUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjciLz48L2c+PHBhdGggZD0ibSAzOTMuNSA1MzUuMzYgdiA0IiBmaWxsPSIjZTRlN2U0IiBzdHJva2U9IiNlNWU3ZTUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLXdpZHRoPSIxLjciLz48L2c+PC9zdmc+"; |
| | 91 | min-josm-version: "7287"; |
| | 92 | } |
| | 93 | |
| | 94 | meta[lang=de] |
| | 95 | { |
| | 96 | title: "Fahrspur- und Straßenattribute"; |
| | 97 | description: "Anzeige von Fahrspuren, Breite, Abbiegespuren, Spurwechsel, Zielangaben, Beleuchtung inkl. Straßenlampen, Gehsteig/Bürgersteig, Radwege, Fahrradspuren, Busspuren, Öffi-Spuren."; |
| | 98 | link: "http://josm.openstreetmap.de/wiki/De:Styles/Lane_and_Road_Attributes"; |
| | 99 | } |
| | 100 | |
| | 101 | |
| | 102 | |
| | 103 | /***************************************************************************************************************************************************/ |
| | 104 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 105 | /* Global settings and initialization */ |
| | 106 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 107 | /***************************************************************************************************************************************************/ |
| | 108 | |
| | 109 | /*TODO - Hide other types of highways/* |
| | 110 | /* highlight boundary */ |
| | 111 | way[highway=residential][!lanes], |
| | 112 | way[highway=unclassified][!lanes], |
| | 113 | way[highway=tertiary][!lanes], |
| | 114 | way[highway=tertiary_link][!lanes], |
| | 115 | way[highway=secondary][!lanes], |
| | 116 | way[highway=secondary_link][!lanes], |
| | 117 | way[highway=primary][!lanes], |
| | 118 | way[highway=primary_link][!lanes], |
| | 119 | way[highway=trunk][!lanes], |
| | 120 | way[highway=trunk_link][!lanes], |
| | 121 | way[highway=motorway][!lanes], |
| | 122 | way[highway=motorway_link][!lanes] { |
| | 123 | z-index: -1; |
| | 124 | color: red; |
| | 125 | width: 3; |
| | 126 | opacity: 0.6; |
| | 127 | dashes: 12,12; |
| | 128 | } |
| | 129 | |
| | 130 | way[highway=residential][lanes], |
| | 131 | way[highway=unclassified][lanes], |
| | 132 | way[highway=tertiary][lanes], |
| | 133 | way[highway=tertiary_link][lanes], |
| | 134 | way[highway=secondary][lanes], |
| | 135 | way[highway=secondary_link][lanes], |
| | 136 | way[highway=primary][lanes], |
| | 137 | way[highway=primary_link][lanes], |
| | 138 | way[highway=trunk][!lanes], |
| | 139 | way[highway=trunk_link][lanes], |
| | 140 | way[highway=motorway][lanes], |
| | 141 | way[highway=motorway_link][lanes] { |
| | 142 | z-index: -1; |
| | 143 | color: white; |
| | 144 | width: 2; |
| | 145 | opacity: 0.4; |
| | 146 | |
| | 147 | } |
| | 148 | |
| | 149 | |
| | 150 | way[highway=residential][lanes][JOSM_search("user:hoream_telenav")]::my_edits, |
| | 151 | way[highway=unclassified][lanes][!JOSM_search("user:hoream_telenav")], |
| | 152 | way[highway=tertiary][lanes][!JOSM_search("user:hoream_telenav")], |
| | 153 | way[highway=tertiary_link][lanes][!JOSM_search("user:hoream_telenav")], |
| | 154 | way[highway=secondary][lanes][!JOSM_search("user:hoream_telenav")], |
| | 155 | way[highway=secondary_link][lanes][!JOSM_search("user:hoream_telenav")], |
| | 156 | way[highway=primary][lanes][!JOSM_search("user:hoream_telenav")], |
| | 157 | way[highway=primary_link][lanes][!JOSM_search("user:hoream_telenav")], |
| | 158 | way[highway=trunk][!lanes][!JOSM_search("user:hoream_telenav")], |
| | 159 | way[highway=trunk_link][lanes][!JOSM_search("user:hoream_telenav")], |
| | 160 | way[highway=motorway][lanes][!JOSM_search("user:hoream_telenav")], |
| | 161 | way[highway=motorway_link][lanes][!JOSM_search("user:hoream_telenav")] { |
| | 162 | z-index: -1; |
| | 163 | color: green; |
| | 164 | width: 12; |
| | 165 | opacity: 0.4; |
| | 166 | |
| | 167 | } |
| | 168 | |
| | 169 | |
| | 170 | /* zoom out */ |
| | 171 | node:connection|z-13{ |
| | 172 | symbol-shape: square; |
| | 173 | symbol-size: 20; |
| | 174 | symbol-stroke-color: red; |
| | 175 | symbol-stroke-size: 20; |
| | 176 | z-index: 10; |
| | 177 | } |
| | 178 | |
| | 179 | */ |
| | 180 | |
| | 181 | /* The last node of the way is square and grey, |
| | 182 | so we can quickly select the end of a way and Unglue Ways in JOSM using the Keyboard letter "G" */ |
| | 183 | |
| | 184 | way[highway] >[index=-1] node|z18-21 { /* matches the last node of a way */ |
| | 185 | symbol-fill-color: grey; |
| | 186 | symbol-shape: square; |
| | 187 | symbol-stroke-color: white; |
| | 188 | symbol-size: 15; |
| | 189 | |
| | 190 | } |
| | 191 | |
| | 192 | /* The last node of the way is square and grey, |
| | 193 | so we can quickly select the end of a way and Unglue Ways in JOSM using the Keyboard letter "G" */ |
| | 194 | |
| | 195 | way[highway] >[index=-1] node|z15-19 { /* matches the last node of a way */ |
| | 196 | symbol-fill-color: grey; |
| | 197 | symbol-shape: square; |
| | 198 | symbol-stroke-color: white; |
| | 199 | symbol-size: 8; |
| | 200 | |
| | 201 | } |
| | 202 | |
| | 203 | |
| | 204 | way!:closed >[index=1] node!:connection, |
| | 205 | way!:closed >[index=-1] node!:connection { matches all single way end nodes |
| | 206 | symbol-stroke-color: blue; |
| | 207 | symbol-size: 10; |
| | 208 | } |
| | 209 | |
| | 210 | |
| | 211 | |
| | 212 | way |
| | 213 | { |
| | 214 | /* Settings: change if necessary */ |
| | 215 | style_right_hand_traffic: yes; /* Will be overriden by ugly hack below */ |
| | 216 | style_lane_opacity: 0.5; /* Will be overriden by ugly hack below */ |
| | 217 | style_sidewalk_opacity: 0.5; /* Will be overriden by ugly hack below */ |
| | 218 | style_markings_opacity: 0.8; /* Will be overriden by ugly hack below */ |
| | 219 | style_show_warnings: yes; /* Will be overriden by ugly hack below */ |
| | 220 | style_show_errors: yes; /* Will be overriden by ugly hack below */ |
| | 221 | style_show_disputed: no; /* Will be overriden by ugly hack below */ |
| | 222 | style_use_svg_turn: yes; /* Will be overriden by ugly hack below */ |
| | 223 | |
| | 224 | /* Ugly hack to make opacity configurable */ |
| | 225 | ugly_lane_opacity: Opacity_lane#000000; |
| | 226 | style_lane_opacity: eval((red(prop(ugly_lane_opacity))+green(prop(ugly_lane_opacity))+blue(prop(ugly_lane_opacity)))/3); |
| | 227 | ugly_sidewalk_opacity: Opacity_sidewalk#808080; |
| | 228 | style_sidewalk_opacity: eval((red(prop(ugly_sidewalk_opacity))+green(prop(ugly_sidewalk_opacity))+blue(prop(ugly_sidewalk_opacity)))/3); |
| | 229 | ugly_markings_opacity: Opacity_markings#CCCCCC; |
| | 230 | style_markings_opacity: eval((red(prop(ugly_markings_opacity))+green(prop(ugly_markings_opacity))+blue(prop(ugly_markings_opacity)))/3); |
| | 231 | |
| | 232 | /* Ugly hack to make boolean configurable */ |
| | 233 | ugly_right_hand_traffic: Boolean_right_hand_traffic#888888; |
| | 234 | /*style_right_hand_traffic: eval(red(prop(ugly_right_hand_traffic)))=1;*/ |
| | 235 | /*style_right_hand_traffic: eval(is_right_hand_traffic());*/ |
| | 236 | style_right_hand_traffic: eval((red(prop(ugly_right_hand_traffic))=1)?yes:((red(prop(ugly_right_hand_traffic))=0)?no:is_right_hand_traffic())); |
| | 237 | ugly_show_warnings: Boolean_show_warnings#FFFFFF; |
| | 238 | style_show_warnings: eval(red(prop(ugly_show_warnings)))=1; |
| | 239 | ugly_show_errors: Boolean_show_errors#FFFFFF; |
| | 240 | style_show_errors: eval(red(prop(ugly_show_errors)))=1; |
| | 241 | ugly_show_disputed: Boolean_show_disputed#000000; |
| | 242 | style_show_disputed: eval(red(prop(ugly_show_disputed)))=1; |
| | 243 | ugly_use_svg_turn: Boolean_use_svg_for_turning_markings#FFFFFF; |
| | 244 | style_use_svg_turn: eval(red(prop(ugly_use_svg_turn)))=1; |
| | 245 | ugly_png_turn_variant: Integer_PNG_turn_variant#000000; |
| | 246 | style_png_turn_variant: eval(round(blue(prop((ugly_png_turn_variant)))*256)); |
| | 247 | ugly_use_svg_destination: Boolean_use_svg_for_destination#FFFFFF; |
| | 248 | style_use_svg_destination: eval(red(prop(ugly_use_svg_destination)))=1; |
| | 249 | |
| | 250 | /* Color of the sidewalk: none (ignored), sidewalk only, cycletrack only, sidewalk and cycletrack */ |
| | 251 | style_sidewalk_color: eval(list(#000000,Sidewalk#808080,Cycletrack#8080C0,Combined_sidewalk_and_cycletrack#C08080)); |
| | 252 | |
| | 253 | /* Color of the dashes if lane is access=no */ |
| | 254 | style_noaccess_color: No_access#FF0000; |
| | 255 | } |
| | 256 | |
| | 257 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 258 | /* Decide which roads should be rendered */ |
| | 259 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 260 | way[lanes][!leisure], |
| | 261 | way[lanes:forward], |
| | 262 | way[lanes:backward], |
| | 263 | way[turn:lanes],way[turn:lanes:forward],way[turn:lanes:backward],way[turn:lanes:both_ways], |
| | 264 | way[change:lanes],way[change:lanes:forward],way[change:lanes:backward],way[change:lanes:both_ways], |
| | 265 | way[sidewalk][highway], |
| | 266 | way[cycleway=track],way[cycleway:left],way[cycleway:right],way[cycleway:both], |
| | 267 | way[destination],way[destination:forward],way[destination:backward] |
| | 268 | { ok: yes; } |
| | 269 | |
| | 270 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 271 | /* One-ways */ |
| | 272 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 273 | way[is_prop_set(ok)] { oneway_type: 0; } |
| | 274 | way[is_prop_set(ok)][oneway?] { oneway_type: 1; } |
| | 275 | way[is_prop_set(ok)][oneway=-1] { oneway_type: -1; } |
| | 276 | way[is_prop_set(ok)][junction=roundabout][!oneway] { oneway_type: 1; } |
| | 277 | |
| | 278 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 279 | /* Overrule left-hand/right-hand traffic */ |
| | 280 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 281 | way[driving_side] |
| | 282 | { |
| | 283 | style_right_hand_traffic: eval((tag(driving_side)="left")?no:yes); |
| | 284 | } |
| | 285 | |
| | 286 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 287 | /* Pixel per metre (on average) */ |
| | 288 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 289 | *|z16 { pixel_per_metre: 0.625; } |
| | 290 | *|z17 { pixel_per_metre: 1.25; } |
| | 291 | *|z18 { pixel_per_metre: 2.5; } |
| | 292 | *|z19 { pixel_per_metre: 5; } |
| | 293 | *|z20 { pixel_per_metre: 10; } |
| | 294 | *|z21 { pixel_per_metre: 20; } |
| | 295 | *|z22 { pixel_per_metre: 40; } |
| | 296 | *|z23 { pixel_per_metre: 80; } |
| | 297 | *|z24 { pixel_per_metre: 160; } |
| | 298 | *|z25 { pixel_per_metre: 320; } |
| | 299 | *|z26- { pixel_per_metre: 640; } |
| | 300 | |
| | 301 | /***************************************************************************************************************************************************/ |
| | 302 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 303 | /* Colors */ |
| | 304 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 305 | /***************************************************************************************************************************************************/ |
| | 306 | way[is_prop_set(ok)] |
| | 307 | { |
| | 308 | /* Base color of the carriage way */ |
| | 309 | /* TODO: obsolete - remove in future release: ground-color: #404040; */ |
| | 310 | |
| | 311 | /* Individual colors for each direction */ |
| | 312 | color_forward: Carriage_way_forward#405A40; |
| | 313 | color_backward: Carriage_way_backward#5A4040; |
| | 314 | color_bothways: Carriage_way_bothways#40405A; |
| | 315 | } |
| | 316 | |
| | 317 | /***************************************************************************************************************************************************/ |
| | 318 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 319 | /* Lane initializiation */ |
| | 320 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 321 | /***************************************************************************************************************************************************/ |
| | 322 | way|z17- {} /* ATTENTION: For whatever reason this is needed, otherwise the following won't be interpreted correctly */ |
| | 323 | way|z17-[is_prop_set(ok)] |
| | 324 | { |
| | 325 | change_forward_1_left: yes; change_forward_1_right: yes; |
| | 326 | change_forward_2_left: yes; change_forward_2_right: yes; |
| | 327 | change_forward_3_left: yes; change_forward_3_right: yes; |
| | 328 | change_forward_4_left: yes; change_forward_4_right: yes; |
| | 329 | change_forward_5_left: yes; change_forward_5_right: yes; |
| | 330 | change_forward_6_left: yes; change_forward_6_right: yes; |
| | 331 | change_forward_7_left: yes; change_forward_7_right: yes; |
| | 332 | change_forward_8_left: yes; change_forward_8_right: yes; |
| | 333 | |
| | 334 | change_backward_1_left: yes; change_backward_1_right: yes; |
| | 335 | change_backward_2_left: yes; change_backward_2_right: yes; |
| | 336 | change_backward_3_left: yes; change_backward_3_right: yes; |
| | 337 | change_backward_4_left: yes; change_backward_4_right: yes; |
| | 338 | change_backward_5_left: yes; change_backward_5_right: yes; |
| | 339 | change_backward_6_left: yes; change_backward_6_right: yes; |
| | 340 | change_backward_7_left: yes; change_backward_7_right: yes; |
| | 341 | change_backward_8_left: yes; change_backward_8_right: yes; |
| | 342 | |
| | 343 | change_bothways_1_left: yes; change_bothways_1_right: yes; |
| | 344 | change_bothways_2_left: yes; change_bothways_2_right: yes; |
| | 345 | change_bothways_3_left: yes; change_bothways_3_right: yes; |
| | 346 | change_bothways_4_left: yes; change_bothways_4_right: yes; |
| | 347 | |
| | 348 | color_forward_1: prop(color_forward); |
| | 349 | color_forward_2: prop(color_forward); |
| | 350 | color_forward_3: prop(color_forward); |
| | 351 | color_forward_4: prop(color_forward); |
| | 352 | color_forward_5: prop(color_forward); |
| | 353 | color_forward_6: prop(color_forward); |
| | 354 | color_forward_7: prop(color_forward); |
| | 355 | color_forward_8: prop(color_forward); |
| | 356 | |
| | 357 | color_backward_1: prop(color_backward); |
| | 358 | color_backward_2: prop(color_backward); |
| | 359 | color_backward_3: prop(color_backward); |
| | 360 | color_backward_4: prop(color_backward); |
| | 361 | color_backward_5: prop(color_backward); |
| | 362 | color_backward_6: prop(color_backward); |
| | 363 | color_backward_7: prop(color_backward); |
| | 364 | color_backward_8: prop(color_backward); |
| | 365 | |
| | 366 | color_bothways_1: prop(color_bothways); |
| | 367 | color_bothways_2: prop(color_bothways); |
| | 368 | color_bothways_3: prop(color_bothways); |
| | 369 | color_bothways_4: prop(color_bothways); |
| | 370 | |
| | 371 | sign_forward_1: ""; sign_backward_1: ""; |
| | 372 | sign_forward_2: ""; sign_backward_2: ""; |
| | 373 | sign_forward_3: ""; sign_backward_3: ""; |
| | 374 | sign_forward_4: ""; sign_backward_4: ""; |
| | 375 | sign_forward_5: ""; sign_backward_5: ""; |
| | 376 | sign_forward_6: ""; sign_backward_6: ""; |
| | 377 | sign_forward_7: ""; sign_backward_7: ""; |
| | 378 | sign_forward_8: ""; sign_backward_8: ""; |
| | 379 | |
| | 380 | tag_lanes_all_min: 9999; tag_lanes_all_max: 0; |
| | 381 | tag_lanes_fwd_min: 9999; tag_lanes_fwd_max: 0; |
| | 382 | tag_lanes_bwd_min: 9999; tag_lanes_bwd_max: 0; |
| | 383 | tag_lanes_both_min: 9999; tag_lanes_both_max: 0; |
| | 384 | } |
| | 385 | |
| | 386 | /***************************************************************************************************************************************************/ |
| | 387 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 388 | /* Determine allowed lane changes */ |
| | 389 | /* TODO: change:lanes without oneway, but only with values yes or no */ |
| | 390 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 391 | /***************************************************************************************************************************************************/ |
| | 392 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 393 | /* Error checking */ |
| | 394 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 395 | way["change"] |
| | 396 | { |
| | 397 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change"))?prop(data_error):"invalid change value"); |
| | 398 | } |
| | 399 | way["change:forward"] |
| | 400 | { |
| | 401 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:forward"))?prop(data_error):"invalid change:forward value"); |
| | 402 | } |
| | 403 | way["change:backward"] |
| | 404 | { |
| | 405 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:backward"))?prop(data_error):"invalid change:backward value"); |
| | 406 | } |
| | 407 | way["change:both_ways"] |
| | 408 | { |
| | 409 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change:both_ways"))?prop(data_error):"invalid change:both_ways value"); |
| | 410 | } |
| | 411 | way["change:lanes"][!(prop(oneway_type)=0)] |
| | 412 | { |
| | 413 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes"))?prop(data_error):"invalid change:lanes value"); |
| | 414 | } |
| | 415 | way["change:lanes"][prop(oneway_type)=0] |
| | 416 | { |
| | 417 | data_error: eval(regexp_test("^(yes|no|\\|)*$",tag("change:lanes"))?prop(data_error):"invalid change:lanes value"); |
| | 418 | } |
| | 419 | way["change:lanes:forward"] |
| | 420 | { |
| | 421 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:forward"))?prop(data_error):"invalid change:lanes:forward value"); |
| | 422 | } |
| | 423 | way["change:lanes:backward"] |
| | 424 | { |
| | 425 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:backward"))?prop(data_error):"invalid change:lanes:backward value"); |
| | 426 | } |
| | 427 | way["change:lanes:both_ways"] |
| | 428 | { |
| | 429 | data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",tag("change:lanes:both_ways"))?prop(data_error):"invalid change:lanes:both_ways value"); |
| | 430 | } |
| | 431 | |
| | 432 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 433 | /* Forward lanes */ |
| | 434 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 435 | way|z17-[is_prop_set(ok)]["change:lanes:forward"], |
| | 436 | way|z17-[is_prop_set(ok)]["change:forward"], |
| | 437 | way|z17-[is_prop_set(ok)]["change:lanes"][prop(oneway_type)=1], |
| | 438 | way|z17-[is_prop_set(ok)]["change"][prop(oneway_type)=1] |
| | 439 | { |
| | 440 | temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"), |
| | 441 | cond(has_tag_key("change:lanes:forward"),tag("change:lanes:forward"),tag("change:forward"))))); |
| | 442 | temp_list: eval(split("|",prop(temp))); |
| | 443 | temp_length: eval(length(prop(temp_list))); |
| | 444 | change_forward_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0))); |
| | 445 | change_forward_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0))); |
| | 446 | change_forward_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1))); |
| | 447 | change_forward_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1))); |
| | 448 | change_forward_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2))); |
| | 449 | change_forward_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2))); |
| | 450 | change_forward_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3))); |
| | 451 | change_forward_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3))); |
| | 452 | change_forward_5_left: eval((prop(temp_length)>4) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),4))); |
| | 453 | change_forward_5_right: eval((prop(temp_length)>4) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),4))); |
| | 454 | change_forward_6_left: eval((prop(temp_length)>5) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),5))); |
| | 455 | change_forward_6_right: eval((prop(temp_length)>5) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),5))); |
| | 456 | change_forward_7_left: eval((prop(temp_length)>6) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),6))); |
| | 457 | change_forward_7_right: eval((prop(temp_length)>6) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),6))); |
| | 458 | change_forward_8_left: eval((prop(temp_length)>7) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),7))); |
| | 459 | change_forward_8_right: eval((prop(temp_length)>7) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),7))); |
| | 460 | |
| | 461 | /* Lane count based on :lanes values */ |
| | 462 | tag_lanes_all_min: eval(has_tag_key("change:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 463 | tag_lanes_all_max: eval(has_tag_key("change:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 464 | tag_lanes_fwd_min: eval(has_tag_key("change:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 465 | tag_lanes_fwd_max: eval(has_tag_key("change:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 466 | } |
| | 467 | |
| | 468 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 469 | /* Backward lanes */ |
| | 470 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 471 | way|z17-[is_prop_set(ok)]["change:lanes:backward"], |
| | 472 | way|z17-[is_prop_set(ok)]["change:backward"], |
| | 473 | way|z17-[is_prop_set(ok)]["change:lanes"][prop(oneway_type)=(-1)], |
| | 474 | way|z17-[is_prop_set(ok)]["change"][prop(oneway_type)=(-1)] |
| | 475 | { |
| | 476 | temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"), |
| | 477 | cond(has_tag_key("change:lanes:backward"),tag("change:lanes:backward"),tag("change:backward"))))); |
| | 478 | temp_list: eval(split("|",prop(temp))); |
| | 479 | temp_length: eval(length(prop(temp_list))); |
| | 480 | change_lanes_bwd: eval(length(prop(temp_list))); |
| | 481 | change_backward_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0))); |
| | 482 | change_backward_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0))); |
| | 483 | change_backward_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1))); |
| | 484 | change_backward_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1))); |
| | 485 | change_backward_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2))); |
| | 486 | change_backward_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2))); |
| | 487 | change_backward_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3))); |
| | 488 | change_backward_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3))); |
| | 489 | change_backward_5_left: eval((prop(temp_length)>4) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),4))); |
| | 490 | change_backward_5_right: eval((prop(temp_length)>4) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),4))); |
| | 491 | change_backward_6_left: eval((prop(temp_length)>5) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),5))); |
| | 492 | change_backward_6_right: eval((prop(temp_length)>5) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),5))); |
| | 493 | change_backward_7_left: eval((prop(temp_length)>6) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),6))); |
| | 494 | change_backward_7_right: eval((prop(temp_length)>6) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),6))); |
| | 495 | change_backward_8_left: eval((prop(temp_length)>7) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),7))); |
| | 496 | change_backward_8_right: eval((prop(temp_length)>7) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),7))); |
| | 497 | |
| | 498 | /* Lane count based on :lanes values */ |
| | 499 | tag_lanes_bwd_min: eval(has_tag_key("change:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 500 | tag_lanes_bwd_max: eval(has_tag_key("change:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 501 | } |
| | 502 | |
| | 503 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 504 | /* Bothways lanes */ |
| | 505 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 506 | way|z17-[is_prop_set(ok)]["change:lanes:both_ways"], |
| | 507 | way|z17-[is_prop_set(ok)]["change:both_ways"] |
| | 508 | { |
| | 509 | temp: eval(cond(has_tag_key("change:lanes:both_ways"),tag("change:lanes:both_ways"),tag("change:both_ways"))); |
| | 510 | temp_list: eval(split("|",prop(temp))); |
| | 511 | temp_length: eval(length(prop(temp_list))); |
| | 512 | |
| | 513 | change_lanes_bth: eval(length(prop(temp_list))); |
| | 514 | change_bothways_1_left: eval((prop(temp_length)>0) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),0))); |
| | 515 | change_bothways_1_right: eval((prop(temp_length)>0) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),0))); |
| | 516 | change_bothways_2_left: eval((prop(temp_length)>1) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),1))); |
| | 517 | change_bothways_2_right: eval((prop(temp_length)>1) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),1))); |
| | 518 | change_bothways_3_left: eval((prop(temp_length)>2) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),2))); |
| | 519 | change_bothways_3_right: eval((prop(temp_length)>2) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),2))); |
| | 520 | change_bothways_4_left: eval((prop(temp_length)>3) && regexp_test("^(yes|only_left|not_right)$",get(prop(temp_list),3))); |
| | 521 | change_bothways_4_right: eval((prop(temp_length)>3) && regexp_test("^(yes|only_right|not_left)$",get(prop(temp_list),3))); |
| | 522 | |
| | 523 | /* Lane count based on :lanes values */ |
| | 524 | tag_lanes_both_min: eval(has_tag_key("change:lanes:both_ways")?min(prop(tag_lanes_both_min),prop(temp_length)):prop(tag_lanes_both_min)); |
| | 525 | tag_lanes_both_max: eval(has_tag_key("change:lanes:both_ways")?max(prop(tag_lanes_both_max),prop(temp_length)):prop(tag_lanes_both_max)); |
| | 526 | } |
| | 527 | |
| | 528 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 529 | /* Extra support for change:lanes=no|no on twoway streets */ |
| | 530 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 531 | way|z17-[is_prop_set(ok)]["change:lanes"="no|no"][prop(oneway_type)=0] |
| | 532 | { |
| | 533 | change_forward_1_left: false; |
| | 534 | change_forward_1_right: false; |
| | 535 | change_backward_1_left: false; |
| | 536 | change_backward_1_right: false; |
| | 537 | |
| | 538 | /* Lane count based on :lanes values */ |
| | 539 | tag_lanes_all_min: eval(min(prop(tag_lanes_all_min),2)); |
| | 540 | tag_lanes_all_max: eval(max(prop(tag_lanes_all_max),2)); |
| | 541 | tag_lanes_fwd_min: eval(min(1,prop(tag_lanes_fwd_min))); |
| | 542 | tag_lanes_fwd_max: eval(max(1,prop(tag_lanes_fwd_max))); |
| | 543 | tag_lanes_bwd_min: eval(min(1,prop(tag_lanes_bwd_min))); |
| | 544 | tag_lanes_bwd_max: eval(max(1,prop(tag_lanes_bwd_max))); |
| | 545 | } |
| | 546 | |
| | 547 | |
| | 548 | /***************************************************************************************************************************************************/ |
| | 549 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 550 | /* Determine turning lanes */ |
| | 551 | /* Note: rendering of "reverse" only when using svg */ |
| | 552 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 553 | /***************************************************************************************************************************************************/ |
| | 554 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 555 | /* Error checking */ |
| | 556 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 557 | way["turn"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn"))?prop(data_error):"invalid turn value"); } |
| | 558 | way["turn:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:forward"))?prop(data_error):"invalid turn:forward value"); } |
| | 559 | way["turn:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:backward"))?prop(data_error):"invalid turn:backward value"); } |
| | 560 | way["turn:both_ways"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:both_ways"))?prop(data_error):"invalid turn:both_ways value"); } |
| | 561 | way["turn:lanes"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes"))?prop(data_error):"invalid turn:lanes value"); } |
| | 562 | way["turn:lanes:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:forward"))?prop(data_error):"invalid turn:lanes:forward value"); } |
| | 563 | way["turn:lanes:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:backward"))?prop(data_error):"invalid turn:lanes:backward value"); } |
| | 564 | way["turn:lanes:both_ways"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:both_ways"))?prop(data_error):"invalid turn:lanes:both_ways value"); } |
| | 565 | |
| | 566 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 567 | /* Forward lanes (standard images) */ |
| | 568 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 569 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:lanes:forward"], |
| | 570 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:forward"], |
| | 571 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:lanes"][prop(oneway_type)=1], |
| | 572 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn"][prop(oneway_type)=1] |
| | 573 | { |
| | 574 | temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"), |
| | 575 | cond(has_tag_key("turn"),tag("turn"), |
| | 576 | cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"), |
| | 577 | tag("turn:forward") |
| | 578 | )))); |
| | 579 | temp_list: eval(split("|",prop(temp))); |
| | 580 | temp_length: eval(length(prop(temp_list))); |
| | 581 | |
| | 582 | t: eval(get(prop(temp_list),0)); |
| | 583 | turn_image_forward_1: eval( |
| | 584 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 585 | ( |
| | 586 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 587 | ( |
| | 588 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 589 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 590 | ) |
| | 591 | ) |
| | 592 | ); |
| | 593 | t: eval(get(prop(temp_list),1)); |
| | 594 | turn_image_forward_2: eval( |
| | 595 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 596 | ( |
| | 597 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 598 | ( |
| | 599 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 600 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 601 | ) |
| | 602 | ) |
| | 603 | ); |
| | 604 | t: eval(get(prop(temp_list),2)); |
| | 605 | turn_image_forward_3: eval( |
| | 606 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 607 | ( |
| | 608 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 609 | ( |
| | 610 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 611 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 612 | ) |
| | 613 | ) |
| | 614 | ); |
| | 615 | t: eval(get(prop(temp_list),3)); |
| | 616 | turn_image_forward_4: eval( |
| | 617 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 618 | ( |
| | 619 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 620 | ( |
| | 621 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 622 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 623 | ) |
| | 624 | ) |
| | 625 | ); |
| | 626 | t: eval(get(prop(temp_list),4)); |
| | 627 | turn_image_forward_5: eval( |
| | 628 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 629 | ( |
| | 630 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 631 | ( |
| | 632 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 633 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 634 | ) |
| | 635 | ) |
| | 636 | ); |
| | 637 | t: eval(get(prop(temp_list),5)); |
| | 638 | turn_image_forward_6: eval( |
| | 639 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 640 | ( |
| | 641 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 642 | ( |
| | 643 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 644 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 645 | ) |
| | 646 | ) |
| | 647 | ); |
| | 648 | t: eval(get(prop(temp_list),6)); |
| | 649 | turn_image_forward_7: eval( |
| | 650 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 651 | ( |
| | 652 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 653 | ( |
| | 654 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 655 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 656 | ) |
| | 657 | ) |
| | 658 | ); |
| | 659 | t: eval(get(prop(temp_list),7)); |
| | 660 | turn_image_forward_8: eval( |
| | 661 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 662 | ( |
| | 663 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward reverse lefthand.png")): |
| | 664 | ( |
| | 665 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 666 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn forward ",prop(t),".png") |
| | 667 | ) |
| | 668 | ) |
| | 669 | ); |
| | 670 | |
| | 671 | /* Lane count based on :lanes values */ |
| | 672 | tag_lanes_all_min: eval(has_tag_key("turn:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 673 | tag_lanes_all_max: eval(has_tag_key("turn:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 674 | tag_lanes_fwd_min: eval(has_tag_key("turn:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 675 | tag_lanes_fwd_max: eval(has_tag_key("turn:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 676 | } |
| | 677 | |
| | 678 | |
| | 679 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 680 | /* Backward lanes (standard images) */ |
| | 681 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 682 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:lanes:backward"], |
| | 683 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:backward"], |
| | 684 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn:lanes"][prop(oneway_type)=(-1)], |
| | 685 | way|z17-[is_prop_set(ok)][!prop(style_use_svg_turn)]["turn"][prop(oneway_type)=(-1)] |
| | 686 | { |
| | 687 | temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"), |
| | 688 | cond(has_tag_key("turn"),tag("turn"), |
| | 689 | cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"), |
| | 690 | tag("turn:backward") |
| | 691 | )))); |
| | 692 | temp_list: eval(split("|",prop(temp))); |
| | 693 | temp_length: eval(length(prop(temp_list))); |
| | 694 | |
| | 695 | t: eval(get(prop(temp_list),0)); |
| | 696 | turn_image_backward_1: eval( |
| | 697 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 698 | ( |
| | 699 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 700 | ( |
| | 701 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 702 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 703 | ) |
| | 704 | ) |
| | 705 | ); |
| | 706 | t: eval(get(prop(temp_list),1)); |
| | 707 | turn_image_backward_2: eval( |
| | 708 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 709 | ( |
| | 710 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 711 | ( |
| | 712 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 713 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 714 | ) |
| | 715 | ) |
| | 716 | ); |
| | 717 | t: eval(get(prop(temp_list),2)); |
| | 718 | turn_image_backward_3: eval( |
| | 719 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 720 | ( |
| | 721 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 722 | ( |
| | 723 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 724 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 725 | ) |
| | 726 | ) |
| | 727 | ); |
| | 728 | t: eval(get(prop(temp_list),3)); |
| | 729 | turn_image_backward_4: eval( |
| | 730 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 731 | ( |
| | 732 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 733 | ( |
| | 734 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 735 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 736 | ) |
| | 737 | ) |
| | 738 | ); |
| | 739 | t: eval(get(prop(temp_list),4)); |
| | 740 | turn_image_backward_5: eval( |
| | 741 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 742 | ( |
| | 743 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 744 | ( |
| | 745 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 746 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 747 | ) |
| | 748 | ) |
| | 749 | ); |
| | 750 | t: eval(get(prop(temp_list),5)); |
| | 751 | turn_image_backward_6: eval( |
| | 752 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 753 | ( |
| | 754 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 755 | ( |
| | 756 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 757 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 758 | ) |
| | 759 | ) |
| | 760 | ); |
| | 761 | t: eval(get(prop(temp_list),6)); |
| | 762 | turn_image_backward_7: eval( |
| | 763 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 764 | ( |
| | 765 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 766 | ( |
| | 767 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 768 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 769 | ) |
| | 770 | ) |
| | 771 | ); |
| | 772 | t: eval(get(prop(temp_list),7)); |
| | 773 | turn_image_backward_8: eval( |
| | 774 | ((prop(t)="none") || (prop(t)=""))?prop(unset_property): |
| | 775 | ( |
| | 776 | (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse righthand.png"):concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward reverse lefthand.png")): |
| | 777 | ( |
| | 778 | regexp_test(".*;.*",prop(t))?concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"): |
| | 779 | concat("images/png/turn-",prop(style_png_turn_variant),"/turn backward ",prop(t),".png") |
| | 780 | ) |
| | 781 | ) |
| | 782 | ); |
| | 783 | |
| | 784 | /* Lane count based on :lanes values */ |
| | 785 | tag_lanes_bwd_min: eval(has_tag_key("turn:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 786 | tag_lanes_bwd_max: eval(has_tag_key("turn:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 787 | } |
| | 788 | |
| | 789 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 790 | /* SVG for turn images */ |
| | 791 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 792 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)] |
| | 793 | { |
| | 794 | turn_svg_through_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5,0,7.5,32.5-10-32.5-10,0,7.5z'/>"); |
| | 795 | turn_svg_slight_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5c11.462-1.0193,18.459,10.285,20.46,13.902l-7.96,4.2,17.5,4.3683,2.5-15-7.753,4.1421c-2.247-4.5-6.12-15.4-24.747-16.6z'/>"); |
| | 796 | turn_svg_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5c6.31-0.505,17.5,5,17.5,10h-10l12.5,12.5,12.5-12.5h-10c0-5-8.43-13.3-22.5-15z'/>"); |
| | 797 | turn_svg_sharp_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15l62.497-4.7c7.5026,0.7633,2.5026,7.1294,0.0026,11.156l-7.5-4.0271,2.5,15,17.5-4.3125-7.878-4.2954c4.3284-6.3921,6.7048-17.943-4.6246-19.263z'/>"); |
| | 798 | turn_svg_slight_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_slight_right_forward),"</g>")); |
| | 799 | turn_svg_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_right_forward),"</g>")); |
| | 800 | turn_svg_sharp_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_sharp_right_forward),"</g>")); |
| | 801 | turn_svg_reverse_right_hand_forward: eval("<path fill='#FFF' d='m0,40,0-15,62.497,4.6294c12.503,0.4,15.003-10,0.003-12.1v5.4671l-16.238-7.9671,16.238-7.5v5c15-2.1079,22.5,22.5-0.003,22.871z'/>"); |
| | 802 | turn_svg_reverse_left_hand_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_reverse_right_hand_forward),"</g>")); |
| | 803 | turn_svg_merge_to_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,50.034-3.7063c7.4655-0.5212,13.016,2.3222,19.541,4.8112l-2.922,6.3951,33.347,5-25-22.5-3.2955,6.6794c-8.1542-5.6073-14.204-7.5071-21.734-7.9779z'/>"); |
| | 804 | turn_svg_merge_to_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_merge_to_right_forward),"</g>")); |
| | 805 | turn_svg_hook_right_forward: eval("<path fill='#FFF' d='m0,22.5,0,15,37.474-2.7759c11.051-1.2406,20.026-5.8731,20.026-15.873,0-5,5-3.8509,13.359-3.8509,9.1412,0,14.141-1.3338,14.141,5v17.5h-10l12.5,12.5,12.5-12.5h-10v-17.5c0-11.271-2.5-12.5-19.23-12.5-15.77,0-20.77,1.351-20.77,11.351,0,5-6.8784,6.8562-12.531,6.4246z'/>"); |
| | 806 | turn_svg_hook_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_hook_right_forward),"</g>")); |
| | 807 | } |
| | 808 | |
| | 809 | |
| | 810 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 811 | /* Forward lanes (SVG) */ |
| | 812 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 813 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:lanes:forward"], |
| | 814 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:forward"], |
| | 815 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:lanes"][prop(oneway_type)=1], |
| | 816 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn"][prop(oneway_type)=1] |
| | 817 | { |
| | 818 | temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"), |
| | 819 | cond(has_tag_key("turn"),tag("turn"), |
| | 820 | cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"), |
| | 821 | tag("turn:forward") |
| | 822 | )))); |
| | 823 | temp_list: eval(split("|",prop(temp))); |
| | 824 | temp_length: eval(length(prop(temp_list))); |
| | 825 | |
| | 826 | turn_image_forward_1: ""; t: eval(get(prop(temp_list),0)); t_scale: 1.0; |
| | 827 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 828 | t_scale_after_through: eval(prop(t_scale)); |
| | 829 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 830 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 831 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 832 | t_scale: eval(prop(t_scale_after_through)); |
| | 833 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 834 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 835 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 836 | turn_image_forward_1: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_1)); |
| | 837 | turn_image_forward_1: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_1)); |
| | 838 | turn_image_forward_1: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_1)); |
| | 839 | turn_image_forward_1: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_1)); |
| | 840 | turn_image_forward_1: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_1)); |
| | 841 | turn_image_forward_1: eval((prop(turn_image_forward_1)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_1),"</g></svg>")); |
| | 842 | |
| | 843 | turn_image_forward_2: ""; t: eval(get(prop(temp_list),1)); t_scale: 1.0; |
| | 844 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 845 | t_scale_after_through: eval(prop(t_scale)); |
| | 846 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 847 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 848 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 849 | t_scale: eval(prop(t_scale_after_through)); |
| | 850 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 851 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 852 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 853 | turn_image_forward_2: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_2)); |
| | 854 | turn_image_forward_2: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_2)); |
| | 855 | turn_image_forward_2: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_2)); |
| | 856 | turn_image_forward_2: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_2)); |
| | 857 | turn_image_forward_2: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_2)); |
| | 858 | turn_image_forward_2: eval((prop(turn_image_forward_2)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_2),"</g></svg>")); |
| | 859 | |
| | 860 | turn_image_forward_3: ""; t: eval(get(prop(temp_list),2)); t_scale: 1.0; |
| | 861 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 862 | t_scale_after_through: eval(prop(t_scale)); |
| | 863 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 864 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 865 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 866 | t_scale: eval(prop(t_scale_after_through)); |
| | 867 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 868 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 869 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 870 | turn_image_forward_3: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_3)); |
| | 871 | turn_image_forward_3: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_3)); |
| | 872 | turn_image_forward_3: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_3)); |
| | 873 | turn_image_forward_3: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_3)); |
| | 874 | turn_image_forward_3: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_3)); |
| | 875 | turn_image_forward_3: eval((prop(turn_image_forward_3)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_3),"</g></svg>")); |
| | 876 | |
| | 877 | turn_image_forward_4: ""; t: eval(get(prop(temp_list),3)); t_scale: 1.0; |
| | 878 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 879 | t_scale_after_through: eval(prop(t_scale)); |
| | 880 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 881 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 882 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 883 | t_scale: eval(prop(t_scale_after_through)); |
| | 884 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 885 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 886 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 887 | turn_image_forward_4: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_4)); |
| | 888 | turn_image_forward_4: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_4)); |
| | 889 | turn_image_forward_4: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_4)); |
| | 890 | turn_image_forward_4: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_4)); |
| | 891 | turn_image_forward_4: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_4)); |
| | 892 | turn_image_forward_4: eval((prop(turn_image_forward_4)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_4),"</g></svg>")); |
| | 893 | |
| | 894 | turn_image_forward_5: ""; t: eval(get(prop(temp_list),4)); t_scale: 1.0; |
| | 895 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 896 | t_scale_after_through: eval(prop(t_scale)); |
| | 897 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 898 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 899 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 900 | t_scale: eval(prop(t_scale_after_through)); |
| | 901 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 902 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 903 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 904 | turn_image_forward_5: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_5)); |
| | 905 | turn_image_forward_5: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_5)); |
| | 906 | turn_image_forward_5: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_5)); |
| | 907 | turn_image_forward_5: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_5)); |
| | 908 | turn_image_forward_5: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_5)); |
| | 909 | turn_image_forward_5: eval((prop(turn_image_forward_5)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_5),"</g></svg>")); |
| | 910 | |
| | 911 | turn_image_forward_6: ""; t: eval(get(prop(temp_list),5)); t_scale: 1.0; |
| | 912 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 913 | t_scale_after_through: eval(prop(t_scale)); |
| | 914 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 915 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 916 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 917 | t_scale: eval(prop(t_scale_after_through)); |
| | 918 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 919 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 920 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 921 | turn_image_forward_6: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_6)); |
| | 922 | turn_image_forward_6: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_6)); |
| | 923 | turn_image_forward_6: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_6)); |
| | 924 | turn_image_forward_6: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_6)); |
| | 925 | turn_image_forward_6: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_6)); |
| | 926 | turn_image_forward_6: eval((prop(turn_image_forward_6)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_6),"</g></svg>")); |
| | 927 | |
| | 928 | turn_image_forward_7: ""; t: eval(get(prop(temp_list),6)); t_scale: 1.0; |
| | 929 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 930 | t_scale_after_through: eval(prop(t_scale)); |
| | 931 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 932 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 933 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 934 | t_scale: eval(prop(t_scale_after_through)); |
| | 935 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 936 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 937 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 938 | turn_image_forward_7: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_7)); |
| | 939 | turn_image_forward_7: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_7)); |
| | 940 | turn_image_forward_7: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_7)); |
| | 941 | turn_image_forward_7: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_7)); |
| | 942 | turn_image_forward_7: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_7)); |
| | 943 | turn_image_forward_7: eval((prop(turn_image_forward_7)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_7),"</g></svg>")); |
| | 944 | |
| | 945 | turn_image_forward_8: ""; t: eval(get(prop(temp_list),7)); t_scale: 1.0; |
| | 946 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 947 | t_scale_after_through: eval(prop(t_scale)); |
| | 948 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 949 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 950 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 951 | t_scale: eval(prop(t_scale_after_through)); |
| | 952 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 953 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 954 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_forward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 955 | turn_image_forward_8: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_8)); |
| | 956 | turn_image_forward_8: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_8)); |
| | 957 | turn_image_forward_8: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_8)); |
| | 958 | turn_image_forward_8: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_8)); |
| | 959 | turn_image_forward_8: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_8)); |
| | 960 | turn_image_forward_8: eval((prop(turn_image_forward_8)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_8),"</g></svg>")); |
| | 961 | |
| | 962 | /* Lane count based on :lanes values */ |
| | 963 | tag_lanes_all_min: eval(has_tag_key("turn:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 964 | tag_lanes_all_max: eval(has_tag_key("turn:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 965 | tag_lanes_fwd_min: eval(has_tag_key("turn:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 966 | tag_lanes_fwd_max: eval(has_tag_key("turn:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 967 | } |
| | 968 | |
| | 969 | |
| | 970 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 971 | /* Backward lanes (SVG) */ |
| | 972 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 973 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:lanes:backward"], |
| | 974 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:backward"], |
| | 975 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:lanes"][prop(oneway_type)=(-1)], |
| | 976 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn"][prop(oneway_type)=(-1)] |
| | 977 | { |
| | 978 | temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"), |
| | 979 | cond(has_tag_key("turn"),tag("turn"), |
| | 980 | cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"), |
| | 981 | tag("turn:backward") |
| | 982 | )))); |
| | 983 | temp_list: eval(split("|",prop(temp))); |
| | 984 | temp_length: eval(length(prop(temp_list))); |
| | 985 | |
| | 986 | turn_image_backward_1: ""; t: eval(get(prop(temp_list),0)); t_scale: 1.0; |
| | 987 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 988 | t_scale_after_through: eval(prop(t_scale)); |
| | 989 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 990 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 991 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 992 | t_scale: eval(prop(t_scale_after_through)); |
| | 993 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 994 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 995 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 996 | turn_image_backward_1: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_1)); |
| | 997 | turn_image_backward_1: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_1)); |
| | 998 | turn_image_backward_1: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_1)); |
| | 999 | turn_image_backward_1: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_1)); |
| | 1000 | turn_image_backward_1: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_1)); |
| | 1001 | turn_image_backward_1: eval((prop(turn_image_backward_1)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_1),"</g></svg>")); |
| | 1002 | |
| | 1003 | turn_image_backward_2: ""; t: eval(get(prop(temp_list),1)); t_scale: 1.0; |
| | 1004 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1005 | t_scale_after_through: eval(prop(t_scale)); |
| | 1006 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1007 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1008 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1009 | t_scale: eval(prop(t_scale_after_through)); |
| | 1010 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1011 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1012 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1013 | turn_image_backward_2: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_2)); |
| | 1014 | turn_image_backward_2: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_2)); |
| | 1015 | turn_image_backward_2: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_2)); |
| | 1016 | turn_image_backward_2: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_2)); |
| | 1017 | turn_image_backward_2: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_2)); |
| | 1018 | turn_image_backward_2: eval((prop(turn_image_backward_2)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_2),"</g></svg>")); |
| | 1019 | |
| | 1020 | turn_image_backward_3: ""; t: eval(get(prop(temp_list),2)); t_scale: 1.0; |
| | 1021 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1022 | t_scale_after_through: eval(prop(t_scale)); |
| | 1023 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1024 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1025 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1026 | t_scale: eval(prop(t_scale_after_through)); |
| | 1027 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1028 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1029 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1030 | turn_image_backward_3: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_3)); |
| | 1031 | turn_image_backward_3: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_3)); |
| | 1032 | turn_image_backward_3: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_3)); |
| | 1033 | turn_image_backward_3: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_3)); |
| | 1034 | turn_image_backward_3: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_3)); |
| | 1035 | turn_image_backward_3: eval((prop(turn_image_backward_3)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_3),"</g></svg>")); |
| | 1036 | |
| | 1037 | turn_image_backward_4: ""; t: eval(get(prop(temp_list),3)); t_scale: 1.0; |
| | 1038 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1039 | t_scale_after_through: eval(prop(t_scale)); |
| | 1040 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1041 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1042 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1043 | t_scale: eval(prop(t_scale_after_through)); |
| | 1044 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1045 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1046 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1047 | turn_image_backward_4: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_4)); |
| | 1048 | turn_image_backward_4: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_4)); |
| | 1049 | turn_image_backward_4: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_4)); |
| | 1050 | turn_image_backward_4: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_4)); |
| | 1051 | turn_image_backward_4: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_4)); |
| | 1052 | turn_image_backward_4: eval((prop(turn_image_backward_4)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_4),"</g></svg>")); |
| | 1053 | |
| | 1054 | turn_image_backward_5: ""; t: eval(get(prop(temp_list),4)); t_scale: 1.0; |
| | 1055 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1056 | t_scale_after_through: eval(prop(t_scale)); |
| | 1057 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1058 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1059 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1060 | t_scale: eval(prop(t_scale_after_through)); |
| | 1061 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1062 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1063 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_5)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1064 | turn_image_backward_5: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_5)); |
| | 1065 | turn_image_backward_5: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_5)); |
| | 1066 | turn_image_backward_5: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_5)); |
| | 1067 | turn_image_backward_5: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_5)); |
| | 1068 | turn_image_backward_5: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_5)); |
| | 1069 | turn_image_backward_5: eval((prop(turn_image_backward_5)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_5),"</g></svg>")); |
| | 1070 | |
| | 1071 | turn_image_backward_6: ""; t: eval(get(prop(temp_list),5)); t_scale: 1.0; |
| | 1072 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1073 | t_scale_after_through: eval(prop(t_scale)); |
| | 1074 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1075 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1076 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1077 | t_scale: eval(prop(t_scale_after_through)); |
| | 1078 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1079 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1080 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_6)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1081 | turn_image_backward_6: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_6)); |
| | 1082 | turn_image_backward_6: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_6)); |
| | 1083 | turn_image_backward_6: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_6)); |
| | 1084 | turn_image_backward_6: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_6)); |
| | 1085 | turn_image_backward_6: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_6)); |
| | 1086 | turn_image_backward_6: eval((prop(turn_image_backward_6)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_6),"</g></svg>")); |
| | 1087 | |
| | 1088 | turn_image_backward_7: ""; t: eval(get(prop(temp_list),6)); t_scale: 1.0; |
| | 1089 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1090 | t_scale_after_through: eval(prop(t_scale)); |
| | 1091 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1092 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1093 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1094 | t_scale: eval(prop(t_scale_after_through)); |
| | 1095 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1096 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1097 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_7)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1098 | turn_image_backward_7: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_7)); |
| | 1099 | turn_image_backward_7: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_7)); |
| | 1100 | turn_image_backward_7: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_7)); |
| | 1101 | turn_image_backward_7: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_7)); |
| | 1102 | turn_image_backward_7: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_7)); |
| | 1103 | turn_image_backward_7: eval((prop(turn_image_backward_7)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_7),"</g></svg>")); |
| | 1104 | |
| | 1105 | turn_image_backward_8: ""; t: eval(get(prop(temp_list),7)); t_scale: 1.0; |
| | 1106 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1107 | t_scale_after_through: eval(prop(t_scale)); |
| | 1108 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1109 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1110 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1111 | t_scale: eval(prop(t_scale_after_through)); |
| | 1112 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1113 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1114 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_backward_8)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1115 | turn_image_backward_8: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_8)); |
| | 1116 | turn_image_backward_8: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_8)); |
| | 1117 | turn_image_backward_8: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_8)); |
| | 1118 | turn_image_backward_8: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_8)); |
| | 1119 | turn_image_backward_8: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_8)); |
| | 1120 | turn_image_backward_8: eval((prop(turn_image_backward_8)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_8),"</g></svg>")); |
| | 1121 | |
| | 1122 | /* Lane count based on :lanes values */ |
| | 1123 | tag_lanes_bwd_min: eval(has_tag_key("turn:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1124 | tag_lanes_bwd_max: eval(has_tag_key("turn:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1125 | } |
| | 1126 | |
| | 1127 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1128 | /* Both-way lanes (SVG) */ |
| | 1129 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1130 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:lanes:both_ways"], |
| | 1131 | way|z17-[is_prop_set(ok)][prop(style_use_svg_turn)]["turn:both_ways"] |
| | 1132 | { |
| | 1133 | temp: eval(cond(has_tag_key("turn:lanes:both_ways"),tag("turn:lanes:both_ways"),tag("turn:both_ways"))); |
| | 1134 | temp_list: eval(split("|",prop(temp))); |
| | 1135 | temp_length: eval(length(prop(temp_list))); |
| | 1136 | |
| | 1137 | turn_image_bothways_1: ""; t: eval(get(prop(temp_list),0)); t_scale: 1.0; |
| | 1138 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1139 | t_scale_after_through: eval(prop(t_scale)); |
| | 1140 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1141 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1142 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1143 | t_scale: eval(prop(t_scale_after_through)); |
| | 1144 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1145 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1146 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_bothways_1: eval(prop(t_test)?concat(prop(turn_image_bothways_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_bothways_1)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1147 | turn_image_bothways_1: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_bothways_1),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_bothways_1)); |
| | 1148 | turn_image_bothways_1: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_1),prop(turn_svg_merge_to_right_forward)):prop(turn_image_bothways_1)); |
| | 1149 | turn_image_bothways_1: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_1),prop(turn_svg_merge_to_left_forward)):prop(turn_image_bothways_1)); |
| | 1150 | turn_image_bothways_1: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_1),prop(turn_svg_hook_right_forward)):prop(turn_image_bothways_1)); |
| | 1151 | turn_image_bothways_1: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_1),prop(turn_svg_hook_left_forward)):prop(turn_image_bothways_1)); |
| | 1152 | turn_image_bothways_1: eval((prop(turn_image_bothways_1)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='200px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_bothways_1),"</g><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25) translate(-100 0)'>",prop(turn_image_bothways_1),"</g></svg>")); |
| | 1153 | |
| | 1154 | turn_image_bothways_2: ""; t: eval(get(prop(temp_list),1)); t_scale: 1.0; |
| | 1155 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1156 | t_scale_after_through: eval(prop(t_scale)); |
| | 1157 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1158 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1159 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1160 | t_scale: eval(prop(t_scale_after_through)); |
| | 1161 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1162 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1163 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_bothways_2: eval(prop(t_test)?concat(prop(turn_image_bothways_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_bothways_2)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1164 | turn_image_bothways_2: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_bothways_2),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_bothways_2)); |
| | 1165 | turn_image_bothways_2: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_2),prop(turn_svg_merge_to_right_forward)):prop(turn_image_bothways_2)); |
| | 1166 | turn_image_bothways_2: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_2),prop(turn_svg_merge_to_left_forward)):prop(turn_image_bothways_2)); |
| | 1167 | turn_image_bothways_2: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_2),prop(turn_svg_hook_right_forward)):prop(turn_image_bothways_2)); |
| | 1168 | turn_image_bothways_2: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_2),prop(turn_svg_hook_left_forward)):prop(turn_image_bothways_2)); |
| | 1169 | turn_image_bothways_2: eval((prop(turn_image_bothways_2)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='200px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_bothways_2),"</g><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25) translate(-100 0)'>",prop(turn_image_bothways_2),"</g></svg>")); |
| | 1170 | |
| | 1171 | turn_image_bothways_3: ""; t: eval(get(prop(temp_list),2)); t_scale: 1.0; |
| | 1172 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1173 | t_scale_after_through: eval(prop(t_scale)); |
| | 1174 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1175 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1176 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1177 | t_scale: eval(prop(t_scale_after_through)); |
| | 1178 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1179 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1180 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_bothways_3: eval(prop(t_test)?concat(prop(turn_image_bothways_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_bothways_3)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1181 | turn_image_bothways_3: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_bothways_3),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_bothways_3)); |
| | 1182 | turn_image_bothways_3: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_3),prop(turn_svg_merge_to_right_forward)):prop(turn_image_bothways_3)); |
| | 1183 | turn_image_bothways_3: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_3),prop(turn_svg_merge_to_left_forward)):prop(turn_image_bothways_3)); |
| | 1184 | turn_image_bothways_3: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_3),prop(turn_svg_hook_right_forward)):prop(turn_image_bothways_3)); |
| | 1185 | turn_image_bothways_3: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_3),prop(turn_svg_hook_left_forward)):prop(turn_image_bothways_3)); |
| | 1186 | turn_image_bothways_3: eval((prop(turn_image_bothways_3)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='200px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_bothways_3),"</g><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25) translate(-100 0)'>",prop(turn_image_bothways_3),"</g></svg>")); |
| | 1187 | |
| | 1188 | turn_image_bothways_4: ""; t: eval(get(prop(temp_list),3)); t_scale: 1.0; |
| | 1189 | t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?prop(turn_svg_through_forward): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1190 | t_scale_after_through: eval(prop(t_scale)); |
| | 1191 | t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1192 | t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1193 | t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1194 | t_scale: eval(prop(t_scale_after_through)); |
| | 1195 | t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1196 | t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1197 | t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t))); turn_image_bothways_4: eval(prop(t_test)?concat(prop(turn_image_bothways_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"): prop(turn_image_bothways_4)); t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale)); |
| | 1198 | turn_image_bothways_4: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_bothways_4),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_bothways_4)); |
| | 1199 | turn_image_bothways_4: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_4),prop(turn_svg_merge_to_right_forward)):prop(turn_image_bothways_4)); |
| | 1200 | turn_image_bothways_4: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_4),prop(turn_svg_merge_to_left_forward)):prop(turn_image_bothways_4)); |
| | 1201 | turn_image_bothways_4: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_bothways_4),prop(turn_svg_hook_right_forward)):prop(turn_image_bothways_4)); |
| | 1202 | turn_image_bothways_4: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_bothways_4),prop(turn_svg_hook_left_forward)):prop(turn_image_bothways_4)); |
| | 1203 | turn_image_bothways_4: eval((prop(turn_image_bothways_4)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='200px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_bothways_4),"</g><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25) translate(-100 0)'>",prop(turn_image_bothways_4),"</g></svg>")); |
| | 1204 | } |
| | 1205 | |
| | 1206 | /***************************************************************************************************************************************************/ |
| | 1207 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1208 | /* Lane access */ |
| | 1209 | /* The property restriction_color_xxx will be overwritten by later rules */ |
| | 1210 | /* TODO: both_ways is not implemented */ |
| | 1211 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1212 | /***************************************************************************************************************************************************/ |
| | 1213 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1214 | /* Access=no forward lanes */ |
| | 1215 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1216 | way|z17-[is_prop_set(ok)]["access:lanes:forward"], |
| | 1217 | way|z17-[is_prop_set(ok)]["access:forward"], |
| | 1218 | way|z17-[is_prop_set(ok)]["access:lanes"][prop(oneway_type)=1], |
| | 1219 | way|z17-[is_prop_set(ok)]["access"][prop(oneway_type)=1] |
| | 1220 | { |
| | 1221 | temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1222 | cond(has_tag_key("access"),tag("access"), |
| | 1223 | cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"), |
| | 1224 | tag("access:forward") |
| | 1225 | )))); |
| | 1226 | temp_list: eval(split("|",prop(temp))); |
| | 1227 | temp_length: eval(length(prop(temp_list))); |
| | 1228 | restriction_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_1)); |
| | 1229 | restriction_color_forward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_2)); |
| | 1230 | restriction_color_forward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_3)); |
| | 1231 | restriction_color_forward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_4)); |
| | 1232 | restriction_color_forward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_5)); |
| | 1233 | restriction_color_forward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_6)); |
| | 1234 | restriction_color_forward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_7)); |
| | 1235 | restriction_color_forward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_8)); |
| | 1236 | |
| | 1237 | /* Lane count based on :lanes values */ |
| | 1238 | tag_lanes_all_min: eval(has_tag_key("access:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1239 | tag_lanes_all_max: eval(has_tag_key("access:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1240 | tag_lanes_fwd_min: eval(has_tag_key("access:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1241 | tag_lanes_fwd_max: eval(has_tag_key("access:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1242 | } |
| | 1243 | |
| | 1244 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1245 | /* Access=no backward lanes */ |
| | 1246 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1247 | way|z17-[is_prop_set(ok)]["access:lanes:backward"], |
| | 1248 | way|z17-[is_prop_set(ok)]["access:backward"], |
| | 1249 | way|z17-[is_prop_set(ok)]["access:lanes"][prop(oneway_type)=(-1)], |
| | 1250 | way|z17-[is_prop_set(ok)]["access"][prop(oneway_type)=(-1)] |
| | 1251 | { |
| | 1252 | temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1253 | cond(has_tag_key("access"),tag("access"), |
| | 1254 | cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"), |
| | 1255 | tag("access:backward") |
| | 1256 | )))); |
| | 1257 | temp_list: eval(split("|",prop(temp))); |
| | 1258 | temp_length: eval(length(prop(temp_list))); |
| | 1259 | restriction_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_1)); |
| | 1260 | restriction_color_backward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_2)); |
| | 1261 | restriction_color_backward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_3)); |
| | 1262 | restriction_color_backward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_4)); |
| | 1263 | restriction_color_backward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_5)); |
| | 1264 | restriction_color_backward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_6)); |
| | 1265 | restriction_color_backward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_7)); |
| | 1266 | restriction_color_backward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_8)); |
| | 1267 | |
| | 1268 | /* Lane count based on :lanes values */ |
| | 1269 | tag_lanes_all_min: eval(has_tag_key("access:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1270 | tag_lanes_all_max: eval(has_tag_key("access:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1271 | tag_lanes_bwd_min: eval(has_tag_key("access:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1272 | tag_lanes_bwd_max: eval(has_tag_key("access:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1273 | } |
| | 1274 | |
| | 1275 | /***************************************************************************************************************************************************/ |
| | 1276 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1277 | /* Lane designation */ |
| | 1278 | /* TODO: both_ways is not implemented */ |
| | 1279 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1280 | /***************************************************************************************************************************************************/ |
| | 1281 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1282 | /* Bus forward lanes */ |
| | 1283 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1284 | way|z17-[is_prop_set(ok)]["bus:lanes:forward"], |
| | 1285 | way|z17-[is_prop_set(ok)]["bus:forward"], |
| | 1286 | way|z17-[is_prop_set(ok)]["bus:lanes"][prop(oneway_type)=1], |
| | 1287 | way|z17-[is_prop_set(ok)]["bus"][prop(oneway_type)=1] |
| | 1288 | { |
| | 1289 | temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"), |
| | 1290 | cond(has_tag_key("bus"),tag("bus"), |
| | 1291 | cond(has_tag_key("bus:lanes:forward"),tag("bus:lanes:forward"), |
| | 1292 | tag("bus:forward") |
| | 1293 | )))); |
| | 1294 | temp_list: eval(split("|",prop(temp))); |
| | 1295 | temp_length: eval(length(prop(temp_list))); |
| | 1296 | tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1297 | cond(has_tag_key("access"),tag("access"), |
| | 1298 | cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"), |
| | 1299 | tag("access:forward") |
| | 1300 | )))); |
| | 1301 | tempa_list: eval(split("|",prop(tempa))); |
| | 1302 | tempa_length: eval(length(prop(tempa_list))); |
| | 1303 | |
| | 1304 | sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/bus forward.png"):prop(sign_forward_1)); |
| | 1305 | sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/bus forward.png"):prop(sign_forward_2)); |
| | 1306 | sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/bus forward.png"):prop(sign_forward_3)); |
| | 1307 | sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/bus forward.png"):prop(sign_forward_4)); |
| | 1308 | sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/bus forward.png"):prop(sign_forward_5)); |
| | 1309 | sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/bus forward.png"):prop(sign_forward_6)); |
| | 1310 | sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/bus forward.png"):prop(sign_forward_7)); |
| | 1311 | sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/bus forward.png"):prop(sign_forward_8)); |
| | 1312 | |
| | 1313 | /* Lane count based on :lanes values */ |
| | 1314 | tag_lanes_all_min: eval(has_tag_key("bus:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1315 | tag_lanes_all_max: eval(has_tag_key("bus:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1316 | tag_lanes_fwd_min: eval(has_tag_key("bus:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1317 | tag_lanes_fwd_max: eval(has_tag_key("bus:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1318 | } |
| | 1319 | |
| | 1320 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1321 | /* Bus backward lanes */ |
| | 1322 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1323 | way|z17-[is_prop_set(ok)]["bus:lanes:backward"], |
| | 1324 | way|z17-[is_prop_set(ok)]["bus:backward"], |
| | 1325 | way|z17-[is_prop_set(ok)]["bus:lanes"][prop(oneway_type)=(-1)], |
| | 1326 | way|z17-[is_prop_set(ok)]["bus"][prop(oneway_type)=(-1)] |
| | 1327 | { |
| | 1328 | temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"), |
| | 1329 | cond(has_tag_key("bus"),tag("bus"), |
| | 1330 | cond(has_tag_key("bus:lanes:backward"),tag("bus:lanes:backward"), |
| | 1331 | tag("bus:backward") |
| | 1332 | )))); |
| | 1333 | temp_list: eval(split("|",prop(temp))); |
| | 1334 | temp_length: eval(length(prop(temp_list))); |
| | 1335 | /* TODO: oneway=-1*/ |
| | 1336 | tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward"))); |
| | 1337 | tempa_list: eval(split("|",prop(tempa))); |
| | 1338 | tempa_length: eval(length(prop(tempa_list))); |
| | 1339 | |
| | 1340 | sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/bus backward.png"):prop(sign_backward_1)); |
| | 1341 | sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/bus backward.png"):prop(sign_backward_2)); |
| | 1342 | sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/bus backward.png"):prop(sign_backward_3)); |
| | 1343 | sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/bus backward.png"):prop(sign_backward_4)); |
| | 1344 | sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/bus backward.png"):prop(sign_backward_5)); |
| | 1345 | sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/bus backward.png"):prop(sign_backward_6)); |
| | 1346 | sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/bus backward.png"):prop(sign_backward_7)); |
| | 1347 | sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/bus backward.png"):prop(sign_backward_8)); |
| | 1348 | |
| | 1349 | /* Lane count based on :lanes values */ |
| | 1350 | tag_lanes_bwd_min: eval(has_tag_key("bus:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1351 | tag_lanes_bwd_max: eval(has_tag_key("bus:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1352 | } |
| | 1353 | |
| | 1354 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1355 | /* Taxi forward lanes */ |
| | 1356 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1357 | way|z17-[is_prop_set(ok)]["taxi:lanes:forward"], |
| | 1358 | way|z17-[is_prop_set(ok)]["taxi:forward"], |
| | 1359 | way|z17-[is_prop_set(ok)]["taxi:lanes"][prop(oneway_type)=1], |
| | 1360 | way|z17-[is_prop_set(ok)]["taxi"][prop(oneway_type)=1] |
| | 1361 | { |
| | 1362 | temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"), |
| | 1363 | cond(has_tag_key("taxi"),tag("taxi"), |
| | 1364 | cond(has_tag_key("taxi:lanes:forward"),tag("taxi:lanes:forward"), |
| | 1365 | tag("taxi:forward") |
| | 1366 | )))); |
| | 1367 | temp_list: eval(split("|",prop(temp))); |
| | 1368 | temp_length: eval(length(prop(temp_list))); |
| | 1369 | tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1370 | cond(has_tag_key("access"),tag("access"), |
| | 1371 | cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"), |
| | 1372 | tag("access:forward") |
| | 1373 | )))); |
| | 1374 | tempa_list: eval(split("|",prop(tempa))); |
| | 1375 | tempa_length: eval(length(prop(tempa_list))); |
| | 1376 | |
| | 1377 | sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/taxi forward.png"):prop(sign_forward_1)); |
| | 1378 | sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/taxi forward.png"):prop(sign_forward_2)); |
| | 1379 | sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/taxi forward.png"):prop(sign_forward_3)); |
| | 1380 | sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/taxi forward.png"):prop(sign_forward_4)); |
| | 1381 | sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/taxi forward.png"):prop(sign_forward_5)); |
| | 1382 | sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/taxi forward.png"):prop(sign_forward_6)); |
| | 1383 | sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/taxi forward.png"):prop(sign_forward_7)); |
| | 1384 | sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/taxi forward.png"):prop(sign_forward_8)); |
| | 1385 | |
| | 1386 | /* Lane count based on :lanes values */ |
| | 1387 | tag_lanes_all_min: eval(has_tag_key("taxi:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1388 | tag_lanes_all_max: eval(has_tag_key("taxi:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1389 | tag_lanes_fwd_min: eval(has_tag_key("taxi:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1390 | tag_lanes_fwd_max: eval(has_tag_key("taxi:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1391 | } |
| | 1392 | |
| | 1393 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1394 | /* Taxi backward lanes */ |
| | 1395 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1396 | way|z17-[is_prop_set(ok)]["taxi:lanes:backward"], |
| | 1397 | way|z17-[is_prop_set(ok)]["taxi:backward"], |
| | 1398 | way|z17-[is_prop_set(ok)]["taxi:lanes"][prop(oneway_type)=(-1)], |
| | 1399 | way|z17-[is_prop_set(ok)]["taxi"][prop(oneway_type)=(-1)] |
| | 1400 | { |
| | 1401 | temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"), |
| | 1402 | cond(has_tag_key("taxi"),tag("taxi"), |
| | 1403 | cond(has_tag_key("taxi:lanes:backward"),tag("taxi:lanes:backward"), |
| | 1404 | tag("taxi:backward") |
| | 1405 | )))); |
| | 1406 | temp_list: eval(split("|",prop(temp))); |
| | 1407 | temp_length: eval(length(prop(temp_list))); |
| | 1408 | /* TODO: oneway=-1*/ |
| | 1409 | tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward"))); |
| | 1410 | tempa_list: eval(split("|",prop(tempa))); |
| | 1411 | tempa_length: eval(length(prop(tempa_list))); |
| | 1412 | |
| | 1413 | sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/taxi backward.png"):prop(sign_backward_1)); |
| | 1414 | sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/taxi backward.png"):prop(sign_backward_2)); |
| | 1415 | sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/taxi backward.png"):prop(sign_backward_3)); |
| | 1416 | sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/taxi backward.png"):prop(sign_backward_4)); |
| | 1417 | sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/taxi backward.png"):prop(sign_backward_5)); |
| | 1418 | sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/taxi backward.png"):prop(sign_backward_6)); |
| | 1419 | sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/taxi backward.png"):prop(sign_backward_7)); |
| | 1420 | sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/taxi backward.png"):prop(sign_backward_8)); |
| | 1421 | |
| | 1422 | /* Lane count based on :lanes values */ |
| | 1423 | tag_lanes_bwd_min: eval(has_tag_key("taxi:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1424 | tag_lanes_bwd_max: eval(has_tag_key("taxi:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1425 | } |
| | 1426 | |
| | 1427 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1428 | /* PSV forward lanes */ |
| | 1429 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1430 | way|z17-[is_prop_set(ok)]["psv:lanes:forward"], |
| | 1431 | way|z17-[is_prop_set(ok)]["psv:forward"], |
| | 1432 | way|z17-[is_prop_set(ok)]["psv:lanes"][prop(oneway_type)=1], |
| | 1433 | way|z17-[is_prop_set(ok)]["psv"][prop(oneway_type)=1] |
| | 1434 | { |
| | 1435 | temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"), |
| | 1436 | cond(has_tag_key("psv"),tag("psv"), |
| | 1437 | cond(has_tag_key("psv:lanes:forward"),tag("psv:lanes:forward"), |
| | 1438 | tag("psv:forward") |
| | 1439 | )))); |
| | 1440 | temp_list: eval(split("|",prop(temp))); |
| | 1441 | temp_length: eval(length(prop(temp_list))); |
| | 1442 | tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1443 | cond(has_tag_key("access"),tag("access"), |
| | 1444 | cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"), |
| | 1445 | tag("access:forward") |
| | 1446 | )))); |
| | 1447 | tempa_list: eval(split("|",prop(tempa))); |
| | 1448 | tempa_length: eval(length(prop(tempa_list))); |
| | 1449 | |
| | 1450 | sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/psv forward.png"):prop(sign_forward_1)); |
| | 1451 | sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/psv forward.png"):prop(sign_forward_2)); |
| | 1452 | sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/psv forward.png"):prop(sign_forward_3)); |
| | 1453 | sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/psv forward.png"):prop(sign_forward_4)); |
| | 1454 | sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/psv forward.png"):prop(sign_forward_5)); |
| | 1455 | sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/psv forward.png"):prop(sign_forward_6)); |
| | 1456 | sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/psv forward.png"):prop(sign_forward_7)); |
| | 1457 | sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/psv forward.png"):prop(sign_forward_8)); |
| | 1458 | |
| | 1459 | /* Lane count based on :lanes values */ |
| | 1460 | tag_lanes_all_min: eval(has_tag_key("psv:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1461 | tag_lanes_all_max: eval(has_tag_key("psv:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1462 | tag_lanes_fwd_min: eval(has_tag_key("psv:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1463 | tag_lanes_fwd_max: eval(has_tag_key("psv:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1464 | } |
| | 1465 | |
| | 1466 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1467 | /* PSV backward lanes */ |
| | 1468 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1469 | way|z17-[is_prop_set(ok)]["psv:lanes:backward"], |
| | 1470 | way|z17-[is_prop_set(ok)]["psv:backward"], |
| | 1471 | way|z17-[is_prop_set(ok)]["psv:lanes"][prop(oneway_type)=(-1)], |
| | 1472 | way|z17-[is_prop_set(ok)]["psv"][prop(oneway_type)=(-1)] |
| | 1473 | { |
| | 1474 | temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"), |
| | 1475 | cond(has_tag_key("psv"),tag("psv"), |
| | 1476 | cond(has_tag_key("psv:lanes:backward"),tag("psv:lanes:backward"), |
| | 1477 | tag("psv:backward") |
| | 1478 | )))); |
| | 1479 | temp_list: eval(split("|",prop(temp))); |
| | 1480 | temp_length: eval(length(prop(temp_list))); |
| | 1481 | /* TODO: oneway=-1*/ |
| | 1482 | tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward"))); |
| | 1483 | tempa_list: eval(split("|",prop(tempa))); |
| | 1484 | tempa_length: eval(length(prop(tempa_list))); |
| | 1485 | |
| | 1486 | sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/psv backward.png"):prop(sign_backward_1)); |
| | 1487 | sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/psv backward.png"):prop(sign_backward_2)); |
| | 1488 | sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/psv backward.png"):prop(sign_backward_3)); |
| | 1489 | sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/psv backward.png"):prop(sign_backward_4)); |
| | 1490 | sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/psv backward.png"):prop(sign_backward_5)); |
| | 1491 | sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/psv backward.png"):prop(sign_backward_6)); |
| | 1492 | sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/psv backward.png"):prop(sign_backward_7)); |
| | 1493 | sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/psv backward.png"):prop(sign_backward_8)); |
| | 1494 | |
| | 1495 | /* Lane count based on :lanes values */ |
| | 1496 | tag_lanes_bwd_min: eval(has_tag_key("psv:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1497 | tag_lanes_bwd_max: eval(has_tag_key("psv:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1498 | } |
| | 1499 | |
| | 1500 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1501 | /* Bicycle forward lanes */ |
| | 1502 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1503 | way|z17-[is_prop_set(ok)]["bicycle:lanes:forward"], |
| | 1504 | way|z17-[is_prop_set(ok)]["bicycle:forward"], |
| | 1505 | way|z17-[is_prop_set(ok)]["bicycle:lanes"][prop(oneway_type)=1], |
| | 1506 | way|z17-[is_prop_set(ok)]["bicycle"][prop(oneway_type)=1] |
| | 1507 | { |
| | 1508 | temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"), |
| | 1509 | cond(has_tag_key("bicycle"),tag("bicycle"), |
| | 1510 | cond(has_tag_key("bicycle:lanes:forward"),tag("bicycle:lanes:forward"), |
| | 1511 | tag("bicycle:forward") |
| | 1512 | )))); |
| | 1513 | temp_list: eval(split("|",prop(temp))); |
| | 1514 | temp_length: eval(length(prop(temp_list))); |
| | 1515 | tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"), |
| | 1516 | cond(has_tag_key("access"),tag("access"), |
| | 1517 | cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"), |
| | 1518 | tag("access:forward") |
| | 1519 | )))); |
| | 1520 | tempa_list: eval(split("|",prop(tempa))); |
| | 1521 | tempa_length: eval(length(prop(tempa_list))); |
| | 1522 | |
| | 1523 | sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/bicycle forward.png"):prop(sign_forward_1)); |
| | 1524 | sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/bicycle forward.png"):prop(sign_forward_2)); |
| | 1525 | sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/bicycle forward.png"):prop(sign_forward_3)); |
| | 1526 | sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/bicycle forward.png"):prop(sign_forward_4)); |
| | 1527 | sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/bicycle forward.png"):prop(sign_forward_5)); |
| | 1528 | sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/bicycle forward.png"):prop(sign_forward_6)); |
| | 1529 | sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/bicycle forward.png"):prop(sign_forward_7)); |
| | 1530 | sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/bicycle forward.png"):prop(sign_forward_8)); |
| | 1531 | |
| | 1532 | /* Lane count based on :lanes values */ |
| | 1533 | tag_lanes_all_min: eval(has_tag_key("bicycle:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1534 | tag_lanes_all_max: eval(has_tag_key("bicycle:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1535 | tag_lanes_fwd_min: eval(has_tag_key("bicycle:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1536 | tag_lanes_fwd_max: eval(has_tag_key("bicycle:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1537 | } |
| | 1538 | |
| | 1539 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1540 | /* Bicycle backward lanes */ |
| | 1541 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1542 | way|z17-[is_prop_set(ok)]["bicycle:lanes:backward"], |
| | 1543 | way|z17-[is_prop_set(ok)]["bicycle:backward"], |
| | 1544 | way|z17-[is_prop_set(ok)]["bicycle:lanes"][prop(oneway_type)=(-1)], |
| | 1545 | way|z17-[is_prop_set(ok)]["bicycle"][prop(oneway_type)=(-1)] |
| | 1546 | { |
| | 1547 | temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"), |
| | 1548 | cond(has_tag_key("bicycle"),tag("bicycle"), |
| | 1549 | cond(has_tag_key("bicycle:lanes:backward"),tag("bicycle:lanes:backward"), |
| | 1550 | tag("bicycle:backward") |
| | 1551 | )))); |
| | 1552 | temp_list: eval(split("|",prop(temp))); |
| | 1553 | temp_length: eval(length(prop(temp_list))); |
| | 1554 | /* TODO: oneway=-1*/ |
| | 1555 | tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward"))); |
| | 1556 | tempa_list: eval(split("|",prop(tempa))); |
| | 1557 | tempa_length: eval(length(prop(tempa_list))); |
| | 1558 | |
| | 1559 | sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/bicycle backward.png"):prop(sign_backward_1)); |
| | 1560 | sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/bicycle backward.png"):prop(sign_backward_2)); |
| | 1561 | sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/bicycle backward.png"):prop(sign_backward_3)); |
| | 1562 | sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/bicycle backward.png"):prop(sign_backward_4)); |
| | 1563 | sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/bicycle backward.png"):prop(sign_backward_5)); |
| | 1564 | sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/bicycle backward.png"):prop(sign_backward_6)); |
| | 1565 | sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/bicycle backward.png"):prop(sign_backward_7)); |
| | 1566 | sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/bicycle backward.png"):prop(sign_backward_8)); |
| | 1567 | |
| | 1568 | /* Lane count based on :lanes values */ |
| | 1569 | tag_lanes_bwd_min: eval(has_tag_key("bicycle:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1570 | tag_lanes_bwd_max: eval(has_tag_key("bicycle:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1571 | } |
| | 1572 | |
| | 1573 | |
| | 1574 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1575 | /* HOV forward lanes */ |
| | 1576 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1577 | way|z17-[is_prop_set(ok)]["hov:lanes:forward"], |
| | 1578 | way|z17-[is_prop_set(ok)]["hov:forward"], |
| | 1579 | way|z17-[is_prop_set(ok)]["hov:lanes"][prop(oneway_type)=1], |
| | 1580 | way|z17-[is_prop_set(ok)]["hov"][prop(oneway_type)=1] |
| | 1581 | { |
| | 1582 | temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"), |
| | 1583 | cond(has_tag_key("hov:lanes:forward"),tag("hov:lanes:forward"), |
| | 1584 | cond(has_tag_key("hov"),tag("hov"), |
| | 1585 | tag("hov:forward") |
| | 1586 | )))); |
| | 1587 | temp_list: eval(split("|",prop(temp))); |
| | 1588 | temp_length: eval(length(prop(temp_list))); |
| | 1589 | hov_minimum: eval(has_tag_key("hov:minimum:forward")?tag("hov:minimum:forward"):(has_tag_key("hov:minimum")?tag("hov:minimum"):0)); |
| | 1590 | hov_image: eval((prop(hov_minimum)=2)?";images/hov2 forward.png":((prop(hov_minimum)=3)?";images/hov3 forward.png":";images/hov forward.png")); |
| | 1591 | |
| | 1592 | t: eval(get(prop(temp_list),0)); |
| | 1593 | sign_forward_1: eval(((prop(temp_length)>0) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_1),prop(hov_image)):prop(sign_forward_1)); |
| | 1594 | t: eval(get(prop(temp_list),1)); |
| | 1595 | sign_forward_2: eval(((prop(temp_length)>1) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_2),prop(hov_image)):prop(sign_forward_2)); |
| | 1596 | t: eval(get(prop(temp_list),2)); |
| | 1597 | sign_forward_3: eval(((prop(temp_length)>2) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_3),prop(hov_image)):prop(sign_forward_3)); |
| | 1598 | t: eval(get(prop(temp_list),3)); |
| | 1599 | sign_forward_4: eval(((prop(temp_length)>3) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_4),prop(hov_image)):prop(sign_forward_4)); |
| | 1600 | t: eval(get(prop(temp_list),4)); |
| | 1601 | sign_forward_5: eval(((prop(temp_length)>4) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_5),prop(hov_image)):prop(sign_forward_5)); |
| | 1602 | t: eval(get(prop(temp_list),5)); |
| | 1603 | sign_forward_6: eval(((prop(temp_length)>5) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_6),prop(hov_image)):prop(sign_forward_6)); |
| | 1604 | t: eval(get(prop(temp_list),6)); |
| | 1605 | sign_forward_7: eval(((prop(temp_length)>6) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_7),prop(hov_image)):prop(sign_forward_7)); |
| | 1606 | t: eval(get(prop(temp_list),7)); |
| | 1607 | sign_forward_8: eval(((prop(temp_length)>7) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_8),prop(hov_image)):prop(sign_forward_8)); |
| | 1608 | |
| | 1609 | /* Lane count based on :lanes values */ |
| | 1610 | tag_lanes_all_min: eval(has_tag_key("hov:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1611 | tag_lanes_all_max: eval(has_tag_key("hov:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1612 | tag_lanes_fwd_min: eval(has_tag_key("hov:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min)); |
| | 1613 | tag_lanes_fwd_max: eval(has_tag_key("hov:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max)); |
| | 1614 | } |
| | 1615 | |
| | 1616 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1617 | /* HOV backward lanes */ |
| | 1618 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1619 | way|z17-[is_prop_set(ok)]["hov:lanes:backward"], |
| | 1620 | way|z17-[is_prop_set(ok)]["hov:backward"], |
| | 1621 | way|z17-[is_prop_set(ok)]["hov:lanes"][prop(oneway_type)=(-1)], |
| | 1622 | way|z17-[is_prop_set(ok)]["hov"][prop(oneway_type)=(-1)] |
| | 1623 | { |
| | 1624 | temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"), |
| | 1625 | cond(has_tag_key("hov"),tag("hov"), |
| | 1626 | cond(has_tag_key("hov:lanes:backward"),tag("hov:lanes:backward"), |
| | 1627 | tag("hov:backward") |
| | 1628 | )))); |
| | 1629 | temp_list: eval(split("|",prop(temp))); |
| | 1630 | temp_length: eval(length(prop(temp_list))); |
| | 1631 | hov_minimum: eval(has_tag_key("hov:minimum:backward")?tag("hov:minimum:backward"):(has_tag_key("hov:minimum")?tag("hov:minimum"):0)); |
| | 1632 | hov_image: eval((prop(hov_minimum)=2)?";images/hov2 backward.png":((prop(hov_minimum)=3)?";images/hov3 backward.png":";images/hov backward.png")); |
| | 1633 | |
| | 1634 | t: eval(get(prop(temp_list),0)); |
| | 1635 | sign_backward_1: eval(((prop(temp_length)>0) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_1),prop(hov_image)):prop(sign_backward_1)); |
| | 1636 | t: eval(get(prop(temp_list),1)); |
| | 1637 | sign_backward_2: eval(((prop(temp_length)>1) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_2),prop(hov_image)):prop(sign_backward_2)); |
| | 1638 | t: eval(get(prop(temp_list),2)); |
| | 1639 | sign_backward_3: eval(((prop(temp_length)>2) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_3),prop(hov_image)):prop(sign_backward_3)); |
| | 1640 | t: eval(get(prop(temp_list),3)); |
| | 1641 | sign_backward_4: eval(((prop(temp_length)>3) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_4),prop(hov_image)):prop(sign_backward_4)); |
| | 1642 | t: eval(get(prop(temp_list),4)); |
| | 1643 | sign_backward_5: eval(((prop(temp_length)>4) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_5),prop(hov_image)):prop(sign_backward_5)); |
| | 1644 | t: eval(get(prop(temp_list),5)); |
| | 1645 | sign_backward_6: eval(((prop(temp_length)>5) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_6),prop(hov_image)):prop(sign_backward_6)); |
| | 1646 | t: eval(get(prop(temp_list),6)); |
| | 1647 | sign_backward_7: eval(((prop(temp_length)>6) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_7),prop(hov_image)):prop(sign_backward_7)); |
| | 1648 | t: eval(get(prop(temp_list),7)); |
| | 1649 | sign_backward_8: eval(((prop(temp_length)>7) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_8),prop(hov_image)):prop(sign_backward_8)); |
| | 1650 | |
| | 1651 | /* Lane count based on :lanes values */ |
| | 1652 | tag_lanes_all_min: eval(has_tag_key("hov:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min)); |
| | 1653 | tag_lanes_all_max: eval(has_tag_key("hov:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max)); |
| | 1654 | tag_lanes_bwd_min: eval(has_tag_key("hov:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min)); |
| | 1655 | tag_lanes_bwd_max: eval(has_tag_key("hov:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max)); |
| | 1656 | } |
| | 1657 | |
| | 1658 | /***************************************************************************************************************************************************/ |
| | 1659 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1660 | /* Check of the number of lane-dependent width */ |
| | 1661 | /* The calculation itself depends on the lane count and therefore is done AFTER the determination of the lane count */ |
| | 1662 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1663 | /***************************************************************************************************************************************************/ |
| | 1664 | way|z17-["width:lanes:forward"], |
| | 1665 | way|z17-["width:lanes"][prop(oneway_type)=1] |
| | 1666 | { |
| | 1667 | temp: eval(cond(has_tag_key("width:lanes:forward"),tag("width:lanes:forward"),tag("width:lanes"))); |
| | 1668 | temp_length: eval(length(split("|",prop(temp)))); |
| | 1669 | |
| | 1670 | /* Lane count based on :lanes values */ |
| | 1671 | tag_lanes_fwd_min: eval(min(prop(tag_lanes_fwd_min),prop(temp_length))); |
| | 1672 | tag_lanes_fwd_max: eval(max(prop(tag_lanes_fwd_max),prop(temp_length))); |
| | 1673 | } |
| | 1674 | way|z17-["width:lanes:backward"], |
| | 1675 | way|z17-["width:lanes"][prop(oneway_type)=(-1)] |
| | 1676 | { |
| | 1677 | temp: eval(cond(has_tag_key("width:lanes:backward"),tag("width:lanes:backward"),tag("width:lanes"))); |
| | 1678 | temp_length: eval(length(split("|",prop(temp)))); |
| | 1679 | |
| | 1680 | /* Lane count based on :lanes values */ |
| | 1681 | tag_lanes_bwd_min: eval(min(prop(tag_lanes_bwd_min),prop(temp_length))); |
| | 1682 | tag_lanes_bwd_max: eval(max(prop(tag_lanes_bwd_max),prop(temp_length))); |
| | 1683 | } |
| | 1684 | way|z17-["width:lanes:both_ways"] |
| | 1685 | { |
| | 1686 | temp: eval(tag("width:lanes:both_ways")); |
| | 1687 | temp_length: eval(length(split("|",prop(temp)))); |
| | 1688 | |
| | 1689 | /* Lane count based on :lanes values */ |
| | 1690 | tag_lanes_both_min: eval(min(prop(tag_lanes_both_min),prop(temp_length))); |
| | 1691 | tag_lanes_both_max: eval(max(prop(tag_lanes_both_max),prop(temp_length))); |
| | 1692 | } |
| | 1693 | |
| | 1694 | /***************************************************************************************************************************************************/ |
| | 1695 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1696 | /* Retrieve the lane count from the lanes key, its subkeys and the :lanes-tags */ |
| | 1697 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1698 | /***************************************************************************************************************************************************/ |
| | 1699 | way[is_prop_set(ok)][lanes] { lanes_all: tag(lanes);} |
| | 1700 | way[is_prop_set(ok)]["lanes:forward"] { lanes_fwd: tag("lanes:forward");} |
| | 1701 | way[is_prop_set(ok)]["lanes:backward"] { lanes_bwd: tag("lanes:backward");} |
| | 1702 | way[is_prop_set(ok)]["lanes:both_ways"] { lanes_both: tag("lanes:both_ways");} |
| | 1703 | |
| | 1704 | /* Nothing specified */ |
| | 1705 | way[is_prop_set(ok)][prop(oneway_type)=0][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"] |
| | 1706 | { lanes_all: 2; lanes_fwd: 1; lanes_bwd: 1; lanes_both: 0; } |
| | 1707 | way[is_prop_set(ok)][prop(oneway_type)=1][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"] |
| | 1708 | { lanes_all: 1; lanes_fwd: 1; lanes_bwd: 0; lanes_both: 0; } |
| | 1709 | way[is_prop_set(ok)][prop(oneway_type)=(-1)][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"] |
| | 1710 | { lanes_all: 1; lanes_fwd: 0; lanes_bwd: 1; lanes_both: 0; } |
| | 1711 | |
| | 1712 | /* One-ways */ |
| | 1713 | way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1] |
| | 1714 | { lanes_fwd: prop(lanes_all); lanes_bwd: 0; lanes_both: 0; } |
| | 1715 | way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)] |
| | 1716 | { lanes_bwd: prop(lanes_all); lanes_fwd: 0; lanes_both: 0; } |
| | 1717 | |
| | 1718 | way[is_prop_set(ok)][!lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1] |
| | 1719 | { lanes_all: prop(lanes_fwd); lanes_bwd: 0; lanes_both: 0; } |
| | 1720 | way[is_prop_set(ok)][!lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)] |
| | 1721 | { lanes_all: prop(lanes_bwd); lanes_fwd: 0; lanes_both: 0; } |
| | 1722 | |
| | 1723 | /* One count besides both_ways is missing */ |
| | 1724 | way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"] |
| | 1725 | { lanes_fwd: eval((prop(lanes_all))-(prop(lanes_bwd))); lanes_both: 0; } |
| | 1726 | way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"] |
| | 1727 | { lanes_bwd: eval((prop(lanes_all))-(prop(lanes_fwd))); lanes_both: 0;} |
| | 1728 | way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"] |
| | 1729 | { lanes_all: eval((prop(lanes_fwd))+(prop(lanes_bwd))); lanes_both: 0; } |
| | 1730 | |
| | 1731 | /* One count is missing */ |
| | 1732 | way[is_prop_set(ok)][lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"] |
| | 1733 | { lanes_both: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_bwd)))); } |
| | 1734 | way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"]["lanes:both_ways"] |
| | 1735 | { lanes_bwd: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_both)))); } |
| | 1736 | way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"]["lanes:both_ways"] |
| | 1737 | { lanes_fwd: eval((prop(lanes_all))-((prop(lanes_bwd))+(prop(lanes_both)))); } |
| | 1738 | way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"]["lanes:both_ways"] |
| | 1739 | { lanes_all: eval((prop(lanes_fwd))+((prop(lanes_bwd))+(prop(lanes_both)))); } |
| | 1740 | |
| | 1741 | /* Only the lanes tag is set */ |
| | 1742 | way[is_prop_set(ok)][prop(oneway_type)=0][lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"] |
| | 1743 | { |
| | 1744 | |
| | 1745 | lanes_fwd: eval(max(1,floor(tag(lanes)/2))); |
| | 1746 | lanes_bwd: eval(floor(tag(lanes)/2)); |
| | 1747 | lanes_both: eval((prop(lanes_all))-(prop(lanes_fwd))-(prop(lanes_bwd))); |
| | 1748 | } |
| | 1749 | |
| | 1750 | /* Safety check and adding lanes for "non-motorized or non-general traffic" */ |
| | 1751 | way[is_prop_set(ok)] |
| | 1752 | { |
| | 1753 | /* Check for errors */ |
| | 1754 | data_error: eval(((prop(tag_lanes_all_max)>0) && (prop(tag_lanes_all_min)<prop(tag_lanes_all_max)))?"Inconsistent <tag>:lanes":prop(data_error)); |
| | 1755 | data_error: eval(((prop(tag_lanes_fwd_max)>0) && (prop(tag_lanes_fwd_min)<prop(tag_lanes_fwd_max)))?"Inconsistent <tag>:lanes:forward":prop(data_error)); |
| | 1756 | data_error: eval(((prop(tag_lanes_bwd_max)>0) && (prop(tag_lanes_bwd_min)<prop(tag_lanes_bwd_max)))?"Inconsistent <tag>:lanes:backward":prop(data_error)); |
| | 1757 | data_error: eval(((prop(tag_lanes_both_max)>0) && (prop(tag_lanes_both_min)<prop(tag_lanes_both_max)))?"Inconsistent <tag>:lanes:both_ways":prop(data_error)); |
| | 1758 | |
| | 1759 | /* Safety check */ |
| | 1760 | lanes_fwd: eval(cond((prop(lanes_fwd)<0),0,prop(lanes_fwd))); |
| | 1761 | lanes_bwd: eval(cond((prop(lanes_bwd)<0),0,prop(lanes_bwd))); |
| | 1762 | lanes_both: eval(cond((prop(lanes_both)<0),0,prop(lanes_both))); |
| | 1763 | |
| | 1764 | /* In case of one-ways treat the number of all lanes as number of forward/backward lanes */ |
| | 1765 | tag_lanes_fwd_min: eval((prop(oneway_type)=1)?min(prop(tag_lanes_all_min),prop(tag_lanes_fwd_min)):prop(tag_lanes_fwd_min)); |
| | 1766 | tag_lanes_fwd_max: eval((prop(oneway_type)=1)?max(prop(tag_lanes_all_max),prop(tag_lanes_fwd_max)):prop(tag_lanes_fwd_max)); |
| | 1767 | tag_lanes_bwd_min: eval((prop(oneway_type)=(-1))?min(prop(tag_lanes_all_min),prop(tag_lanes_bwd_min)):prop(tag_lanes_bwd_min)); |
| | 1768 | tag_lanes_bwd_max: eval((prop(oneway_type)=(-1))?max(prop(tag_lanes_all_max),prop(tag_lanes_bwd_max)):prop(tag_lanes_bwd_max)); |
| | 1769 | |
| | 1770 | /* Difference to the lane count specified by :lanes-tags */ |
| | 1771 | temp_add_fwd: eval(max(0,prop(tag_lanes_fwd_max)-prop(lanes_fwd))); |
| | 1772 | temp_add_bwd: eval(max(0,prop(tag_lanes_bwd_max)-prop(lanes_bwd))); |
| | 1773 | temp_add_both: eval(max(0,prop(tag_lanes_both_max)-prop(lanes_both))); |
| | 1774 | |
| | 1775 | /* Add the difference */ |
| | 1776 | lanes_fwd: eval(prop(lanes_fwd)+prop(temp_add_fwd)); |
| | 1777 | lanes_bwd: eval(prop(lanes_bwd)+prop(temp_add_bwd)); |
| | 1778 | lanes_both: eval(prop(lanes_both)+prop(temp_add_both)); |
| | 1779 | |
| | 1780 | /* Number of all lanes */ |
| | 1781 | lanes_all: eval(max(1,((prop(lanes_fwd)+prop(lanes_bwd))+prop(lanes_both)))); |
| | 1782 | |
| | 1783 | /* Check for some more errors */ |
| | 1784 | data_error: eval(((prop(tag_lanes_all_max)>0) && (prop(tag_lanes_all_min)<prop(lanes_all)))?"Missing <tag>:lanes values values":prop(data_error)); |
| | 1785 | data_error: eval(((prop(tag_lanes_fwd_max)>0) && (prop(tag_lanes_fwd_min)<prop(lanes_fwd)))?"Missing <tag>:lanes:forward values":prop(data_error)); |
| | 1786 | data_error: eval(((prop(tag_lanes_bwd_max)>0) && (prop(tag_lanes_bwd_min)<prop(lanes_bwd)))?"Missing <tag>:lanes:backward values":prop(data_error)); |
| | 1787 | data_error: eval(((prop(tag_lanes_both_max)>0) && (prop(tag_lanes_both_min)<prop(lanes_both)))?"Missing <tag>:lanes:both_ways values":prop(data_error)); |
| | 1788 | } |
| | 1789 | |
| | 1790 | |
| | 1791 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1792 | /* Determine the width of the lanes, road markings and the inner lane width */ |
| | 1793 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1794 | way|z17[is_prop_set(ok)] |
| | 1795 | { |
| | 1796 | lane_min_width: 4; |
| | 1797 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1798 | change_allowed: list(6,9); |
| | 1799 | road_marking_width: 1; |
| | 1800 | road_marking_space: 0; |
| | 1801 | } |
| | 1802 | |
| | 1803 | way|z18[is_prop_set(ok)] |
| | 1804 | { |
| | 1805 | lane_min_width: 8; |
| | 1806 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1807 | change_allowed: list(12,18); |
| | 1808 | road_marking_width: 2; |
| | 1809 | road_marking_space: 1; |
| | 1810 | } |
| | 1811 | |
| | 1812 | way|z19[is_prop_set(ok)] |
| | 1813 | { |
| | 1814 | lane_min_width: 8; |
| | 1815 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1816 | change_allowed: list(24,36); |
| | 1817 | road_marking_width: 2; |
| | 1818 | road_marking_space: 1; |
| | 1819 | } |
| | 1820 | |
| | 1821 | way|z20[is_prop_set(ok)] |
| | 1822 | { |
| | 1823 | lane_min_width: 8; |
| | 1824 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1825 | change_allowed: list(48,72); |
| | 1826 | road_marking_width: 2; |
| | 1827 | road_marking_space: 2; |
| | 1828 | } |
| | 1829 | |
| | 1830 | way|z21-[is_prop_set(ok)] |
| | 1831 | { |
| | 1832 | lane_min_width: 12; |
| | 1833 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1834 | change_allowed: list(96,144); |
| | 1835 | road_marking_width: 4; |
| | 1836 | road_marking_space: 3; |
| | 1837 | } |
| | 1838 | |
| | 1839 | way|z22-[is_prop_set(ok)] |
| | 1840 | { |
| | 1841 | lane_min_width: 20; |
| | 1842 | lane_default_width: eval(max(prop(lane_min_width),(has_tag_key(width)?((prop(pixel_per_metre,"default")*tag(width))/prop(lanes_all)):(3*prop(pixel_per_metre,"default"))))); |
| | 1843 | change_allowed: list(192,288); |
| | 1844 | road_marking_width: 6; |
| | 1845 | road_marking_space: 4; |
| | 1846 | } |
| | 1847 | |
| | 1848 | /* Zoom indepedent variables and helpers */ |
| | 1849 | way|z17-[is_prop_set(ok)] |
| | 1850 | { |
| | 1851 | lane_casing: eval((2*prop(road_marking_width))+prop(road_marking_space)); |
| | 1852 | change_forbidden: 0; |
| | 1853 | change_border: eval((has_tag_key("placement") && (tag("placement")="transition"))?list(1,2):prop(change_forbidden)); |
| | 1854 | } |
| | 1855 | |
| | 1856 | /***************************************************************************************************************************************************/ |
| | 1857 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1858 | /* Cleanup of allowed lane changes */ |
| | 1859 | /* This must be done AFTER the determination of the lanes count */ |
| | 1860 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1861 | /***************************************************************************************************************************************************/ |
| | 1862 | way|z17-[is_prop_set(ok)] |
| | 1863 | { |
| | 1864 | change_forward_1_right: eval(prop(change_forward_1_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1865 | change_forward_1_left: eval(prop(change_forward_1_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1866 | change_forward_2_right: eval(prop(change_forward_2_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1867 | change_forward_2_left: eval(prop(change_forward_2_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1868 | change_forward_3_right: eval(prop(change_forward_3_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1869 | change_forward_3_left: eval(prop(change_forward_3_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1870 | change_forward_4_right: eval(prop(change_forward_4_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1871 | change_forward_4_left: eval(prop(change_forward_4_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1872 | change_forward_5_right: eval(prop(change_forward_5_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1873 | change_forward_5_left: eval(prop(change_forward_5_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1874 | change_forward_6_right: eval(prop(change_forward_6_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1875 | change_forward_6_left: eval(prop(change_forward_6_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1876 | change_forward_7_right: eval(prop(change_forward_7_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1877 | change_forward_7_left: eval(prop(change_forward_7_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1878 | change_forward_8_right: eval(prop(change_forward_8_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1879 | change_forward_8_left: eval(prop(change_forward_8_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1880 | |
| | 1881 | change_backward_1_right: eval(prop(change_backward_1_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1882 | change_backward_1_left: eval(prop(change_backward_1_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1883 | change_backward_2_right: eval(prop(change_backward_2_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1884 | change_backward_2_left: eval(prop(change_backward_2_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1885 | change_backward_3_right: eval(prop(change_backward_3_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1886 | change_backward_3_left: eval(prop(change_backward_3_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1887 | change_backward_4_right: eval(prop(change_backward_4_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1888 | change_backward_4_left: eval(prop(change_backward_4_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1889 | change_backward_5_right: eval(prop(change_backward_5_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1890 | change_backward_5_left: eval(prop(change_backward_5_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1891 | change_backward_6_right: eval(prop(change_backward_6_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1892 | change_backward_6_left: eval(prop(change_backward_6_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1893 | change_backward_7_right: eval(prop(change_backward_7_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1894 | change_backward_7_left: eval(prop(change_backward_7_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1895 | change_backward_8_right: eval(prop(change_backward_8_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1896 | change_backward_8_left: eval(prop(change_backward_8_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1897 | |
| | 1898 | change_bothways_1_right: eval(prop(change_bothways_1_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1899 | change_bothways_1_left: eval(prop(change_bothways_1_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1900 | change_bothways_2_right: eval(prop(change_bothways_2_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1901 | change_bothways_2_left: eval(prop(change_bothways_2_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1902 | change_bothways_3_right: eval(prop(change_bothways_3_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1903 | change_bothways_3_left: eval(prop(change_bothways_3_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1904 | change_bothways_4_right: eval(prop(change_bothways_4_right)?prop(change_allowed):prop(change_forbidden)); |
| | 1905 | change_bothways_4_left: eval(prop(change_bothways_4_left)?prop(change_allowed):prop(change_forbidden)); |
| | 1906 | |
| | 1907 | /* If two adjacent road markings would look the same, remove one */ |
| | 1908 | change_forward_1_right: eval(cond((prop(lanes_fwd)>1) && (prop(change_forward_2_left)=prop(change_forward_1_right)),list(0.1,999999),prop(change_forward_1_right))); |
| | 1909 | change_forward_2_right: eval(cond((prop(lanes_fwd)>2) && (prop(change_forward_3_left)=prop(change_forward_2_right)),list(0.1,999999),prop(change_forward_2_right))); |
| | 1910 | change_forward_3_right: eval(cond((prop(lanes_fwd)>3) && (prop(change_forward_4_left)=prop(change_forward_3_right)),list(0.1,999999),prop(change_forward_3_right))); |
| | 1911 | change_forward_4_right: eval(cond((prop(lanes_fwd)>4) && (prop(change_forward_5_left)=prop(change_forward_4_right)),list(0.1,999999),prop(change_forward_4_right))); |
| | 1912 | change_forward_5_right: eval(cond((prop(lanes_fwd)>5) && (prop(change_forward_6_left)=prop(change_forward_5_right)),list(0.1,999999),prop(change_forward_5_right))); |
| | 1913 | change_forward_6_right: eval(cond((prop(lanes_fwd)>6) && (prop(change_forward_7_left)=prop(change_forward_6_right)),list(0.1,999999),prop(change_forward_6_right))); |
| | 1914 | change_forward_7_right: eval(cond((prop(lanes_fwd)>7) && (prop(change_forward_8_left)=prop(change_forward_7_right)),list(0.1,999999),prop(change_forward_7_right))); |
| | 1915 | |
| | 1916 | change_backward_2_left: eval(cond((prop(lanes_bwd)>1) && (prop(change_backward_1_right)=prop(change_backward_2_left)),list(0.1,999999),prop(change_backward_2_left))); |
| | 1917 | change_backward_3_left: eval(cond((prop(lanes_bwd)>2) && (prop(change_backward_2_right)=prop(change_backward_3_left)),list(0.1,999999),prop(change_backward_3_left))); |
| | 1918 | change_backward_4_left: eval(cond((prop(lanes_bwd)>3) && (prop(change_backward_3_right)=prop(change_backward_4_left)),list(0.1,999999),prop(change_backward_4_left))); |
| | 1919 | change_backward_5_left: eval(cond((prop(lanes_bwd)>4) && (prop(change_backward_4_right)=prop(change_backward_5_left)),list(0.1,999999),prop(change_backward_5_left))); |
| | 1920 | change_backward_6_left: eval(cond((prop(lanes_bwd)>5) && (prop(change_backward_5_right)=prop(change_backward_6_left)),list(0.1,999999),prop(change_backward_6_left))); |
| | 1921 | change_backward_7_left: eval(cond((prop(lanes_bwd)>6) && (prop(change_backward_6_right)=prop(change_backward_7_left)),list(0.1,999999),prop(change_backward_7_left))); |
| | 1922 | change_backward_8_left: eval(cond((prop(lanes_bwd)>7) && (prop(change_backward_7_right)=prop(change_backward_8_left)),list(0.1,999999),prop(change_backward_8_left))); |
| | 1923 | |
| | 1924 | change_bothways_1_right: eval(cond((prop(lanes_fwd)>1) && (prop(change_bothways_2_left)=prop(change_bothways_1_right)),list(0.1,999999),prop(change_bothways_1_right))); |
| | 1925 | change_bothways_2_right: eval(cond((prop(lanes_fwd)>2) && (prop(change_bothways_3_left)=prop(change_bothways_2_right)),list(0.1,999999),prop(change_bothways_2_right))); |
| | 1926 | change_bothways_3_right: eval(cond((prop(lanes_fwd)>3) && (prop(change_bothways_4_left)=prop(change_bothways_3_right)),list(0.1,999999),prop(change_bothways_3_right))); |
| | 1927 | } |
| | 1928 | |
| | 1929 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1930 | /* Make the borders always solid */ |
| | 1931 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1932 | way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)] |
| | 1933 | { |
| | 1934 | change_forward_1_left: eval(((prop(oneway_type)=1) || (prop(lanes_all)=1))?prop(change_border):prop(change_forward_1_left)); |
| | 1935 | change_backward_1_left: eval((prop(oneway_type)=(-1))?prop(change_border):prop(change_backward_1_left)); |
| | 1936 | } |
| | 1937 | way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)] |
| | 1938 | { |
| | 1939 | change_forward_1_left: prop(change_border); |
| | 1940 | change_backward_1_left: prop(change_border); |
| | 1941 | change_forward_1_right: eval((prop(lanes_all)=1)?prop(change_border):prop(change_forward_1_right)); |
| | 1942 | } |
| | 1943 | way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)], |
| | 1944 | way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)][prop(oneway_type)=1] |
| | 1945 | { |
| | 1946 | change_forward_1_right: eval((prop(lanes_fwd)=1)?prop(change_border):prop(change_forward_1_right)); |
| | 1947 | change_forward_2_right: eval((prop(lanes_fwd)=2)?prop(change_border):prop(change_forward_2_right)); |
| | 1948 | change_forward_3_right: eval((prop(lanes_fwd)=3)?prop(change_border):prop(change_forward_3_right)); |
| | 1949 | change_forward_4_right: eval((prop(lanes_fwd)=4)?prop(change_border):prop(change_forward_4_right)); |
| | 1950 | change_forward_5_right: eval((prop(lanes_fwd)=5)?prop(change_border):prop(change_forward_5_right)); |
| | 1951 | change_forward_6_right: eval((prop(lanes_fwd)=6)?prop(change_border):prop(change_forward_6_right)); |
| | 1952 | change_forward_7_right: eval((prop(lanes_fwd)=7)?prop(change_border):prop(change_forward_7_right)); |
| | 1953 | change_forward_8_right: eval((prop(lanes_fwd)=8)?prop(change_border):prop(change_forward_8_right)); |
| | 1954 | } |
| | 1955 | way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)], |
| | 1956 | way|z17-[is_prop_set(ok)][!prop(style_right_hand_traffic)][prop(oneway_type)=(-1)] |
| | 1957 | { |
| | 1958 | change_backward_1_right: eval((prop(lanes_bwd)=1)?prop(change_border):prop(change_backward_1_right)); |
| | 1959 | change_backward_2_right: eval((prop(lanes_bwd)=2)?prop(change_border):prop(change_backward_2_right)); |
| | 1960 | change_backward_3_right: eval((prop(lanes_bwd)=3)?prop(change_border):prop(change_backward_3_right)); |
| | 1961 | change_backward_4_right: eval((prop(lanes_bwd)=4)?prop(change_border):prop(change_backward_4_right)); |
| | 1962 | change_backward_5_right: eval((prop(lanes_bwd)=5)?prop(change_border):prop(change_backward_5_right)); |
| | 1963 | change_backward_6_right: eval((prop(lanes_bwd)=6)?prop(change_border):prop(change_backward_6_right)); |
| | 1964 | change_backward_7_right: eval((prop(lanes_bwd)=7)?prop(change_border):prop(change_backward_7_right)); |
| | 1965 | change_backward_8_right: eval((prop(lanes_bwd)=8)?prop(change_border):prop(change_backward_8_right)); |
| | 1966 | } |
| | 1967 | |
| | 1968 | /***************************************************************************************************************************************************/ |
| | 1969 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1970 | /* Splitting the list of signs into separate properties */ |
| | 1971 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1972 | /***************************************************************************************************************************************************/ |
| | 1973 | way[!(prop(sign_forward_1)="")] { t: eval(split(";",prop(sign_forward_1))); sign_1_forward_1: eval(get(prop(t),1)); sign_2_forward_1: eval(get(prop(t),2)); sign_3_forward_1: eval(get(prop(t),3)); } |
| | 1974 | way[!(prop(sign_forward_2)="")] { t: eval(split(";",prop(sign_forward_2))); sign_1_forward_2: eval(get(prop(t),1)); sign_2_forward_2: eval(get(prop(t),2)); sign_3_forward_2: eval(get(prop(t),3)); } |
| | 1975 | way[!(prop(sign_forward_3)="")] { t: eval(split(";",prop(sign_forward_3))); sign_1_forward_3: eval(get(prop(t),1)); sign_2_forward_3: eval(get(prop(t),2)); sign_3_forward_3: eval(get(prop(t),3)); } |
| | 1976 | way[!(prop(sign_forward_4)="")] { t: eval(split(";",prop(sign_forward_4))); sign_1_forward_4: eval(get(prop(t),1)); sign_2_forward_4: eval(get(prop(t),2)); sign_3_forward_4: eval(get(prop(t),3)); } |
| | 1977 | way[!(prop(sign_forward_5)="")] { t: eval(split(";",prop(sign_forward_5))); sign_1_forward_5: eval(get(prop(t),1)); sign_2_forward_5: eval(get(prop(t),2)); sign_3_forward_5: eval(get(prop(t),3)); } |
| | 1978 | way[!(prop(sign_forward_6)="")] { t: eval(split(";",prop(sign_forward_6))); sign_1_forward_6: eval(get(prop(t),1)); sign_2_forward_6: eval(get(prop(t),2)); sign_3_forward_6: eval(get(prop(t),3)); } |
| | 1979 | way[!(prop(sign_forward_7)="")] { t: eval(split(";",prop(sign_forward_7))); sign_1_forward_7: eval(get(prop(t),1)); sign_2_forward_7: eval(get(prop(t),2)); sign_3_forward_7: eval(get(prop(t),3)); } |
| | 1980 | way[!(prop(sign_forward_7)="")] { t: eval(split(";",prop(sign_forward_8))); sign_1_forward_8: eval(get(prop(t),1)); sign_2_forward_8: eval(get(prop(t),2)); sign_3_forward_8: eval(get(prop(t),3)); } |
| | 1981 | |
| | 1982 | way[!(prop(sign_backward_1)="")] { t: eval(split(";",prop(sign_backward_1))); sign_1_backward_1: eval(get(prop(t),1)); sign_2_backward_1: eval(get(prop(t),2)); sign_3_backward_1: eval(get(prop(t),3)); } |
| | 1983 | way[!(prop(sign_backward_2)="")] { t: eval(split(";",prop(sign_backward_2))); sign_1_backward_2: eval(get(prop(t),1)); sign_2_backward_2: eval(get(prop(t),2)); sign_3_backward_2: eval(get(prop(t),3)); } |
| | 1984 | way[!(prop(sign_backward_3)="")] { t: eval(split(";",prop(sign_backward_3))); sign_1_backward_3: eval(get(prop(t),1)); sign_2_backward_3: eval(get(prop(t),2)); sign_3_backward_3: eval(get(prop(t),3)); } |
| | 1985 | way[!(prop(sign_backward_4)="")] { t: eval(split(";",prop(sign_backward_4))); sign_1_backward_4: eval(get(prop(t),1)); sign_2_backward_4: eval(get(prop(t),2)); sign_3_backward_4: eval(get(prop(t),3)); } |
| | 1986 | way[!(prop(sign_backward_5)="")] { t: eval(split(";",prop(sign_backward_5))); sign_1_backward_5: eval(get(prop(t),1)); sign_2_backward_5: eval(get(prop(t),2)); sign_3_backward_5: eval(get(prop(t),3)); } |
| | 1987 | way[!(prop(sign_backward_6)="")] { t: eval(split(";",prop(sign_backward_6))); sign_1_backward_6: eval(get(prop(t),1)); sign_2_backward_6: eval(get(prop(t),2)); sign_3_backward_6: eval(get(prop(t),3)); } |
| | 1988 | way[!(prop(sign_backward_7)="")] { t: eval(split(";",prop(sign_backward_7))); sign_1_backward_7: eval(get(prop(t),1)); sign_2_backward_7: eval(get(prop(t),2)); sign_3_backward_7: eval(get(prop(t),3)); } |
| | 1989 | way[!(prop(sign_backward_7)="")] { t: eval(split(";",prop(sign_backward_8))); sign_1_backward_8: eval(get(prop(t),1)); sign_2_backward_8: eval(get(prop(t),2)); sign_3_backward_8: eval(get(prop(t),3)); } |
| | 1990 | |
| | 1991 | |
| | 1992 | /***************************************************************************************************************************************************/ |
| | 1993 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1994 | /* Lane-dependent width */ |
| | 1995 | /* This must be done AFTER the determination of the lanes count */ |
| | 1996 | /* Note: the number of values is calcuated BEFORE the determination of the lanes count */ |
| | 1997 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 1998 | /***************************************************************************************************************************************************/ |
| | 1999 | way|z17-[is_prop_set(ok)] |
| | 2000 | { |
| | 2001 | lane_width_forward_1: eval(prop(lane_default_width)); lane_width_forward_2: eval(prop(lane_default_width)); |
| | 2002 | lane_width_forward_3: eval(prop(lane_default_width)); lane_width_forward_4: eval(prop(lane_default_width)); |
| | 2003 | lane_width_forward_5: eval(prop(lane_default_width)); lane_width_forward_6: eval(prop(lane_default_width)); |
| | 2004 | lane_width_forward_7: eval(prop(lane_default_width)); lane_width_forward_8: eval(prop(lane_default_width)); |
| | 2005 | |
| | 2006 | lane_width_backward_1: eval(prop(lane_default_width)); lane_width_backward_2: eval(prop(lane_default_width)); |
| | 2007 | lane_width_backward_3: eval(prop(lane_default_width)); lane_width_backward_4: eval(prop(lane_default_width)); |
| | 2008 | lane_width_backward_5: eval(prop(lane_default_width)); lane_width_backward_6: eval(prop(lane_default_width)); |
| | 2009 | lane_width_backward_7: eval(prop(lane_default_width)); lane_width_backward_8: eval(prop(lane_default_width)); |
| | 2010 | |
| | 2011 | lane_width_bothways_1: eval(prop(lane_default_width)); lane_width_bothways_2: eval(prop(lane_default_width)); |
| | 2012 | lane_width_bothways_3: eval(prop(lane_default_width)); lane_width_bothways_4: eval(prop(lane_default_width)); |
| | 2013 | } |
| | 2014 | |
| | 2015 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2016 | /* Forward lanes */ |
| | 2017 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2018 | way|z17-[is_prop_set(ok)]["width:lanes:forward"], |
| | 2019 | way|z17-[is_prop_set(ok)]["width:lanes"][prop(oneway_type)=1] |
| | 2020 | { |
| | 2021 | temp: eval(cond(has_tag_key("width:lanes:forward"),tag("width:lanes:forward"),tag("width:lanes"))); |
| | 2022 | temp_list: eval(split("|",prop(temp))); |
| | 2023 | temp_length: eval(length(prop(temp_list))); |
| | 2024 | |
| | 2025 | lane_width_forward_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width)); |
| | 2026 | lane_width_forward_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width)); |
| | 2027 | lane_width_forward_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width)); |
| | 2028 | lane_width_forward_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width)); |
| | 2029 | lane_width_forward_5: eval(((prop(temp_length)>4) && (get(prop(temp_list),4)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),4)))):prop(lane_default_width)); |
| | 2030 | lane_width_forward_6: eval(((prop(temp_length)>5) && (get(prop(temp_list),5)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),5)))):prop(lane_default_width)); |
| | 2031 | lane_width_forward_7: eval(((prop(temp_length)>6) && (get(prop(temp_list),6)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),6)))):prop(lane_default_width)); |
| | 2032 | lane_width_forward_8: eval(((prop(temp_length)>7) && (get(prop(temp_list),7)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),7)))):prop(lane_default_width)); |
| | 2033 | } |
| | 2034 | |
| | 2035 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2036 | /* Backward lanes */ |
| | 2037 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2038 | way|z17-[is_prop_set(ok)]["width:lanes:backward"], |
| | 2039 | way|z17-[is_prop_set(ok)]["width:lanes"][prop(oneway_type)=(-1)] |
| | 2040 | { |
| | 2041 | temp: eval(cond(has_tag_key("width:lanes:backward"),tag("width:lanes:backward"),tag("width:lanes"))); |
| | 2042 | temp_list: eval(split("|",prop(temp))); |
| | 2043 | temp_length: eval(length(prop(temp_list))); |
| | 2044 | |
| | 2045 | lane_width_backward_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width)); |
| | 2046 | lane_width_backward_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width)); |
| | 2047 | lane_width_backward_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width)); |
| | 2048 | lane_width_backward_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width)); |
| | 2049 | lane_width_backward_5: eval(((prop(temp_length)>4) && (get(prop(temp_list),4)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),4)))):prop(lane_default_width)); |
| | 2050 | lane_width_backward_6: eval(((prop(temp_length)>5) && (get(prop(temp_list),5)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),5)))):prop(lane_default_width)); |
| | 2051 | lane_width_backward_7: eval(((prop(temp_length)>6) && (get(prop(temp_list),6)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),6)))):prop(lane_default_width)); |
| | 2052 | lane_width_backward_8: eval(((prop(temp_length)>7) && (get(prop(temp_list),7)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),7)))):prop(lane_default_width)); |
| | 2053 | } |
| | 2054 | |
| | 2055 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2056 | /* Bothways lanes */ |
| | 2057 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2058 | way|z17-[is_prop_set(ok)]["width:lanes:both_ways"] |
| | 2059 | { |
| | 2060 | temp: eval(tag("width:lanes:both_ways")); |
| | 2061 | temp_list: eval(split("|",prop(temp))); |
| | 2062 | temp_length: eval(length(prop(temp_list))); |
| | 2063 | |
| | 2064 | lane_width_bothways_1: eval(((prop(temp_length)>0) && (get(prop(temp_list),0)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),0)))):prop(lane_default_width)); |
| | 2065 | lane_width_bothways_2: eval(((prop(temp_length)>1) && (get(prop(temp_list),1)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),1)))):prop(lane_default_width)); |
| | 2066 | lane_width_bothways_3: eval(((prop(temp_length)>2) && (get(prop(temp_list),2)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),2)))):prop(lane_default_width)); |
| | 2067 | lane_width_bothways_4: eval(((prop(temp_length)>3) && (get(prop(temp_list),3)>0))?(max(prop(lane_min_width),(prop(pixel_per_metre)*get(prop(temp_list),3)))):prop(lane_default_width)); |
| | 2068 | } |
| | 2069 | |
| | 2070 | way|z17-[is_prop_set(ok)] |
| | 2071 | { |
| | 2072 | lane_width_all_forward: eval( |
| | 2073 | ((prop(lanes_fwd)>0)?prop(lane_width_forward_1):0)+ |
| | 2074 | ((prop(lanes_fwd)>1)?prop(lane_width_forward_2):0)+ |
| | 2075 | ((prop(lanes_fwd)>2)?prop(lane_width_forward_3):0)+ |
| | 2076 | ((prop(lanes_fwd)>3)?prop(lane_width_forward_4):0)+ |
| | 2077 | ((prop(lanes_fwd)>4)?prop(lane_width_forward_5):0)+ |
| | 2078 | ((prop(lanes_fwd)>5)?prop(lane_width_forward_6):0)+ |
| | 2079 | ((prop(lanes_fwd)>6)?prop(lane_width_forward_7):0)+ |
| | 2080 | ((prop(lanes_fwd)>7)?prop(lane_width_forward_8):0) |
| | 2081 | ); |
| | 2082 | |
| | 2083 | lane_width_all_backward: eval( |
| | 2084 | ((prop(lanes_bwd)>0)?prop(lane_width_backward_1):0)+ |
| | 2085 | ((prop(lanes_bwd)>1)?prop(lane_width_backward_2):0)+ |
| | 2086 | ((prop(lanes_bwd)>2)?prop(lane_width_backward_3):0)+ |
| | 2087 | ((prop(lanes_bwd)>3)?prop(lane_width_backward_4):0)+ |
| | 2088 | ((prop(lanes_bwd)>4)?prop(lane_width_backward_5):0)+ |
| | 2089 | ((prop(lanes_bwd)>5)?prop(lane_width_backward_6):0)+ |
| | 2090 | ((prop(lanes_bwd)>6)?prop(lane_width_backward_7):0)+ |
| | 2091 | ((prop(lanes_bwd)>7)?prop(lane_width_backward_8):0) |
| | 2092 | ); |
| | 2093 | |
| | 2094 | lane_width_all_bothways: eval( |
| | 2095 | ((prop(lanes_both)>0)?prop(lane_width_bothways_1):0)+ |
| | 2096 | ((prop(lanes_both)>1)?prop(lane_width_bothways_2):0)+ |
| | 2097 | ((prop(lanes_both)>2)?prop(lane_width_bothways_3):0)+ |
| | 2098 | ((prop(lanes_both)>3)?prop(lane_width_bothways_4):0) |
| | 2099 | ); |
| | 2100 | |
| | 2101 | lane_width_all: eval((prop(lane_width_all_forward)+prop(lane_width_all_backward))+prop(lane_width_all_bothways)); |
| | 2102 | } |
| | 2103 | |
| | 2104 | /***************************************************************************************************************************************************/ |
| | 2105 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2106 | /* Offset of the road given by the placement tag */ |
| | 2107 | /* It is assumed that only one of the placement tags is set, otherwise the result will most certainly be incorrect */ |
| | 2108 | /* TODO: placement:both_ways is currently not supported, verify support for left-hand-traffic */ |
| | 2109 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2110 | /***************************************************************************************************************************************************/ |
| | 2111 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2112 | /* Error checking */ |
| | 2113 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2114 | way["placement"] |
| | 2115 | { |
| | 2116 | data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement"))?prop(data_error):"invalid placement value"); |
| | 2117 | } |
| | 2118 | way["placement:forward"] |
| | 2119 | { |
| | 2120 | data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement:forward"))?prop(data_error):"invalid placement:forward value"); |
| | 2121 | } |
| | 2122 | way["placement:backward"] |
| | 2123 | { |
| | 2124 | data_error: eval(regexp_test("^(transition|middle_of:[0-9]+|right_of:[0-9]+|left_of:[0-9]+)$",tag("placement:backward"))?prop(data_error):"invalid placement:backward value"); |
| | 2125 | } |
| | 2126 | way["placement"]["placement:forward"], way["placement"]["placement:backward"], way["placement:forward"]["placement:backward"] |
| | 2127 | { |
| | 2128 | data_error: eval("multiple placement tags"); |
| | 2129 | } |
| | 2130 | |
| | 2131 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2132 | /* 1. Calculate the borders without consideration of placement */ |
| | 2133 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2134 | way[is_prop_set(ok)] |
| | 2135 | { |
| | 2136 | /* Determine the borders of the parts of the carriageway assuming no placement was specified */ |
| | 2137 | placement_offset: 0; |
| | 2138 | placement_transition: eval(has_tag_key("placement") && (tag("placement")="transition")); |
| | 2139 | left_carriageway_border: eval(prop(lane_width_all)/2.0); |
| | 2140 | left_forward_border: eval(cond(prop(style_right_hand_traffic), |
| | 2141 | (prop(left_carriageway_border) - (prop(lane_width_all_backward)+prop(lane_width_all_bothways))), |
| | 2142 | prop(left_carriageway_border) |
| | 2143 | ) |
| | 2144 | ); |
| | 2145 | right_backward_border: eval(cond(prop(style_right_hand_traffic), |
| | 2146 | (prop(left_carriageway_border) - prop(lane_width_all_backward)), |
| | 2147 | (prop(left_carriageway_border) - prop(lane_width_all)) |
| | 2148 | ) |
| | 2149 | ); |
| | 2150 | left_bothways_border: eval(cond(prop(style_right_hand_traffic), |
| | 2151 | (prop(left_carriageway_border) - prop(lane_width_all_backward)), |
| | 2152 | (prop(left_carriageway_border) - prop(lane_width_all_forward)) |
| | 2153 | ) |
| | 2154 | ); |
| | 2155 | } |
| | 2156 | |
| | 2157 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2158 | /* 2.a. Offset of the forward lanes */ |
| | 2159 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2160 | way|z17-[is_prop_set(ok)] |
| | 2161 | { |
| | 2162 | lane_offset_forward_1: eval(prop(left_forward_border)- |
| | 2163 | (prop(lane_width_forward_1)/2)); |
| | 2164 | lane_offset_forward_2: eval(prop(lane_offset_forward_1)- |
| | 2165 | ((prop(lane_width_forward_1)+ |
| | 2166 | prop(lane_width_forward_2))/2)); |
| | 2167 | lane_offset_forward_3: eval(prop(lane_offset_forward_2)- |
| | 2168 | ((prop(lane_width_forward_2)+ |
| | 2169 | prop(lane_width_forward_3))/2)); |
| | 2170 | lane_offset_forward_4: eval(prop(lane_offset_forward_3)- |
| | 2171 | ((prop(lane_width_forward_3)+ |
| | 2172 | prop(lane_width_forward_4))/2)); |
| | 2173 | lane_offset_forward_5: eval(prop(lane_offset_forward_4)- |
| | 2174 | ((prop(lane_width_forward_4)+ |
| | 2175 | prop(lane_width_forward_5))/2)); |
| | 2176 | lane_offset_forward_6: eval(prop(lane_offset_forward_5)- |
| | 2177 | ((prop(lane_width_forward_5)+ |
| | 2178 | prop(lane_width_forward_6))/2)); |
| | 2179 | lane_offset_forward_7: eval(prop(lane_offset_forward_6)- |
| | 2180 | ((prop(lane_width_forward_6)+ |
| | 2181 | prop(lane_width_forward_7))/2)); |
| | 2182 | lane_offset_forward_8: eval(prop(lane_offset_forward_7)- |
| | 2183 | ((prop(lane_width_forward_7)+ |
| | 2184 | prop(lane_width_forward_8))/2)); |
| | 2185 | } |
| | 2186 | |
| | 2187 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2188 | /* 2.b. Offset of the backward lanes */ |
| | 2189 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2190 | way|z17-[is_prop_set(ok)] |
| | 2191 | { |
| | 2192 | lane_offset_backward_1: eval(prop(right_backward_border)+ |
| | 2193 | (prop(lane_width_backward_1)/2)); |
| | 2194 | lane_offset_backward_2: eval(prop(lane_offset_backward_1)+ |
| | 2195 | ((prop(lane_width_backward_1)+ |
| | 2196 | prop(lane_width_backward_2))/2)); |
| | 2197 | lane_offset_backward_3: eval(prop(lane_offset_backward_2)+ |
| | 2198 | ((prop(lane_width_backward_2)+ |
| | 2199 | prop(lane_width_backward_3))/2)); |
| | 2200 | lane_offset_backward_4: eval(prop(lane_offset_backward_3)+ |
| | 2201 | ((prop(lane_width_backward_3)+ |
| | 2202 | prop(lane_width_backward_4))/2)); |
| | 2203 | lane_offset_backward_5: eval(prop(lane_offset_backward_4)+ |
| | 2204 | ((prop(lane_width_backward_4)+ |
| | 2205 | prop(lane_width_backward_5))/2)); |
| | 2206 | lane_offset_backward_6: eval(prop(lane_offset_backward_5)+ |
| | 2207 | ((prop(lane_width_backward_5)+ |
| | 2208 | prop(lane_width_backward_6))/2)); |
| | 2209 | lane_offset_backward_7: eval(prop(lane_offset_backward_6)+ |
| | 2210 | ((prop(lane_width_backward_6)+ |
| | 2211 | prop(lane_width_backward_7))/2)); |
| | 2212 | lane_offset_backward_8: eval(prop(lane_offset_backward_7)+ |
| | 2213 | ((prop(lane_width_backward_7)+ |
| | 2214 | prop(lane_width_backward_8))/2)); |
| | 2215 | } |
| | 2216 | |
| | 2217 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2218 | /* 2.c. Offset of the both_ways lanes */ |
| | 2219 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2220 | way|z17-[is_prop_set(ok)] |
| | 2221 | { |
| | 2222 | lane_offset_bothways_1: eval(prop(left_bothways_border)- |
| | 2223 | (prop(lane_width_bothways_1)/2)); |
| | 2224 | lane_offset_bothways_2: eval(prop(lane_offset_bothways_1)- |
| | 2225 | ((prop(lane_width_bothways_1)+ |
| | 2226 | prop(lane_width_bothways_2))/2)); |
| | 2227 | lane_offset_bothways_3: eval(prop(lane_offset_bothways_2)- |
| | 2228 | ((prop(lane_width_bothways_2)+ |
| | 2229 | prop(lane_width_bothways_3))/2)); |
| | 2230 | lane_offset_bothways_4: eval(prop(lane_offset_bothways_3)- |
| | 2231 | ((prop(lane_width_bothways_3)+ |
| | 2232 | prop(lane_width_bothways_4))/2)); |
| | 2233 | } |
| | 2234 | |
| | 2235 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2236 | /* 3. Now determine the offset given by the placement tag */ |
| | 2237 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2238 | way[is_prop_set(ok)]["placement:forward"]["placement:forward"!=transition], |
| | 2239 | way[is_prop_set(ok)][prop(oneway_type)=1][placement][placement!=transition] |
| | 2240 | { |
| | 2241 | placement_value: eval(has_tag_key("placement")?tag("placement"):tag("placement:forward")); |
| | 2242 | placement_offset: eval( |
| | 2243 | cond(prop("placement_value")="right_of:1",eval((prop(lane_width_forward_1)/2)-prop(lane_offset_forward_1)), |
| | 2244 | cond(prop("placement_value")="right_of:2",eval((prop(lane_width_forward_2)/2)-prop(lane_offset_forward_2)), |
| | 2245 | cond(prop("placement_value")="right_of:3",eval((prop(lane_width_forward_3)/2)-prop(lane_offset_forward_3)), |
| | 2246 | cond(prop("placement_value")="right_of:4",eval((prop(lane_width_forward_4)/2)-prop(lane_offset_forward_4)), |
| | 2247 | cond(prop("placement_value")="right_of:5",eval((prop(lane_width_forward_5)/2)-prop(lane_offset_forward_5)), |
| | 2248 | cond(prop("placement_value")="right_of:6",eval((prop(lane_width_forward_6)/2)-prop(lane_offset_forward_6)), |
| | 2249 | cond(prop("placement_value")="right_of:7",eval((prop(lane_width_forward_7)/2)-prop(lane_offset_forward_7)), |
| | 2250 | cond(prop("placement_value")="right_of:8",eval((prop(lane_width_forward_8)/2)-prop(lane_offset_forward_8)), |
| | 2251 | cond(prop("placement_value")="left_of:1",eval(-(prop(lane_offset_forward_1)+(prop(lane_width_forward_1)/2))), |
| | 2252 | cond(prop("placement_value")="left_of:2",eval(-(prop(lane_offset_forward_2)+(prop(lane_width_forward_2)/2))), |
| | 2253 | cond(prop("placement_value")="left_of:3",eval(-(prop(lane_offset_forward_3)+(prop(lane_width_forward_3)/2))), |
| | 2254 | cond(prop("placement_value")="left_of:4",eval(-(prop(lane_offset_forward_4)+(prop(lane_width_forward_4)/2))), |
| | 2255 | cond(prop("placement_value")="left_of:5",eval(-(prop(lane_offset_forward_5)+(prop(lane_width_forward_5)/2))), |
| | 2256 | cond(prop("placement_value")="left_of:6",eval(-(prop(lane_offset_forward_6)+(prop(lane_width_forward_6)/2))), |
| | 2257 | cond(prop("placement_value")="left_of:7",eval(-(prop(lane_offset_forward_7)+(prop(lane_width_forward_7)/2))), |
| | 2258 | cond(prop("placement_value")="left_of:8",eval(-(prop(lane_offset_forward_8)+(prop(lane_width_forward_8)/2))), |
| | 2259 | cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_forward_1)), |
| | 2260 | cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_forward_2)), |
| | 2261 | cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_forward_3)), |
| | 2262 | cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_forward_4)), |
| | 2263 | cond(prop("placement_value")="middle_of:5",eval(-prop(lane_offset_forward_5)), |
| | 2264 | cond(prop("placement_value")="middle_of:6",eval(-prop(lane_offset_forward_6)), |
| | 2265 | cond(prop("placement_value")="middle_of:7",eval(-prop(lane_offset_forward_7)), |
| | 2266 | cond(prop("placement_value")="middle_of:8",eval(-prop(lane_offset_forward_8)), |
| | 2267 | 0 |
| | 2268 | )))))))))))))))))))))))) |
| | 2269 | ); |
| | 2270 | } |
| | 2271 | way[is_prop_set(ok)]["placement:backward"]["placement:backward"!=transition], |
| | 2272 | way[is_prop_set(ok)][prop(oneway_type)=(-1)][placement][placement!=transition] |
| | 2273 | { |
| | 2274 | placement_value: eval(has_tag_key("placement")?tag("placement"):tag("placement:backward")); |
| | 2275 | placement_offset: eval( |
| | 2276 | cond(prop("placement_value")="right_of:1",eval(-(prop(lane_offset_backward_1)+(prop(lane_width_backward_1)/2))), |
| | 2277 | cond(prop("placement_value")="right_of:2",eval(-(prop(lane_offset_backward_2)+(prop(lane_width_backward_2)/2))), |
| | 2278 | cond(prop("placement_value")="right_of:3",eval(-(prop(lane_offset_backward_3)+(prop(lane_width_backward_3)/2))), |
| | 2279 | cond(prop("placement_value")="right_of:4",eval(-(prop(lane_offset_backward_4)+(prop(lane_width_backward_4)/2))), |
| | 2280 | cond(prop("placement_value")="right_of:5",eval(-(prop(lane_offset_backward_5)+(prop(lane_width_backward_5)/2))), |
| | 2281 | cond(prop("placement_value")="right_of:6",eval(-(prop(lane_offset_backward_6)+(prop(lane_width_backward_6)/2))), |
| | 2282 | cond(prop("placement_value")="right_of:7",eval(-(prop(lane_offset_backward_7)+(prop(lane_width_backward_7)/2))), |
| | 2283 | cond(prop("placement_value")="right_of:8",eval(-(prop(lane_offset_backward_8)+(prop(lane_width_backward_8)/2))), |
| | 2284 | cond(prop("placement_value")="left_of:1",eval((prop(lane_width_backward_1)/2)-prop(lane_offset_backward_1)), |
| | 2285 | cond(prop("placement_value")="left_of:2",eval((prop(lane_width_backward_2)/2)-prop(lane_offset_backward_2)), |
| | 2286 | cond(prop("placement_value")="left_of:3",eval((prop(lane_width_backward_3)/2)-prop(lane_offset_backward_3)), |
| | 2287 | cond(prop("placement_value")="left_of:4",eval((prop(lane_width_backward_4)/2)-prop(lane_offset_backward_4)), |
| | 2288 | cond(prop("placement_value")="left_of:5",eval((prop(lane_width_backward_5)/2)-prop(lane_offset_backward_5)), |
| | 2289 | cond(prop("placement_value")="left_of:6",eval((prop(lane_width_backward_6)/2)-prop(lane_offset_backward_6)), |
| | 2290 | cond(prop("placement_value")="left_of:7",eval((prop(lane_width_backward_7)/2)-prop(lane_offset_backward_7)), |
| | 2291 | cond(prop("placement_value")="left_of:8",eval((prop(lane_width_backward_8)/2)-prop(lane_offset_backward_8)), |
| | 2292 | cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_backward_1)), |
| | 2293 | cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_backward_2)), |
| | 2294 | cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_backward_3)), |
| | 2295 | cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_backward_4)), |
| | 2296 | cond(prop("placement_value")="middle_of:5",eval(-prop(lane_offset_backward_5)), |
| | 2297 | cond(prop("placement_value")="middle_of:6",eval(-prop(lane_offset_backward_6)), |
| | 2298 | cond(prop("placement_value")="middle_of:7",eval(-prop(lane_offset_backward_7)), |
| | 2299 | cond(prop("placement_value")="middle_of:8",eval(-prop(lane_offset_backward_8)), |
| | 2300 | 0 |
| | 2301 | )))))))))))))))))))))))) |
| | 2302 | ); |
| | 2303 | } |
| | 2304 | way[is_prop_set(ok)]["placement:both_ways"]["placement:both_ways"!=transition] |
| | 2305 | { |
| | 2306 | placement_value: eval(tag("placement:both_ways")); |
| | 2307 | placement_offset: eval( |
| | 2308 | cond(prop("placement_value")="right_of:1",eval((prop(lane_width_bothways_1)/2)-prop(lane_offset_bothways_1)), |
| | 2309 | cond(prop("placement_value")="right_of:2",eval((prop(lane_width_bothways_2)/2)-prop(lane_offset_bothways_2)), |
| | 2310 | cond(prop("placement_value")="right_of:3",eval((prop(lane_width_bothways_3)/2)-prop(lane_offset_bothways_3)), |
| | 2311 | cond(prop("placement_value")="right_of:4",eval((prop(lane_width_bothways_4)/2)-prop(lane_offset_bothways_4)), |
| | 2312 | cond(prop("placement_value")="left_of:1",eval(-(prop(lane_offset_bothways_1)+(prop(lane_width_bothways_1)/2))), |
| | 2313 | cond(prop("placement_value")="left_of:2",eval(-(prop(lane_offset_bothways_2)+(prop(lane_width_bothways_2)/2))), |
| | 2314 | cond(prop("placement_value")="left_of:3",eval(-(prop(lane_offset_bothways_3)+(prop(lane_width_bothways_3)/2))), |
| | 2315 | cond(prop("placement_value")="left_of:4",eval(-(prop(lane_offset_bothways_4)+(prop(lane_width_bothways_4)/2))), |
| | 2316 | cond(prop("placement_value")="middle_of:1",eval(-prop(lane_offset_bothways_1)), |
| | 2317 | cond(prop("placement_value")="middle_of:2",eval(-prop(lane_offset_bothways_2)), |
| | 2318 | cond(prop("placement_value")="middle_of:3",eval(-prop(lane_offset_bothways_3)), |
| | 2319 | cond(prop("placement_value")="middle_of:4",eval(-prop(lane_offset_bothways_4)), |
| | 2320 | 0 |
| | 2321 | )))))))))))) |
| | 2322 | ); |
| | 2323 | } |
| | 2324 | |
| | 2325 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2326 | /* 4. Move the carriageway and the lanes */ |
| | 2327 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2328 | way[is_prop_set(ok)] |
| | 2329 | { |
| | 2330 | /* Move the carriageway borders */ |
| | 2331 | left_carriageway_border: eval((prop(left_carriageway_border) + prop(placement_offset))); |
| | 2332 | left_forward_border: eval((prop(left_forward_border) + prop(placement_offset))); |
| | 2333 | right_backward_border: eval((prop(right_backward_border) + prop(placement_offset))); |
| | 2334 | left_bothways_border: eval((prop(left_bothways_border) + prop(placement_offset))); |
| | 2335 | |
| | 2336 | /* Move the lanes */ |
| | 2337 | lane_offset_forward_1: eval((prop(lane_offset_forward_1) + prop(placement_offset))); |
| | 2338 | lane_offset_forward_2: eval((prop(lane_offset_forward_2) + prop(placement_offset))); |
| | 2339 | lane_offset_forward_3: eval((prop(lane_offset_forward_3) + prop(placement_offset))); |
| | 2340 | lane_offset_forward_4: eval((prop(lane_offset_forward_4) + prop(placement_offset))); |
| | 2341 | lane_offset_forward_5: eval((prop(lane_offset_forward_5) + prop(placement_offset))); |
| | 2342 | lane_offset_forward_6: eval((prop(lane_offset_forward_6) + prop(placement_offset))); |
| | 2343 | lane_offset_forward_7: eval((prop(lane_offset_forward_7) + prop(placement_offset))); |
| | 2344 | lane_offset_forward_8: eval((prop(lane_offset_forward_8) + prop(placement_offset))); |
| | 2345 | lane_offset_backward_1: eval((prop(lane_offset_backward_1) + prop(placement_offset))); |
| | 2346 | lane_offset_backward_2: eval((prop(lane_offset_backward_2) + prop(placement_offset))); |
| | 2347 | lane_offset_backward_3: eval((prop(lane_offset_backward_3) + prop(placement_offset))); |
| | 2348 | lane_offset_backward_4: eval((prop(lane_offset_backward_4) + prop(placement_offset))); |
| | 2349 | lane_offset_backward_5: eval((prop(lane_offset_backward_5) + prop(placement_offset))); |
| | 2350 | lane_offset_backward_6: eval((prop(lane_offset_backward_6) + prop(placement_offset))); |
| | 2351 | lane_offset_backward_7: eval((prop(lane_offset_backward_7) + prop(placement_offset))); |
| | 2352 | lane_offset_backward_8: eval((prop(lane_offset_backward_8) + prop(placement_offset))); |
| | 2353 | lane_offset_bothways_1: eval((prop(lane_offset_bothways_1) + prop(placement_offset))); |
| | 2354 | lane_offset_bothways_2: eval((prop(lane_offset_bothways_2) + prop(placement_offset))); |
| | 2355 | lane_offset_bothways_3: eval((prop(lane_offset_bothways_3) + prop(placement_offset))); |
| | 2356 | lane_offset_bothways_4: eval((prop(lane_offset_bothways_4) + prop(placement_offset))); |
| | 2357 | } |
| | 2358 | |
| | 2359 | /***************************************************************************************************************************************************/ |
| | 2360 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2361 | /* Render the carriageway */ |
| | 2362 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2363 | /***************************************************************************************************************************************************/ |
| | 2364 | way[is_prop_set(ok, "default")][is_prop_set(lanes_all, "default")]::Ground |
| | 2365 | { |
| | 2366 | linecap: none; |
| | 2367 | /* The "ground" will be drawn by each lane, so that we can use different colors per lane */ |
| | 2368 | opacity: 0.0; |
| | 2369 | width: eval(prop(lane_width_all,"default")); |
| | 2370 | offset: prop(placement_offset,"default"); |
| | 2371 | major-z-index: -1.0; |
| | 2372 | } |
| | 2373 | |
| | 2374 | /* Sidewalk and cycletrack */ |
| | 2375 | way|z17- {} /* ATTENTION: For whatever reason this is needed, otherwise the following won't be interpreted correctly */ |
| | 2376 | way|z17-[is_prop_set(ok, "default")][is_prop_set(lanes_all, "default")]::Ground |
| | 2377 | { |
| | 2378 | /* Cycletrack in an one-way on the left side? */ |
| | 2379 | temp_allow_cycleway_left: eval(!( |
| | 2380 | ((prop(oneway_type,"default")=1) && prop(style_right_hand_traffic,"default")) || |
| | 2381 | ((prop(oneway_type,"default")=(-1)) && (!prop(style_right_hand_traffic,"default"))) |
| | 2382 | )); |
| | 2383 | |
| | 2384 | temp_allow_cycleway_left: eval(prop(temp_allow_cycleway_left) || (has_tag_key("oneway:bicycle") && (tag("oneway:bicycle")="no"))); |
| | 2385 | /* Explicitely no cycletrack on the left side? */ |
| | 2386 | temp_allow_cycleway_left: eval((has_tag_key("cycleway:left") && (tag("cycleway:left")="no"))?false:prop(temp_allow_cycleway_left)); |
| | 2387 | /* Cycletrack on the left side */ |
| | 2388 | temp_cycleway_left: eval(((has_tag_key(cycleway) && ((tag(cycleway)="track") && prop(temp_allow_cycleway_left))) || |
| | 2389 | (has_tag_key("cycleway:left") && (tag("cycleway:left")="track"))) || |
| | 2390 | (has_tag_key("cycleway:both") && (tag("cycleway:both")="track")) |
| | 2391 | ); |
| | 2392 | |
| | 2393 | /* Sidewalk on the left side? */ |
| | 2394 | templ: eval((has_tag_key(sidewalk) && ((tag(sidewalk)="both") || (tag(sidewalk)="left")))?1:0); |
| | 2395 | |
| | 2396 | /* Combine sidewalk and cycletrack: 0=none; 1=sidewalk; 2=cycletrack; 3=sidewalk and cycletrack */ |
| | 2397 | templ: eval(prop(templ)+(prop(temp_cycleway_left)?2:0)); |
| | 2398 | |
| | 2399 | |
| | 2400 | /* Cycletrack in an one-way on the right side? */ |
| | 2401 | temp_allow_cycleway_right: eval(!( |
| | 2402 | ((prop(oneway_type,"default")=(-1)) && prop(style_right_hand_traffic,"default")) || |
| | 2403 | ((prop(oneway_type,"default")=1) && (!prop(style_right_hand_traffic,"default"))) |
| | 2404 | )); |
| | 2405 | |
| | 2406 | temp_allow_cycleway_right: eval(prop(temp_allow_cycleway_right) || (has_tag_key("oneway:bicycle") && (tag("oneway:bicycle")="no"))); |
| | 2407 | /* Explicitely no cycletrack on the right side? */ |
| | 2408 | temp_allow_cycleway_right: eval((has_tag_key("cycleway:right") && (tag("cycleway:right")="no"))?false:prop(temp_allow_cycleway_right)); |
| | 2409 | /* Cycletrack on the right side */ |
| | 2410 | temp_cycleway_right: eval(((has_tag_key(cycleway) && ((tag(cycleway)="track") && prop(temp_allow_cycleway_right))) || |
| | 2411 | (has_tag_key("cycleway:right") && (tag("cycleway:right")="track"))) || |
| | 2412 | (has_tag_key("cycleway:both") && (tag("cycleway:both")="track")) |
| | 2413 | ); |
| | 2414 | |
| | 2415 | /* Sidewalk on the right side? */ |
| | 2416 | tempr: eval((has_tag_key(sidewalk) && ((tag(sidewalk)="both") || (tag(sidewalk)="right")))?1:0); |
| | 2417 | |
| | 2418 | /* Combine sidewalk and cycletrack: 0=none; 1=sidewalk; 2=cycletrack; 3=sidewalk and cycletrack */ |
| | 2419 | tempr: eval(prop(tempr)+(prop(temp_cycleway_right)?2:0)); |
| | 2420 | |
| | 2421 | |
| | 2422 | left-casing-linecap: none; |
| | 2423 | left-casing-width: eval((prop(templ)>0)?(prop(lane_default_width,"default")/2):0); |
| | 2424 | left-casing-color: eval(get(prop(style_sidewalk_color,"default"),prop(templ))); |
| | 2425 | left-casing-opacity: prop(style_sidewalk_opacity,"default"); |
| | 2426 | |
| | 2427 | right-casing-linecap: none; |
| | 2428 | right-casing-width: eval((prop(tempr)>0)?(prop(lane_default_width,"default")/2):0); |
| | 2429 | right-casing-color: eval(get(prop(style_sidewalk_color,"default"),prop(tempr))); |
| | 2430 | right-casing-opacity: prop(style_sidewalk_opacity,"default"); |
| | 2431 | } |
| | 2432 | |
| | 2433 | /***************************************************************************************************************************************************/ |
| | 2434 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2435 | /* Render the lanes */ |
| | 2436 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2437 | /***************************************************************************************************************************************************/ |
| | 2438 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2439 | /* Forward lanes */ |
| | 2440 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2441 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1 |
| | 2442 | { |
| | 2443 | offset: eval(prop(lane_offset_forward_1,"default")); |
| | 2444 | width: eval((prop(lane_width_forward_1,"default")-prop(lane_casing,"default"))); |
| | 2445 | right-casing-dashes: eval(prop(change_forward_1_right,"default")); |
| | 2446 | left-casing-dashes: eval(prop(change_forward_1_left,"default")); |
| | 2447 | repeat-image: eval(prop(turn_image_forward_1,"default")); |
| | 2448 | |
| | 2449 | opacity: 0.0; linecap: none; |
| | 2450 | repeat-image-offset: eval(prop(offset)); |
| | 2451 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2452 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2453 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2454 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2455 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2456 | } |
| | 2457 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1_Color |
| | 2458 | { |
| | 2459 | offset: eval(prop(lane_offset_forward_1,"default")); |
| | 2460 | width: eval(prop(lane_width_forward_1,"default")); |
| | 2461 | color: prop(color_forward_1,"default"); |
| | 2462 | dashes: eval(is_prop_set(restriction_color_forward_1,"default")?list(20,20):prop(unset_property)); |
| | 2463 | dashes-background-color: eval(is_prop_set(restriction_color_forward_1,"default")? |
| | 2464 | prop(restriction_color_forward_1,"default"):prop(unset_property)); |
| | 2465 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2466 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2467 | } |
| | 2468 | way|z17-[is_prop_set(sign_1_forward_1, "default")]::Lane_Forward_1_Sign_1 |
| | 2469 | { |
| | 2470 | repeat-image: eval(prop(sign_1_forward_1,"default")); |
| | 2471 | repeat-image-offset: eval(prop(lane_offset_forward_1,"default")); |
| | 2472 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1")); |
| | 2473 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2474 | } |
| | 2475 | way|z17-[is_prop_set(sign_2_forward_1, "default")]::Lane_Forward_1_Sign_2 |
| | 2476 | { |
| | 2477 | repeat-image: eval(prop(sign_2_forward_1,"default")); |
| | 2478 | repeat-image-offset: eval(prop(lane_offset_forward_1,"default")); |
| | 2479 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1")); |
| | 2480 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2481 | } |
| | 2482 | way|z17-[is_prop_set(sign_3_forward_1, "default")]::Lane_Forward_1_Sign_3 |
| | 2483 | { |
| | 2484 | repeat-image: eval(prop(sign_3_forward_1,"default")); |
| | 2485 | repeat-image-offset: eval(prop(lane_offset_forward_1,"default")); |
| | 2486 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1")); |
| | 2487 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2488 | } |
| | 2489 | |
| | 2490 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2 |
| | 2491 | { |
| | 2492 | offset: eval(prop(lane_offset_forward_2,"default")); |
| | 2493 | width: eval((prop(lane_width_forward_2,"default")-prop(lane_casing,"default"))); |
| | 2494 | right-casing-dashes: eval(prop(change_forward_2_right,"default")); |
| | 2495 | left-casing-dashes: eval(prop(change_forward_2_left,"default")); |
| | 2496 | repeat-image: eval(prop(turn_image_forward_2,"default")); |
| | 2497 | |
| | 2498 | opacity: 0.0; linecap: none; |
| | 2499 | repeat-image-offset: eval(prop(offset)); |
| | 2500 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2501 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2502 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2503 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2504 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2505 | } |
| | 2506 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2_Color |
| | 2507 | { |
| | 2508 | offset: eval(prop(lane_offset_forward_2,"default")); |
| | 2509 | width: eval(prop(lane_width_forward_2,"default")); |
| | 2510 | color: prop(color_forward_2,"default"); |
| | 2511 | dashes: eval(is_prop_set(restriction_color_forward_2,"default")?list(20,20):prop(unset_property)); |
| | 2512 | dashes-background-color: eval(is_prop_set(restriction_color_forward_2,"default")? |
| | 2513 | prop(restriction_color_forward_2,"default"):prop(unset_property)); |
| | 2514 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2515 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2516 | } |
| | 2517 | way|z17-[is_prop_set(sign_1_forward_2, "default")]::Lane_Forward_2_Sign_1 |
| | 2518 | { |
| | 2519 | repeat-image: eval(prop(sign_1_forward_2,"default")); |
| | 2520 | repeat-image-offset: eval(prop(lane_offset_forward_2,"default")); |
| | 2521 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2")); |
| | 2522 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2523 | } |
| | 2524 | way|z17-[is_prop_set(sign_2_forward_2, "default")]::Lane_Forward_2_Sign_2 |
| | 2525 | { |
| | 2526 | repeat-image: eval(prop(sign_2_forward_2,"default")); |
| | 2527 | repeat-image-offset: eval(prop(lane_offset_forward_2,"default")); |
| | 2528 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2")); |
| | 2529 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2530 | } |
| | 2531 | way|z17-[is_prop_set(sign_3_forward_2, "default")]::Lane_Forward_2_Sign_3 |
| | 2532 | { |
| | 2533 | repeat-image: eval(prop(sign_3_forward_2,"default")); |
| | 2534 | repeat-image-offset: eval(prop(lane_offset_forward_2,"default")); |
| | 2535 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2")); |
| | 2536 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2537 | } |
| | 2538 | |
| | 2539 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3 |
| | 2540 | { |
| | 2541 | offset: eval(prop(lane_offset_forward_3,"default")); |
| | 2542 | width: eval((prop(lane_width_forward_3,"default")-prop(lane_casing,"default"))); |
| | 2543 | right-casing-dashes: eval(prop(change_forward_3_right,"default")); |
| | 2544 | left-casing-dashes: eval(prop(change_forward_3_left,"default")); |
| | 2545 | repeat-image: eval(prop(turn_image_forward_3,"default")); |
| | 2546 | |
| | 2547 | opacity: 0.0; linecap: none; |
| | 2548 | repeat-image-offset: eval(prop(offset)); |
| | 2549 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2550 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2551 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2552 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2553 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2554 | } |
| | 2555 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3_Color |
| | 2556 | { |
| | 2557 | offset: eval(prop(lane_offset_forward_3,"default")); |
| | 2558 | width: eval(prop(lane_width_forward_3,"default")); |
| | 2559 | color: prop(color_forward_3,"default"); |
| | 2560 | dashes: eval(is_prop_set(restriction_color_forward_3,"default")?list(20,20):prop(unset_property)); |
| | 2561 | dashes-background-color: eval(is_prop_set(restriction_color_forward_3,"default")? |
| | 2562 | prop(restriction_color_forward_3,"default"):prop(unset_property)); |
| | 2563 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2564 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2565 | } |
| | 2566 | way|z17-[is_prop_set(sign_1_forward_3, "default")]::Lane_Forward_3_Sign_1 |
| | 2567 | { |
| | 2568 | repeat-image: eval(prop(sign_1_forward_3,"default")); |
| | 2569 | repeat-image-offset: eval(prop(lane_offset_forward_3,"default")); |
| | 2570 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3")); |
| | 2571 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2572 | } |
| | 2573 | way|z17-[is_prop_set(sign_2_forward_3, "default")]::Lane_Forward_3_Sign_2 |
| | 2574 | { |
| | 2575 | repeat-image: eval(prop(sign_2_forward_3,"default")); |
| | 2576 | repeat-image-offset: eval(prop(lane_offset_forward_3,"default")); |
| | 2577 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3")); |
| | 2578 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2579 | } |
| | 2580 | way|z17-[is_prop_set(sign_3_forward_3, "default")]::Lane_Forward_3_Sign_3 |
| | 2581 | { |
| | 2582 | repeat-image: eval(prop(sign_3_forward_3,"default")); |
| | 2583 | repeat-image-offset: eval(prop(lane_offset_forward_3,"default")); |
| | 2584 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3")); |
| | 2585 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2586 | } |
| | 2587 | |
| | 2588 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4 |
| | 2589 | { |
| | 2590 | offset: eval(prop(lane_offset_forward_4,"default")); |
| | 2591 | width: eval((prop(lane_width_forward_4,"default")-prop(lane_casing,"default"))); |
| | 2592 | right-casing-dashes: eval(prop(change_forward_4_right,"default")); |
| | 2593 | left-casing-dashes: eval(prop(change_forward_4_left,"default")); |
| | 2594 | repeat-image: eval(prop(turn_image_forward_4,"default")); |
| | 2595 | |
| | 2596 | opacity: 0.0; linecap: none; |
| | 2597 | repeat-image-offset: eval(prop(offset)); |
| | 2598 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2599 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2600 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2601 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2602 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2603 | } |
| | 2604 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4_Color |
| | 2605 | { |
| | 2606 | offset: eval(prop(lane_offset_forward_4,"default")); |
| | 2607 | width: eval(prop(lane_width_forward_4,"default")); |
| | 2608 | color: prop(color_forward_4,"default"); |
| | 2609 | dashes: eval(is_prop_set(restriction_color_forward_4,"default")?list(20,20):prop(unset_property)); |
| | 2610 | dashes-background-color: eval(is_prop_set(restriction_color_forward_4,"default")? |
| | 2611 | prop(restriction_color_forward_4,"default"):prop(unset_property)); |
| | 2612 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2613 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2614 | } |
| | 2615 | way|z17-[is_prop_set(sign_1_forward_4, "default")]::Lane_Forward_4_Sign_1 |
| | 2616 | { |
| | 2617 | repeat-image: eval(prop(sign_1_forward_4,"default")); |
| | 2618 | repeat-image-offset: eval(prop(lane_offset_forward_4,"default")); |
| | 2619 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4")); |
| | 2620 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2621 | } |
| | 2622 | way|z17-[is_prop_set(sign_2_forward_4, "default")]::Lane_Forward_4_Sign_2 |
| | 2623 | { |
| | 2624 | repeat-image: eval(prop(sign_2_forward_4,"default")); |
| | 2625 | repeat-image-offset: eval(prop(lane_offset_forward_4,"default")); |
| | 2626 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4")); |
| | 2627 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2628 | } |
| | 2629 | way|z17-[is_prop_set(sign_3_forward_4, "default")]::Lane_Forward_4_Sign_3 |
| | 2630 | { |
| | 2631 | repeat-image: eval(prop(sign_3_forward_4,"default")); |
| | 2632 | repeat-image-offset: eval(prop(lane_offset_forward_4,"default")); |
| | 2633 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4")); |
| | 2634 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2635 | } |
| | 2636 | |
| | 2637 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5 |
| | 2638 | { |
| | 2639 | offset: eval(prop(lane_offset_forward_5,"default")); |
| | 2640 | width: eval((prop(lane_width_forward_5,"default")-prop(lane_casing,"default"))); |
| | 2641 | right-casing-dashes: eval(prop(change_forward_5_right,"default")); |
| | 2642 | left-casing-dashes: eval(prop(change_forward_5_left,"default")); |
| | 2643 | repeat-image: eval(prop(turn_image_forward_5,"default")); |
| | 2644 | |
| | 2645 | opacity: 0.0; linecap: none; |
| | 2646 | repeat-image-offset: eval(prop(offset)); |
| | 2647 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2648 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2649 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2650 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2651 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2652 | } |
| | 2653 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5_Color |
| | 2654 | { |
| | 2655 | offset: eval(prop(lane_offset_forward_5,"default")); |
| | 2656 | width: eval(prop(lane_width_forward_5,"default")); |
| | 2657 | color: prop(color_forward_5,"default"); |
| | 2658 | dashes: eval(is_prop_set(restriction_color_forward_5,"default")?list(20,20):prop(unset_property)); |
| | 2659 | dashes-background-color: eval(is_prop_set(restriction_color_forward_5,"default")? |
| | 2660 | prop(restriction_color_forward_5,"default"):prop(unset_property)); |
| | 2661 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2662 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2663 | } |
| | 2664 | way|z17-[is_prop_set(sign_1_forward_5, "default")]::Lane_Forward_5_Sign_1 |
| | 2665 | { |
| | 2666 | repeat-image: eval(prop(sign_1_forward_5,"default")); |
| | 2667 | repeat-image-offset: eval(prop(lane_offset_forward_5,"default")); |
| | 2668 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5")); |
| | 2669 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2670 | } |
| | 2671 | way|z17-[is_prop_set(sign_2_forward_5, "default")]::Lane_Forward_5_Sign_2 |
| | 2672 | { |
| | 2673 | repeat-image: eval(prop(sign_2_forward_5,"default")); |
| | 2674 | repeat-image-offset: eval(prop(lane_offset_forward_5,"default")); |
| | 2675 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5")); |
| | 2676 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2677 | } |
| | 2678 | way|z17-[is_prop_set(sign_3_forward_5, "default")]::Lane_Forward_5_Sign_3 |
| | 2679 | { |
| | 2680 | repeat-image: eval(prop(sign_3_forward_5,"default")); |
| | 2681 | repeat-image-offset: eval(prop(lane_offset_forward_5,"default")); |
| | 2682 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5")); |
| | 2683 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2684 | } |
| | 2685 | |
| | 2686 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6 |
| | 2687 | { |
| | 2688 | offset: eval(prop(lane_offset_forward_6,"default")); |
| | 2689 | width: eval((prop(lane_width_forward_6,"default")-prop(lane_casing,"default"))); |
| | 2690 | right-casing-dashes: eval(prop(change_forward_6_right,"default")); |
| | 2691 | left-casing-dashes: eval(prop(change_forward_6_left,"default")); |
| | 2692 | repeat-image: eval(prop(turn_image_forward_6,"default")); |
| | 2693 | |
| | 2694 | opacity: 0.0; linecap: none; |
| | 2695 | repeat-image-offset: eval(prop(offset)); |
| | 2696 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2697 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2698 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2699 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2700 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2701 | } |
| | 2702 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6_Color |
| | 2703 | { |
| | 2704 | offset: eval(prop(lane_offset_forward_6,"default")); |
| | 2705 | width: eval(prop(lane_width_forward_6,"default")); |
| | 2706 | color: prop(color_forward_6,"default"); |
| | 2707 | dashes: eval(is_prop_set(restriction_color_forward_6,"default")?list(20,20):prop(unset_property)); |
| | 2708 | dashes-background-color: eval(is_prop_set(restriction_color_forward_6,"default")? |
| | 2709 | prop(restriction_color_forward_6,"default"):prop(unset_property)); |
| | 2710 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2711 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2712 | } |
| | 2713 | way|z17-[is_prop_set(sign_1_forward_6, "default")]::Lane_Forward_6_Sign_1 |
| | 2714 | { |
| | 2715 | repeat-image: eval(prop(sign_1_forward_6,"default")); |
| | 2716 | repeat-image-offset: eval(prop(lane_offset_forward_6,"default")); |
| | 2717 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6")); |
| | 2718 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2719 | } |
| | 2720 | way|z17-[is_prop_set(sign_2_forward_6, "default")]::Lane_Forward_6_Sign_2 |
| | 2721 | { |
| | 2722 | repeat-image: eval(prop(sign_2_forward_6,"default")); |
| | 2723 | repeat-image-offset: eval(prop(lane_offset_forward_6,"default")); |
| | 2724 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6")); |
| | 2725 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2726 | } |
| | 2727 | way|z17-[is_prop_set(sign_3_forward_6, "default")]::Lane_Forward_6_Sign_3 |
| | 2728 | { |
| | 2729 | repeat-image: eval(prop(sign_3_forward_6,"default")); |
| | 2730 | repeat-image-offset: eval(prop(lane_offset_forward_6,"default")); |
| | 2731 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6")); |
| | 2732 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2733 | } |
| | 2734 | |
| | 2735 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7 |
| | 2736 | { |
| | 2737 | offset: eval(prop(lane_offset_forward_7,"default")); |
| | 2738 | width: eval((prop(lane_width_forward_7,"default")-prop(lane_casing,"default"))); |
| | 2739 | right-casing-dashes: eval(prop(change_forward_7_right,"default")); |
| | 2740 | left-casing-dashes: eval(prop(change_forward_7_left,"default")); |
| | 2741 | repeat-image: eval(prop(turn_image_forward_7,"default")); |
| | 2742 | |
| | 2743 | opacity: 0.0; linecap: none; |
| | 2744 | repeat-image-offset: eval(prop(offset)); |
| | 2745 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2746 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2747 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2748 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2749 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2750 | } |
| | 2751 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7_Color |
| | 2752 | { |
| | 2753 | offset: eval(prop(lane_offset_forward_7,"default")); |
| | 2754 | width: eval(prop(lane_width_forward_7,"default")); |
| | 2755 | color: prop(color_forward_7,"default"); |
| | 2756 | dashes: eval(is_prop_set(restriction_color_forward_7,"default")?list(20,20):prop(unset_property)); |
| | 2757 | dashes-background-color: eval(is_prop_set(restriction_color_forward_7,"default")? |
| | 2758 | prop(restriction_color_forward_7,"default"):prop(unset_property)); |
| | 2759 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2760 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2761 | } |
| | 2762 | way|z17-[is_prop_set(sign_1_forward_7, "default")]::Lane_Forward_7_Sign_1 |
| | 2763 | { |
| | 2764 | repeat-image: eval(prop(sign_1_forward_7,"default")); |
| | 2765 | repeat-image-offset: eval(prop(lane_offset_forward_7,"default")); |
| | 2766 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7")); |
| | 2767 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2768 | } |
| | 2769 | way|z17-[is_prop_set(sign_2_forward_7, "default")]::Lane_Forward_7_Sign_2 |
| | 2770 | { |
| | 2771 | repeat-image: eval(prop(sign_2_forward_7,"default")); |
| | 2772 | repeat-image-offset: eval(prop(lane_offset_forward_7,"default")); |
| | 2773 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7")); |
| | 2774 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2775 | } |
| | 2776 | way|z17-[is_prop_set(sign_3_forward_7, "default")]::Lane_Forward_7_Sign_3 |
| | 2777 | { |
| | 2778 | repeat-image: eval(prop(sign_3_forward_7,"default")); |
| | 2779 | repeat-image-offset: eval(prop(lane_offset_forward_7,"default")); |
| | 2780 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7")); |
| | 2781 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2782 | } |
| | 2783 | |
| | 2784 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8 |
| | 2785 | { |
| | 2786 | offset: eval(prop(lane_offset_forward_8,"default")); |
| | 2787 | width: eval((prop(lane_width_forward_8,"default")-prop(lane_casing,"default"))); |
| | 2788 | right-casing-dashes: eval(prop(change_forward_8_right,"default")); |
| | 2789 | left-casing-dashes: eval(prop(change_forward_8_left,"default")); |
| | 2790 | repeat-image: eval(prop(turn_image_forward_8,"default")); |
| | 2791 | |
| | 2792 | opacity: 0.0; linecap: none; |
| | 2793 | repeat-image-offset: eval(prop(offset)); |
| | 2794 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2795 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2796 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2797 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2798 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2799 | } |
| | 2800 | way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8_Color |
| | 2801 | { |
| | 2802 | offset: eval(prop(lane_offset_forward_8,"default")); |
| | 2803 | width: eval(prop(lane_width_forward_8,"default")); |
| | 2804 | color: prop(color_forward_8,"default"); |
| | 2805 | dashes: eval(is_prop_set(restriction_color_forward_8,"default")?list(20,20):prop(unset_property)); |
| | 2806 | dashes-background-color: eval(is_prop_set(restriction_color_forward_8,"default")? |
| | 2807 | prop(restriction_color_forward_8,"default"):prop(unset_property)); |
| | 2808 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2809 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2810 | } |
| | 2811 | way|z17-[is_prop_set(sign_1_forward_8, "default")]::Lane_Forward_8_Sign_1 |
| | 2812 | { |
| | 2813 | repeat-image: eval(prop(sign_1_forward_8,"default")); |
| | 2814 | repeat-image-offset: eval(prop(lane_offset_forward_8,"default")); |
| | 2815 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8")); |
| | 2816 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2817 | } |
| | 2818 | way|z17-[is_prop_set(sign_2_forward_8, "default")]::Lane_Forward_8_Sign_2 |
| | 2819 | { |
| | 2820 | repeat-image: eval(prop(sign_2_forward_8,"default")); |
| | 2821 | repeat-image-offset: eval(prop(lane_offset_forward_8,"default")); |
| | 2822 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8")); |
| | 2823 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2824 | } |
| | 2825 | way|z17-[is_prop_set(sign_3_forward_8, "default")]::Lane_Forward_8_Sign_3 |
| | 2826 | { |
| | 2827 | repeat-image: eval(prop(sign_3_forward_8,"default")); |
| | 2828 | repeat-image-offset: eval(prop(lane_offset_forward_8,"default")); |
| | 2829 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8")); |
| | 2830 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2831 | } |
| | 2832 | |
| | 2833 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2834 | /* Backward lanes */ |
| | 2835 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 2836 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1 |
| | 2837 | { |
| | 2838 | offset: eval(prop(lane_offset_backward_1,"default")); |
| | 2839 | width: eval((prop(lane_width_backward_1,"default")-prop(lane_casing,"default"))); |
| | 2840 | left-casing-dashes: eval(prop(change_backward_1_right,"default")); |
| | 2841 | right-casing-dashes: eval(prop(change_backward_1_left,"default")); |
| | 2842 | repeat-image: eval(prop(turn_image_backward_1,"default")); |
| | 2843 | |
| | 2844 | opacity: 0.0; linecap: none; |
| | 2845 | repeat-image-offset: eval(prop(offset)); |
| | 2846 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2847 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2848 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2849 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2850 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2851 | } |
| | 2852 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1_Color |
| | 2853 | { |
| | 2854 | offset: eval(prop(lane_offset_backward_1,"default")); |
| | 2855 | width: eval(prop(lane_width_backward_1,"default")); |
| | 2856 | color: prop(color_backward_1,"default"); |
| | 2857 | dashes: eval(is_prop_set(restriction_color_backward_1,"default")?list(20,20):prop(unset_property)); |
| | 2858 | dashes-background-color: eval(is_prop_set(restriction_color_backward_1,"default")? |
| | 2859 | prop(restriction_color_backward_1,"default"):prop(unset_property)); |
| | 2860 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2861 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2862 | } |
| | 2863 | way|z17-[is_prop_set(sign_1_backward_1, "default")]::Lane_Backward_1_Sign_1 |
| | 2864 | { |
| | 2865 | repeat-image: eval(prop(sign_1_backward_1,"default")); |
| | 2866 | repeat-image-offset: eval(prop(lane_offset_backward_1,"default")); |
| | 2867 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1")); |
| | 2868 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2869 | } |
| | 2870 | way|z17-[is_prop_set(sign_2_backward_1, "default")]::Lane_Backward_1_Sign_2 |
| | 2871 | { |
| | 2872 | repeat-image: eval(prop(sign_2_backward_1,"default")); |
| | 2873 | repeat-image-offset: eval(prop(lane_offset_backward_1,"default")); |
| | 2874 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1")); |
| | 2875 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2876 | } |
| | 2877 | way|z17-[is_prop_set(sign_3_backward_1, "default")]::Lane_Backward_1_Sign_3 |
| | 2878 | { |
| | 2879 | repeat-image: eval(prop(sign_3_backward_1,"default")); |
| | 2880 | repeat-image-offset: eval(prop(lane_offset_backward_1,"default")); |
| | 2881 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1")); |
| | 2882 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2883 | } |
| | 2884 | |
| | 2885 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2 |
| | 2886 | { |
| | 2887 | offset: eval(prop(lane_offset_backward_2,"default")); |
| | 2888 | width: eval((prop(lane_width_backward_2,"default")-prop(lane_casing,"default"))); |
| | 2889 | left-casing-dashes: eval(prop(change_backward_2_right,"default")); |
| | 2890 | right-casing-dashes: eval(prop(change_backward_2_left,"default")); |
| | 2891 | repeat-image: eval(prop(turn_image_backward_2,"default")); |
| | 2892 | |
| | 2893 | opacity: 0.0; linecap: none; |
| | 2894 | repeat-image-offset: eval(prop(offset)); |
| | 2895 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2896 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2897 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2898 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2899 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2900 | } |
| | 2901 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2_Color |
| | 2902 | { |
| | 2903 | offset: eval(prop(lane_offset_backward_2,"default")); |
| | 2904 | width: eval(prop(lane_width_backward_2,"default")); |
| | 2905 | color: prop(color_backward_2,"default"); |
| | 2906 | dashes: eval(is_prop_set(restriction_color_backward_2,"default")?list(20,20):prop(unset_property)); |
| | 2907 | dashes-background-color: eval(is_prop_set(restriction_color_backward_2,"default")? |
| | 2908 | prop(restriction_color_backward_2,"default"):prop(unset_property)); |
| | 2909 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2910 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2911 | } |
| | 2912 | way|z17-[is_prop_set(sign_1_backward_2, "default")]::Lane_Backward_2_Sign_1 |
| | 2913 | { |
| | 2914 | repeat-image: eval(prop(sign_1_backward_2,"default")); |
| | 2915 | repeat-image-offset: eval(prop(lane_offset_backward_2,"default")); |
| | 2916 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2")); |
| | 2917 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2918 | } |
| | 2919 | way|z17-[is_prop_set(sign_2_backward_2, "default")]::Lane_Backward_2_Sign_2 |
| | 2920 | { |
| | 2921 | repeat-image: eval(prop(sign_2_backward_2,"default")); |
| | 2922 | repeat-image-offset: eval(prop(lane_offset_backward_2,"default")); |
| | 2923 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2")); |
| | 2924 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2925 | } |
| | 2926 | way|z17-[is_prop_set(sign_3_backward_2, "default")]::Lane_Backward_2_Sign_3 |
| | 2927 | { |
| | 2928 | repeat-image: eval(prop(sign_3_backward_2,"default")); |
| | 2929 | repeat-image-offset: eval(prop(lane_offset_backward_2,"default")); |
| | 2930 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2")); |
| | 2931 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2932 | } |
| | 2933 | |
| | 2934 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3 |
| | 2935 | { |
| | 2936 | offset: eval(prop(lane_offset_backward_3,"default")); |
| | 2937 | width: eval((prop(lane_width_backward_3,"default")-prop(lane_casing,"default"))); |
| | 2938 | left-casing-dashes: eval(prop(change_backward_3_right,"default")); |
| | 2939 | right-casing-dashes: eval(prop(change_backward_3_left,"default")); |
| | 2940 | repeat-image: eval(prop(turn_image_backward_3,"default")); |
| | 2941 | |
| | 2942 | opacity: 0.0; linecap: none; |
| | 2943 | repeat-image-offset: eval(prop(offset)); |
| | 2944 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2945 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2946 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2947 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2948 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2949 | } |
| | 2950 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3_Color |
| | 2951 | { |
| | 2952 | offset: eval(prop(lane_offset_backward_3,"default")); |
| | 2953 | width: eval(prop(lane_width_backward_3,"default")); |
| | 2954 | color: prop(color_backward_3,"default"); |
| | 2955 | dashes: eval(is_prop_set(restriction_color_backward_3,"default")?list(20,20):prop(unset_property)); |
| | 2956 | dashes-background-color: eval(is_prop_set(restriction_color_backward_3,"default")? |
| | 2957 | prop(restriction_color_backward_3,"default"):prop(unset_property)); |
| | 2958 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 2959 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 2960 | } |
| | 2961 | way|z17-[is_prop_set(sign_1_backward_3, "default")]::Lane_Backward_3_Sign_1 |
| | 2962 | { |
| | 2963 | repeat-image: eval(prop(sign_1_backward_3,"default")); |
| | 2964 | repeat-image-offset: eval(prop(lane_offset_backward_3,"default")); |
| | 2965 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3")); |
| | 2966 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 2967 | } |
| | 2968 | way|z17-[is_prop_set(sign_2_backward_3, "default")]::Lane_Backward_3_Sign_2 |
| | 2969 | { |
| | 2970 | repeat-image: eval(prop(sign_2_backward_3,"default")); |
| | 2971 | repeat-image-offset: eval(prop(lane_offset_backward_3,"default")); |
| | 2972 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3")); |
| | 2973 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 2974 | } |
| | 2975 | way|z17-[is_prop_set(sign_3_backward_3, "default")]::Lane_Backward_3_Sign_3 |
| | 2976 | { |
| | 2977 | repeat-image: eval(prop(sign_3_backward_3,"default")); |
| | 2978 | repeat-image-offset: eval(prop(lane_offset_backward_3,"default")); |
| | 2979 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3")); |
| | 2980 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 2981 | } |
| | 2982 | |
| | 2983 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4 |
| | 2984 | { |
| | 2985 | offset: eval(prop(lane_offset_backward_4,"default")); |
| | 2986 | width: eval((prop(lane_width_backward_4,"default")-prop(lane_casing,"default"))); |
| | 2987 | left-casing-dashes: eval(prop(change_backward_4_right,"default")); |
| | 2988 | right-casing-dashes: eval(prop(change_backward_4_left,"default")); |
| | 2989 | repeat-image: eval(prop(turn_image_backward_4,"default")); |
| | 2990 | |
| | 2991 | opacity: 0.0; linecap: none; |
| | 2992 | repeat-image-offset: eval(prop(offset)); |
| | 2993 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 2994 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 2995 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2996 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 2997 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 2998 | } |
| | 2999 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4_Color |
| | 3000 | { |
| | 3001 | offset: eval(prop(lane_offset_backward_4,"default")); |
| | 3002 | width: eval(prop(lane_width_backward_4,"default")); |
| | 3003 | color: prop(color_backward_4,"default"); |
| | 3004 | dashes: eval(is_prop_set(restriction_color_backward_4,"default")?list(20,20):prop(unset_property)); |
| | 3005 | dashes-background-color: eval(is_prop_set(restriction_color_backward_4,"default")? |
| | 3006 | prop(restriction_color_backward_4,"default"):prop(unset_property)); |
| | 3007 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3008 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3009 | } |
| | 3010 | way|z17-[is_prop_set(sign_1_backward_4, "default")]::Lane_Backward_4_Sign_1 |
| | 3011 | { |
| | 3012 | repeat-image: eval(prop(sign_1_backward_4,"default")); |
| | 3013 | repeat-image-offset: eval(prop(lane_offset_backward_4,"default")); |
| | 3014 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4")); |
| | 3015 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 3016 | } |
| | 3017 | way|z17-[is_prop_set(sign_2_backward_4, "default")]::Lane_Backward_4_Sign_2 |
| | 3018 | { |
| | 3019 | repeat-image: eval(prop(sign_2_backward_4,"default")); |
| | 3020 | repeat-image-offset: eval(prop(lane_offset_backward_4,"default")); |
| | 3021 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4")); |
| | 3022 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 3023 | } |
| | 3024 | way|z17-[is_prop_set(sign_3_backward_4, "default")]::Lane_Backward_4_Sign_3 |
| | 3025 | { |
| | 3026 | repeat-image: eval(prop(sign_3_backward_4,"default")); |
| | 3027 | repeat-image-offset: eval(prop(lane_offset_backward_4,"default")); |
| | 3028 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4")); |
| | 3029 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 3030 | } |
| | 3031 | |
| | 3032 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5 |
| | 3033 | { |
| | 3034 | offset: eval(prop(lane_offset_backward_5,"default")); |
| | 3035 | width: eval((prop(lane_width_backward_5,"default")-prop(lane_casing,"default"))); |
| | 3036 | left-casing-dashes: eval(prop(change_backward_5_right,"default")); |
| | 3037 | right-casing-dashes: eval(prop(change_backward_5_left,"default")); |
| | 3038 | repeat-image: eval(prop(turn_image_backward_5,"default")); |
| | 3039 | |
| | 3040 | opacity: 0.0; linecap: none; |
| | 3041 | repeat-image-offset: eval(prop(offset)); |
| | 3042 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3043 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3044 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3045 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3046 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3047 | } |
| | 3048 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5_Color |
| | 3049 | { |
| | 3050 | offset: eval(prop(lane_offset_backward_5,"default")); |
| | 3051 | width: eval(prop(lane_width_backward_5,"default")); |
| | 3052 | color: prop(color_backward_5,"default"); |
| | 3053 | dashes: eval(is_prop_set(restriction_color_backward_5,"default")?list(20,20):prop(unset_property)); |
| | 3054 | dashes-background-color: eval(is_prop_set(restriction_color_backward_5,"default")? |
| | 3055 | prop(restriction_color_backward_5,"default"):prop(unset_property)); |
| | 3056 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3057 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3058 | } |
| | 3059 | way|z17-[is_prop_set(sign_1_backward_5, "default")]::Lane_Backward_5_Sign_1 |
| | 3060 | { |
| | 3061 | repeat-image: eval(prop(sign_1_backward_5,"default")); |
| | 3062 | repeat-image-offset: eval(prop(lane_offset_backward_5,"default")); |
| | 3063 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5")); |
| | 3064 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 3065 | } |
| | 3066 | way|z17-[is_prop_set(sign_2_backward_5, "default")]::Lane_Backward_5_Sign_2 |
| | 3067 | { |
| | 3068 | repeat-image: eval(prop(sign_2_backward_5,"default")); |
| | 3069 | repeat-image-offset: eval(prop(lane_offset_backward_5,"default")); |
| | 3070 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5")); |
| | 3071 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 3072 | } |
| | 3073 | way|z17-[is_prop_set(sign_3_backward_5, "default")]::Lane_Backward_5_Sign_3 |
| | 3074 | { |
| | 3075 | repeat-image: eval(prop(sign_3_backward_5,"default")); |
| | 3076 | repeat-image-offset: eval(prop(lane_offset_backward_5,"default")); |
| | 3077 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5")); |
| | 3078 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 3079 | } |
| | 3080 | |
| | 3081 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6 |
| | 3082 | { |
| | 3083 | offset: eval(prop(lane_offset_backward_6,"default")); |
| | 3084 | width: eval((prop(lane_width_backward_6,"default")-prop(lane_casing,"default"))); |
| | 3085 | left-casing-dashes: eval(prop(change_backward_6_right,"default")); |
| | 3086 | right-casing-dashes: eval(prop(change_backward_6_left,"default")); |
| | 3087 | repeat-image: eval(prop(turn_image_backward_6,"default")); |
| | 3088 | |
| | 3089 | opacity: 0.0; linecap: none; |
| | 3090 | repeat-image-offset: eval(prop(offset)); |
| | 3091 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3092 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3093 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3094 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3095 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3096 | } |
| | 3097 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6_Color |
| | 3098 | { |
| | 3099 | offset: eval(prop(lane_offset_backward_6,"default")); |
| | 3100 | width: eval(prop(lane_width_backward_6,"default")); |
| | 3101 | color: prop(color_backward_6,"default"); |
| | 3102 | dashes: eval(is_prop_set(restriction_color_backward_6,"default")?list(20,20):prop(unset_property)); |
| | 3103 | dashes-background-color: eval(is_prop_set(restriction_color_backward_6,"default")? |
| | 3104 | prop(restriction_color_backward_6,"default"):prop(unset_property)); |
| | 3105 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3106 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3107 | } |
| | 3108 | way|z17-[is_prop_set(sign_1_backward_6, "default")]::Lane_Backward_6_Sign_1 |
| | 3109 | { |
| | 3110 | repeat-image: eval(prop(sign_1_backward_6,"default")); |
| | 3111 | repeat-image-offset: eval(prop(lane_offset_backward_6,"default")); |
| | 3112 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6")); |
| | 3113 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 3114 | } |
| | 3115 | way|z17-[is_prop_set(sign_2_backward_6, "default")]::Lane_Backward_6_Sign_2 |
| | 3116 | { |
| | 3117 | repeat-image: eval(prop(sign_2_backward_6,"default")); |
| | 3118 | repeat-image-offset: eval(prop(lane_offset_backward_6,"default")); |
| | 3119 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6")); |
| | 3120 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 3121 | } |
| | 3122 | way|z17-[is_prop_set(sign_3_backward_6, "default")]::Lane_Backward_6_Sign_3 |
| | 3123 | { |
| | 3124 | repeat-image: eval(prop(sign_3_backward_6,"default")); |
| | 3125 | repeat-image-offset: eval(prop(lane_offset_backward_6,"default")); |
| | 3126 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6")); |
| | 3127 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 3128 | } |
| | 3129 | |
| | 3130 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7 |
| | 3131 | { |
| | 3132 | offset: eval(prop(lane_offset_backward_7,"default")); |
| | 3133 | width: eval((prop(lane_width_backward_7,"default")-prop(lane_casing,"default"))); |
| | 3134 | left-casing-dashes: eval(prop(change_backward_7_right,"default")); |
| | 3135 | right-casing-dashes: eval(prop(change_backward_7_left,"default")); |
| | 3136 | repeat-image: eval(prop(turn_image_backward_7,"default")); |
| | 3137 | |
| | 3138 | opacity: 0.0; linecap: none; |
| | 3139 | repeat-image-offset: eval(prop(offset)); |
| | 3140 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3141 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3142 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3143 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3144 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3145 | } |
| | 3146 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7_Color |
| | 3147 | { |
| | 3148 | offset: eval(prop(lane_offset_backward_7,"default")); |
| | 3149 | width: eval(prop(lane_width_backward_7,"default")); |
| | 3150 | color: prop(color_backward_7,"default"); |
| | 3151 | dashes: eval(is_prop_set(restriction_color_backward_7,"default")?list(20,20):prop(unset_property)); |
| | 3152 | dashes-background-color: eval(is_prop_set(restriction_color_backward_7,"default")? |
| | 3153 | prop(restriction_color_backward_7,"default"):prop(unset_property)); |
| | 3154 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3155 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3156 | } |
| | 3157 | way|z17-[is_prop_set(sign_1_backward_7, "default")]::Lane_Backward_7_Sign_1 |
| | 3158 | { |
| | 3159 | repeat-image: eval(prop(sign_1_backward_7,"default")); |
| | 3160 | repeat-image-offset: eval(prop(lane_offset_backward_7,"default")); |
| | 3161 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7")); |
| | 3162 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 3163 | } |
| | 3164 | way|z17-[is_prop_set(sign_2_backward_7, "default")]::Lane_Backward_7_Sign_2 |
| | 3165 | { |
| | 3166 | repeat-image: eval(prop(sign_2_backward_7,"default")); |
| | 3167 | repeat-image-offset: eval(prop(lane_offset_backward_7,"default")); |
| | 3168 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7")); |
| | 3169 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 3170 | } |
| | 3171 | way|z17-[is_prop_set(sign_3_backward_7, "default")]::Lane_Backward_7_Sign_3 |
| | 3172 | { |
| | 3173 | repeat-image: eval(prop(sign_3_backward_7,"default")); |
| | 3174 | repeat-image-offset: eval(prop(lane_offset_backward_7,"default")); |
| | 3175 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7")); |
| | 3176 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 3177 | } |
| | 3178 | |
| | 3179 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8 |
| | 3180 | { |
| | 3181 | offset: eval(prop(lane_offset_backward_8,"default")); |
| | 3182 | width: eval((prop(lane_width_backward_8,"default")-prop(lane_casing,"default"))); |
| | 3183 | left-casing-dashes: eval(prop(change_backward_8_right,"default")); |
| | 3184 | right-casing-dashes: eval(prop(change_backward_8_left,"default")); |
| | 3185 | repeat-image: eval(prop(turn_image_backward_8,"default")); |
| | 3186 | |
| | 3187 | opacity: 0.0; linecap: none; |
| | 3188 | repeat-image-offset: eval(prop(offset)); |
| | 3189 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3190 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3191 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3192 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3193 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3194 | } |
| | 3195 | way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8_Color |
| | 3196 | { |
| | 3197 | offset: eval(prop(lane_offset_backward_8,"default")); |
| | 3198 | width: eval(prop(lane_width_backward_8,"default")); |
| | 3199 | color: prop(color_backward_8,"default"); |
| | 3200 | dashes: eval(is_prop_set(restriction_color_backward_8,"default")?list(20,20):prop(unset_property)); |
| | 3201 | dashes-background-color: eval(is_prop_set(restriction_color_backward_8,"default")? |
| | 3202 | prop(restriction_color_backward_8,"default"):prop(unset_property)); |
| | 3203 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3204 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3205 | } |
| | 3206 | way|z17-[is_prop_set(sign_1_backward_8, "default")]::Lane_Backward_8_Sign_1 |
| | 3207 | { |
| | 3208 | repeat-image: eval(prop(sign_1_backward_8,"default")); |
| | 3209 | repeat-image-offset: eval(prop(lane_offset_backward_8,"default")); |
| | 3210 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8")); |
| | 3211 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 3); |
| | 3212 | } |
| | 3213 | way|z17-[is_prop_set(sign_2_backward_8, "default")]::Lane_Backward_8_Sign_2 |
| | 3214 | { |
| | 3215 | repeat-image: eval(prop(sign_2_backward_8,"default")); |
| | 3216 | repeat-image-offset: eval(prop(lane_offset_backward_8,"default")); |
| | 3217 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8")); |
| | 3218 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 2); |
| | 3219 | } |
| | 3220 | way|z17-[is_prop_set(sign_3_backward_8, "default")]::Lane_Backward_8_Sign_3 |
| | 3221 | { |
| | 3222 | repeat-image: eval(prop(sign_3_backward_8,"default")); |
| | 3223 | repeat-image-offset: eval(prop(lane_offset_backward_8,"default")); |
| | 3224 | repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8")); |
| | 3225 | repeat-image-spacing: eval(prop(repeat-image-height) * 4); repeat-image-phase: eval(prop(repeat-image-height) * 4); |
| | 3226 | } |
| | 3227 | |
| | 3228 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3229 | /* Bothways lanes */ |
| | 3230 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3231 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1 |
| | 3232 | { |
| | 3233 | offset: eval(prop(lane_offset_bothways_1,"default")); |
| | 3234 | width: eval((prop(lane_width_bothways_1,"default")-prop(lane_casing,"default"))); |
| | 3235 | right-casing-dashes: eval(prop(change_bothways_1_right,"default")); |
| | 3236 | left-casing-dashes: eval(prop(change_bothways_1_left,"default")); |
| | 3237 | repeat-image: eval(prop(turn_image_bothways_1,"default")); |
| | 3238 | |
| | 3239 | opacity: 0.0; linecap: none; |
| | 3240 | repeat-image-offset: eval(prop(offset)); |
| | 3241 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3242 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3243 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3244 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3245 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3246 | } |
| | 3247 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1_Color |
| | 3248 | { |
| | 3249 | offset: eval(prop(lane_offset_bothways_1,"default")); |
| | 3250 | width: eval(prop(lane_width_bothways_1,"default")); |
| | 3251 | color: prop(color_bothways_1,"default"); |
| | 3252 | dashes: eval(is_prop_set(restriction_color_bothways_1,"default")?list(20,20):prop(unset_property)); |
| | 3253 | dashes-background-color: eval(is_prop_set(restriction_color_bothways_1,"default")? |
| | 3254 | prop(restriction_color_bothways_1,"default"):prop(unset_property)); |
| | 3255 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3256 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3257 | } |
| | 3258 | |
| | 3259 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2 |
| | 3260 | { |
| | 3261 | offset: eval(prop(lane_offset_bothways_2,"default")); |
| | 3262 | width: eval((prop(lane_width_bothways_2,"default")-prop(lane_casing,"default"))); |
| | 3263 | right-casing-dashes: eval(prop(change_bothways_2_right,"default")); |
| | 3264 | left-casing-dashes: eval(prop(change_bothways_2_left,"default")); |
| | 3265 | repeat-image: eval(prop(turn_image_bothways_2,"default")); |
| | 3266 | |
| | 3267 | opacity: 0.0; linecap: none; |
| | 3268 | repeat-image-offset: eval(prop(offset)); |
| | 3269 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3270 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3271 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3272 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3273 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3274 | } |
| | 3275 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2_Color |
| | 3276 | { |
| | 3277 | offset: eval(prop(lane_offset_bothways_2,"default")); |
| | 3278 | width: eval(prop(lane_width_bothways_2,"default")); |
| | 3279 | color: prop(color_bothways_2,"default"); |
| | 3280 | dashes: eval(is_prop_set(restriction_color_bothways_2,"default")?list(20,20):prop(unset_property)); |
| | 3281 | dashes-background-color: eval(is_prop_set(restriction_color_bothways_2,"default")? |
| | 3282 | prop(restriction_color_bothways_2,"default"):prop(unset_property)); |
| | 3283 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3284 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3285 | } |
| | 3286 | |
| | 3287 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3 |
| | 3288 | { |
| | 3289 | offset: eval(prop(lane_offset_bothways_3,"default")); |
| | 3290 | width: eval((prop(lane_width_bothways_3,"default")-prop(lane_casing,"default"))); |
| | 3291 | right-casing-dashes: eval(prop(change_bothways_3_right,"default")); |
| | 3292 | left-casing-dashes: eval(prop(change_bothways_3_left,"default")); |
| | 3293 | repeat-image: eval(prop(turn_image_bothways_3,"default")); |
| | 3294 | |
| | 3295 | opacity: 0.0; linecap: none; |
| | 3296 | repeat-image-offset: eval(prop(offset)); |
| | 3297 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3298 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3299 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3300 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3301 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3302 | } |
| | 3303 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3_Color |
| | 3304 | { |
| | 3305 | offset: eval(prop(lane_offset_bothways_3,"default")); |
| | 3306 | width: eval(prop(lane_width_bothways_3,"default")); |
| | 3307 | color: prop(color_bothways_3,"default"); |
| | 3308 | dashes: eval(is_prop_set(restriction_color_bothways_3,"default")?list(20,20):prop(unset_property)); |
| | 3309 | dashes-background-color: eval(is_prop_set(restriction_color_bothways_3,"default")? |
| | 3310 | prop(restriction_color_bothways_3,"default"):prop(unset_property)); |
| | 3311 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3312 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3313 | } |
| | 3314 | |
| | 3315 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4 |
| | 3316 | { |
| | 3317 | offset: eval(prop(lane_offset_bothways_4,"default")); |
| | 3318 | width: eval((prop(lane_width_bothways_4,"default")-prop(lane_casing,"default"))); |
| | 3319 | right-casing-dashes: eval(prop(change_bothways_4_right,"default")); |
| | 3320 | left-casing-dashes: eval(prop(change_bothways_4_left,"default")); |
| | 3321 | repeat-image: eval(prop(turn_image_bothways_4,"default")); |
| | 3322 | |
| | 3323 | opacity: 0.0; linecap: none; |
| | 3324 | repeat-image-offset: eval(prop(offset)); |
| | 3325 | repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width))); |
| | 3326 | repeat-image-spacing: eval(prop(repeat-image-height) * 3); |
| | 3327 | right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3328 | left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default")); |
| | 3329 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); |
| | 3330 | } |
| | 3331 | way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4_Color |
| | 3332 | { |
| | 3333 | offset: eval(prop(lane_offset_bothways_4,"default")); |
| | 3334 | width: eval(prop(lane_width_bothways_4,"default")); |
| | 3335 | color: prop(color_bothways_4,"default"); |
| | 3336 | dashes: eval(is_prop_set(restriction_color_bothways_4,"default")?list(20,20):prop(unset_property)); |
| | 3337 | dashes-background-color: eval(is_prop_set(restriction_color_bothways_4,"default")? |
| | 3338 | prop(restriction_color_bothways_4,"default"):prop(unset_property)); |
| | 3339 | opacity: prop(style_lane_opacity,"default"); linecap: none; |
| | 3340 | major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1; |
| | 3341 | } |
| | 3342 | |
| | 3343 | /***************************************************************************************************************************************************/ |
| | 3344 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3345 | /* Railway rendering */ |
| | 3346 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3347 | /***************************************************************************************************************************************************/ |
| | 3348 | way|z18-[railway=rail]::Railway_Way, |
| | 3349 | way|z18-[railway=light_rail]::Railway_Way, |
| | 3350 | way|z18-[railway=subway]::Railway_Way, |
| | 3351 | way|z18-[railway=miniature]::Railway_Way, |
| | 3352 | way|z18-[railway=tram]::Railway_Way |
| | 3353 | { |
| | 3354 | /* Determine gauge (safety limits: 1 - 10000 mm) */ |
| | 3355 | rail_gauge_list: eval(has_tag_key("gauge")?split(";",tag("gauge")):list(1435)); |
| | 3356 | rail_gauge: eval(get(prop(rail_gauge_list),length(prop(rail_gauge_list))-1)); |
| | 3357 | rail_gauge: eval(min(10000,cond(prop(rail_gauge)<1,1435,prop(rail_gauge)))); |
| | 3358 | |
| | 3359 | /* Ties should be rendered in case standard and miniature railways; this might be override by the key embedded */ |
| | 3360 | rail_show_ties: eval(cond(((tag("railway")=="rail") || (tag("railway")=="miniature")),yes,no)); |
| | 3361 | rail_show_ties: eval(cond(has_tag_key("embedded"),cond(tag("embedded")=="no",yes,no),prop(rail_show_ties))); |
| | 3362 | |
| | 3363 | /* Type of electrification: */ |
| | 3364 | /* * rail -> show a yellow border on one rail */ |
| | 3365 | /* * contact_line -> show a contact line near the middle of the track */ |
| | 3366 | rail_show_contact_line: eval(cond(has_tag_key("electrified"),cond(tag("electrified")="contact_line",yes,no),no)); |
| | 3367 | rail_electrified_rail: eval(cond(has_tag_key("electrified"),cond(tag("electrified")="rail",yes,no),no)); |
| | 3368 | |
| | 3369 | /* Make rails transparent within tunnels */ |
| | 3370 | rail_image_opacity: eval(cond(((has_tag_key("tunnel")) && (tag("tunnel")=="yes")),0.2,0.8)); |
| | 3371 | |
| | 3372 | /* Create image */ |
| | 3373 | rail_image: eval(concat( |
| | 3374 | cond(prop(rail_show_ties),"<rect x='0' y='0' width='8' height='80' style='stroke:#301004; fill:#90300C;'/>",""), |
| | 3375 | "<line x1='0' y1= '8' x2='32' y2= '8' style='stroke:",cond(prop(rail_electrified_rail),"#FFFF00","#301004"),";'/>", |
| | 3376 | "<line x1='0' y1='10' x2='32' y2='10' style='stroke:#602008;stroke-width:3px'/>", |
| | 3377 | "<line x1='0' y1='12' x2='32' y2='12' style='stroke:#301004;'/>", |
| | 3378 | "<line x1='0' y1='67' x2='32' y2='67' style='stroke:#301004;'/>", |
| | 3379 | "<line x1='0' y1='69' x2='32' y2='69' style='stroke:#602008;stroke-width:3px'/>", |
| | 3380 | "<line x1='0' y1='71' x2='32' y2='71' style='stroke:#301004;'/>", |
| | 3381 | cond(prop(rail_show_contact_line),"<line x1='0' y1='35' x2='32' y2='35' style='stroke:#060200;'/>","") |
| | 3382 | )); |
| | 3383 | repeat-image: concat("data:image/svg+xml,<svg width='32px' height='80px'><g fill-opacity='",prop(rail_image_opacity),"' opacity='",prop(rail_image_opacity),"'>",prop(rail_image),"</g></svg>"); |
| | 3384 | repeat-image-height: eval(max(2,ceil((prop(rail_gauge)*prop(pixel_per_metre,"default"))*0.0012))); |
| | 3385 | } |
| | 3386 | |
| | 3387 | /***************************************************************************************************************************************************/ |
| | 3388 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3389 | /* Extra rendering for footways/cycleways if not already rendered */ |
| | 3390 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3391 | /***************************************************************************************************************************************************/ |
| | 3392 | way|z17-[!is_prop_set(ok, "default")][highway=footway], |
| | 3393 | way|z17-[!is_prop_set(ok, "default")][highway=cycleway] |
| | 3394 | { |
| | 3395 | width: eval(2*prop(pixel_per_metre,"default")); |
| | 3396 | linecap: none; |
| | 3397 | opacity: eval(prop("style_lane_opacity","default")); |
| | 3398 | right-casing-width: eval(max(1,0.15*prop(pixel_per_metre,"default"))); right-casing-color: gray; |
| | 3399 | left-casing-width: eval(max(1,0.15*prop(pixel_per_metre,"default"))); left-casing-color: gray; |
| | 3400 | casing-linecap: none; |
| | 3401 | temp: 0; |
| | 3402 | temp: eval(prop(temp)+(((tag("highway")="footway") || ((has_tag_key("foot")) && (tag("foot") ="designated")))?1:0)); |
| | 3403 | temp: eval(prop(temp)+(((tag("highway")="cycleway") || ((has_tag_key("bicycle")) && (tag("bicycle")="designated")))?2:0)); |
| | 3404 | color: eval(get(prop(style_sidewalk_color,"default"),prop(temp))); |
| | 3405 | } |
| | 3406 | |
| | 3407 | /***************************************************************************************************************************************************/ |
| | 3408 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3409 | /* Additional attributes/features */ |
| | 3410 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3411 | /***************************************************************************************************************************************************/ |
| | 3412 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3413 | /* Proposed man_made=bridge */ |
| | 3414 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3415 | area[man_made=bridge] |
| | 3416 | { |
| | 3417 | fill-color: #808080; |
| | 3418 | fill-opacity: 0.5; |
| | 3419 | color: #404DA0; |
| | 3420 | width: 5; |
| | 3421 | } |
| | 3422 | |
| | 3423 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3424 | /* Proposed highway=junction */ |
| | 3425 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3426 | area[highway=junction] |
| | 3427 | { |
| | 3428 | fill-color: #808080; |
| | 3429 | fill-opacity: 0.5; |
| | 3430 | width: 2; |
| | 3431 | color: #505050; |
| | 3432 | opacity: 0.5; |
| | 3433 | } |
| | 3434 | |
| | 3435 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3436 | /* Street lamp */ |
| | 3437 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3438 | node|z17-[highway="street_lamp"]::Lighting_1 |
| | 3439 | { |
| | 3440 | symbol-shape: circle; |
| | 3441 | symbol-size: eval(12 * prop(pixel_per_metre,"default")); |
| | 3442 | symbol-fill-color: white; |
| | 3443 | symbol-fill-opacity: 0.07; |
| | 3444 | } |
| | 3445 | node|z17-[highway="street_lamp"]::Lighting_2 |
| | 3446 | { |
| | 3447 | symbol-shape: circle; |
| | 3448 | symbol-size: eval(18 * prop(pixel_per_metre,"default")); |
| | 3449 | symbol-fill-color: white; |
| | 3450 | symbol-fill-opacity: 0.05; |
| | 3451 | } |
| | 3452 | node|z17-[highway="street_lamp"]::Lighting_3 |
| | 3453 | { |
| | 3454 | symbol-shape: circle; |
| | 3455 | symbol-size: eval(25 * prop(pixel_per_metre,"default")); |
| | 3456 | symbol-fill-color: white; |
| | 3457 | symbol-fill-opacity: 0.05; |
| | 3458 | } |
| | 3459 | |
| | 3460 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3461 | /* Lighting */ |
| | 3462 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3463 | way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_1 |
| | 3464 | { |
| | 3465 | width: eval(prop(width,"Ground")); |
| | 3466 | width: eval(prop(width)+(is_prop_set(left-casing-width,"Ground")?prop(left-casing-width,"Ground"):0)); |
| | 3467 | width: eval(prop(width)+(is_prop_set(right-casing-width,"Ground")?prop(right-casing-width,"Ground"):0)); |
| | 3468 | opacity: 0.1; color: white; linecap: none; |
| | 3469 | major-z-index: eval(prop(major-z-index,"Ground")-0.1); |
| | 3470 | offset: eval(prop(offset,"Ground")); |
| | 3471 | } |
| | 3472 | way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_2 |
| | 3473 | { |
| | 3474 | width: eval(prop(width,"Lighting_1")+(3 * prop(pixel_per_metre,"default"))); |
| | 3475 | opacity: 0.1; color: white; linecap: none; |
| | 3476 | major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1")); |
| | 3477 | } |
| | 3478 | way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_3 |
| | 3479 | { |
| | 3480 | width: eval(prop(width,"Lighting_2")+(3 * prop(pixel_per_metre,"default"))); |
| | 3481 | opacity: 0.1; color: white; linecap: none; |
| | 3482 | major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1")); |
| | 3483 | } |
| | 3484 | |
| | 3485 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3486 | /* Destination */ |
| | 3487 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3488 | way|z17-[is_prop_set(ok, "default")][destination][!prop(style_use_svg_destination, "default")]::Destination |
| | 3489 | { |
| | 3490 | text-offset: eval(prop("placement_offset","default")); |
| | 3491 | text: eval(get(split(";",tag(destination)),0)); |
| | 3492 | text: eval(has_tag_key("destination:ref")?concat(prop(text)," (",get(split(";",tag("destination:ref")),0),")"):prop(text)); |
| | 3493 | text: eval(has_tag_key("destination:country")?concat(prop(text)," [",get(split(";",tag("destination:country")),0),"]"):prop(text)); |
| | 3494 | font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3; |
| | 3495 | text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3; |
| | 3496 | } |
| | 3497 | way|z17-[is_prop_set(ok, "default")]["destination:forward"][!prop(style_use_svg_destination, "default")]::Destination_Forward |
| | 3498 | { |
| | 3499 | text-offset: eval(prop("placement_offset","default")+(eval(prop(lane_width_all,"default"))/4)); |
| | 3500 | text: eval(get(split(";",tag("destination:forward")),0)); |
| | 3501 | text: eval(has_tag_key("destination:ref:forward")?concat(prop(text)," (",get(split(";",tag("destination:ref:forward")),0),")"):prop(text)); |
| | 3502 | text: eval(has_tag_key("destination:country:forward")?concat(prop(text)," [",get(split(";",tag("destination:country:forward")),0),"]"):prop(text)); |
| | 3503 | font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3; |
| | 3504 | text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3; |
| | 3505 | } |
| | 3506 | way|z17-[is_prop_set(ok, "default")]["destination:backward"][!prop(style_use_svg_destination, "default")]::Destination_Backward |
| | 3507 | { |
| | 3508 | text-offset: eval(prop("placement_offset","default")-(eval(prop(lane_width_all,"default"))/4)); |
| | 3509 | text: eval(get(split(";",tag("destination:backward")),0)); |
| | 3510 | text: eval(has_tag_key("destination:ref:backward")?concat(prop(text)," (",get(split(";",tag("destination:ref:backward")),0),")"):prop(text)); |
| | 3511 | text: eval(has_tag_key("destination:country:backward")?concat(prop(text)," [",get(split(";",tag("destination:country:backward")),0),"]"):prop(text)); |
| | 3512 | font-size: eval(prop(lane_default_width,"default")); text-color: white; text-opacity: 0.3; |
| | 3513 | text-halo-radius: 2; text-halo-color: blue; text-halo-opacity: 0.3; |
| | 3514 | } |
| | 3515 | |
| | 3516 | /* TODO: make opacity configurable */ |
| | 3517 | way{} /* If this is removed the following won't be interpreted */ |
| | 3518 | way|z17-[is_prop_set(ok, "default")][destination][prop(style_use_svg_destination, "default")]::Destination |
| | 3519 | { |
| | 3520 | complete_destination: eval(get(split(";",tag(destination)),0)); |
| | 3521 | complete_destination: eval(has_tag_key("destination:ref")?concat(prop(complete_destination)," (",get(split(";",tag("destination:ref")),0),")"):prop(complete_destination)); |
| | 3522 | complete_destination: eval(has_tag_key("destination:int_ref")?concat(prop(complete_destination)," <",get(split(";",tag("destination:int_ref")),0),">"):prop(complete_destination)); |
| | 3523 | complete_destination: eval(has_tag_key("destination:country")?concat(prop(complete_destination)," [",get(split(";",tag("destination:country")),0),"]"):prop(complete_destination)); |
| | 3524 | /* complete_destination: eval(replace(replace(replace(replace(replace(prop(complete_destination),"&","&"),"[","["),"]","]"),"<","<"),">",">")); */ |
| | 3525 | complete_destination: eval(XML_encode(replace(prop(complete_destination),"%","prc"))); /* CDATA blocks are not working, XML_encode is not sufficient, currently no idea how to escape % */ |
| | 3526 | |
| | 3527 | repeat-image: eval(concat("data:image/svg+xml,<svg height='70px'><g fill-opacity='0.3' stroke-opacity='0.3'><text x='0' y='50' font-size='50' fill='white' stroke='blue'>",prop(complete_destination),"</text></g></svg>")); |
| | 3528 | repeat-image-height: eval(prop(lane_default_width,"default")*prop(lanes_fwd,"default")); |
| | 3529 | repeat-image-offset: eval(prop("placement_offset","default")); |
| | 3530 | repeat-image-spacing: eval(prop(repeat-image-height)); |
| | 3531 | repeat-image-phase: eval(prop(repeat-image-height)); |
| | 3532 | } |
| | 3533 | way{} /* If this is removed the following won't be interpreted */ |
| | 3534 | way|z17-[is_prop_set(ok, "default")]["destination:forward"][prop(style_use_svg_destination, "default")]::Destination_Forward |
| | 3535 | { |
| | 3536 | complete_destination: eval(get(split(";",tag("destination:forward")),0)); |
| | 3537 | complete_destination: eval(has_tag_key("destination:ref:forward")?concat(prop(complete_destination)," (",get(split(";",tag("destination:ref:forward")),0),")"):prop(complete_destination)); |
| | 3538 | complete_destination: eval(has_tag_key("destination:int_ref:forward")?concat(prop(complete_destination)," <",get(split(";",tag("destination:int_ref:forward")),0),">"):prop(complete_destination)); |
| | 3539 | complete_destination: eval(has_tag_key("destination:country:forward")?concat(prop(complete_destination)," [",get(split(";",tag("destination:country:forward")),0),"]"):prop(complete_destination)); |
| | 3540 | complete_destination: eval(XML_encode(replace(prop(complete_destination),"%","prc"))); /* CDATA blocks are not working, XML_encode is not sufficient, currently no idea how to escape % */ |
| | 3541 | |
| | 3542 | repeat-image: eval(concat("data:image/svg+xml,<svg height='70px'><g fill-opacity='0.3' stroke-opacity='0.3'><text x='0' y='50' font-size='50' fill='white' stroke='blue'>",prop(complete_destination),"</text></g></svg>")); |
| | 3543 | repeat-image-height: eval(prop(lane_default_width,"default")*prop(lanes_fwd,"default")); |
| | 3544 | repeat-image-offset: eval(prop("left_forward_border","default")-(prop("lane_width_all_forward","default")/2)); |
| | 3545 | repeat-image-spacing: eval(prop(repeat-image-height)); |
| | 3546 | repeat-image-phase: eval(prop(repeat-image-height)); |
| | 3547 | } |
| | 3548 | way{} /* If this is removed the following won't be interpreted */ |
| | 3549 | way|z17-[is_prop_set(ok, "default")]["destination:backward"][prop(style_use_svg_destination, "default")]::Destination_Backward |
| | 3550 | { |
| | 3551 | complete_destination: eval(get(split(";",tag("destination:backward")),0)); |
| | 3552 | complete_destination: eval(has_tag_key("destination:ref:backward")?concat(prop(complete_destination)," (",get(split(";",tag("destination:ref:backward")),0),")"):prop(complete_destination)); |
| | 3553 | complete_destination: eval(has_tag_key("destination:int_ref:backward")?concat(prop(complete_destination)," <",get(split(";",tag("destination:int_ref:backward")),0),">"):prop(complete_destination)); |
| | 3554 | complete_destination: eval(has_tag_key("destination:country:backward")?concat(prop(complete_destination)," [",get(split(";",tag("destination:country:backward")),0),"]"):prop(complete_destination)); |
| | 3555 | complete_destination: eval(XML_encode(replace(prop(complete_destination),"%","prc"))); /* CDATA blocks are not working, XML_encode is not sufficient, currently no idea how to escape % */ |
| | 3556 | |
| | 3557 | repeat-image: eval(concat("data:image/svg+xml,<svg height='70px'><g fill-opacity='0.3' stroke-opacity='0.3'><text x='0' y='50' font-size='50' fill='white' stroke='blue'>",prop(complete_destination),"</text></g></svg>")); |
| | 3558 | repeat-image-height: eval(prop(lane_default_width,"default")*prop(lanes_bwd,"default")); |
| | 3559 | repeat-image-offset: eval(prop("right_backward_border","default")+(prop("lane_width_all_backward","default")/2)); |
| | 3560 | repeat-image-spacing: eval(prop(repeat-image-height)); |
| | 3561 | repeat-image-phase: eval(prop(repeat-image-height)); |
| | 3562 | } |
| | 3563 | |
| | 3564 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3565 | /* destination_sign relation (experimental support - only one sign per way is supported) */ |
| | 3566 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3567 | relation[is_prop_set(ok, "default")][type="destination_sign"] >[role="to"] way|z17-::Destination_Sign |
| | 3568 | { |
| | 3569 | sign_font_size: 50; |
| | 3570 | sign_border: 5; |
| | 3571 | sign_height: 70; |
| | 3572 | sign_opacity: 0.5; |
| | 3573 | sign_text: eval(parent_tag(destination)); |
| | 3574 | sign_temp: eval(parent_tag("distance")); |
| | 3575 | sign_text: eval(is_prop_set(sign_temp)?concat(prop(sign_text)," ",replace(replace(prop(sign_temp)," km","")," mi","")):prop(sign_text)); |
| | 3576 | sign_ref: eval(parent_tag("destination:ref")); |
| | 3577 | sign_int_ref: eval(parent_tag("destination:int_ref")); |
| | 3578 | |
| | 3579 | sign_text_width: eval(length(prop(sign_text))*prop(sign_font_size)); /* As font-family=monospace is not working, this value is just a guess*/ |
| | 3580 | sign_text_x: eval((prop(sign_text_width)/2)+(2*prop(sign_border))); |
| | 3581 | sign_text_y: eval(prop(sign_font_size)); |
| | 3582 | |
| | 3583 | sign_ref_width: eval(is_prop_set(sign_ref)?(length(prop(sign_ref))*prop(sign_font_size)*1.2):0); |
| | 3584 | sign_ref_x: eval(prop(sign_text_width)+(3*prop(sign_border))); |
| | 3585 | sign_ref_y: eval(prop(sign_border)); |
| | 3586 | sign_ref_height: eval(prop(sign_height)-(2*prop(sign_border))); |
| | 3587 | sign_ref_text_x: eval(prop(sign_ref_x)+(prop(sign_ref_width)/2)); |
| | 3588 | sign_ref_text_y: eval(prop(sign_font_size)); |
| | 3589 | |
| | 3590 | sign_int_ref_width: eval(is_prop_set(sign_int_ref)?(length(prop(sign_int_ref))*prop(sign_font_size)*1.2):0); |
| | 3591 | sign_int_ref_x: eval(prop(sign_ref_x)+prop(sign_ref_width)); |
| | 3592 | sign_int_ref_y: eval(prop(sign_border)); |
| | 3593 | sign_int_ref_height: eval(prop(sign_height)-(2*prop(sign_border))); |
| | 3594 | sign_int_ref_text_x: eval(prop(sign_int_ref_x)+(prop(sign_int_ref_width)/2)); |
| | 3595 | sign_int_ref_text_y: eval(prop(sign_font_size)); |
| | 3596 | |
| | 3597 | sign_width: eval(((prop(sign_text_width)+(4*prop(sign_border)))+prop(sign_ref_width))+prop(sign_int_ref_width)); |
| | 3598 | sign_border_width: eval(prop(sign_width)-(prop(sign_border)*2)); |
| | 3599 | sign_border_height: eval(prop(sign_height)-(prop(sign_border)*2)); |
| | 3600 | |
| | 3601 | sign_colour_back: eval(parent_tag("colour:back")); |
| | 3602 | sign_colour_back: eval(is_prop_set(sign_colour_back)?prop(sign_colour_back):"white"); |
| | 3603 | |
| | 3604 | sign_colour_text: eval(parent_tag("colour:text")); |
| | 3605 | sign_colour_text: eval(is_prop_set(sign_colour_text)?prop(sign_colour_text):"blue"); |
| | 3606 | |
| | 3607 | sign_colour_arrow: eval(parent_tag("colour:arrow")); |
| | 3608 | sign_colour_arrow: eval(is_prop_set(sign_colour_arrow)?prop(sign_colour_arrow):"blue"); |
| | 3609 | |
| | 3610 | sign_colour_ref_text: eval(parent_tag("colour:text:ref")); |
| | 3611 | sign_colour_ref_text: eval(is_prop_set(sign_colour_ref)?prop(sign_colour_ref):"white"); |
| | 3612 | |
| | 3613 | sign_colour_ref_back: eval(parent_tag("colour:back:ref")); |
| | 3614 | sign_colour_ref_back: eval(is_prop_set(sign_colour_ref)?prop(sign_colour_ref):"blue"); |
| | 3615 | |
| | 3616 | sign_colour_int_ref_text: eval(parent_tag("colour:text:int_ref")); |
| | 3617 | sign_colour_int_ref_text: eval(is_prop_set(sign_colour_int_ref)?prop(sign_colour_int_ref):"white"); |
| | 3618 | |
| | 3619 | sign_colour_int_ref_back: eval(parent_tag("colour:back:int_ref")); |
| | 3620 | sign_colour_int_ref_back: eval(is_prop_set(sign_colour_int_ref)?prop(sign_colour_int_ref):"green"); |
| | 3621 | |
| | 3622 | |
| | 3623 | repeat-image: eval(concat("data:image/svg+xml,<svg height='",prop(sign_height),"px'><rect fill-opacity='",prop(sign_opacity),"' fill='",prop(sign_colour_back),"' stroke-opacity='",prop(sign_opacity),"' stroke='",prop(sign_colour_arrow),"' stroke-width='",prop(sign_border),"' x='",prop(sign_border),"' y='",prop(sign_border),"' width='",prop(sign_border_width),"' height='",prop(sign_border_height),"'/>", |
| | 3624 | "<g fill-opacity='",prop(sign_opacity),"'><text text-anchor='middle' x='",prop(sign_text_x),"' y='",prop(sign_text_y),"' font-size='",prop(sign_font_size),"' fill='",prop(sign_colour_text),"'>",prop(sign_text),"</text></g>", |
| | 3625 | "<rect fill-opacity='",prop(sign_opacity),"' fill='",prop(sign_colour_ref_back),"' x='",prop(sign_ref_x),"' y='",prop(sign_ref_y),"' width='",prop(sign_ref_width),"' height='",prop(sign_ref_height),"' />", |
| | 3626 | "<g fill-opacity='",prop(sign_opacity),"'><text text-anchor='middle' x='",prop(sign_ref_text_x),"' y='",prop(sign_ref_text_y),"' font-size='",prop(sign_font_size),"' fill='",prop(sign_colour_ref_text),"'>",prop(sign_ref),"</text></g>", |
| | 3627 | "<rect fill-opacity='",prop(sign_opacity),"' fill='",prop(sign_colour_int_ref_back),"' x='",prop(sign_int_ref_x),"' y='",prop(sign_int_ref_y),"' width='",prop(sign_int_ref_width),"' height='",prop(sign_int_ref_height),"' />", |
| | 3628 | "<g fill-opacity='",prop(sign_opacity),"'><text text-anchor='middle' x='",prop(sign_int_ref_text_x),"' y='",prop(sign_int_ref_text_y),"' font-size='",prop(sign_font_size),"' fill='",prop(sign_colour_int_ref_text),"'>",prop(sign_int_ref),"</text></g>", |
| | 3629 | "</svg>")); |
| | 3630 | repeat-image-spacing: 100000; /* It means: do not repeat! */ |
| | 3631 | repeat-image-offset: eval((is_prop_set(left_carriageway_border,"default")?(prop(left_carriageway_border,"default")):0)+(prop(pixel_per_metre,"default")*3)); |
| | 3632 | repeat-image-height: eval(prop(pixel_per_metre,"default")*3); |
| | 3633 | } |
| | 3634 | |
| | 3635 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3636 | /* Traffic signs */ |
| | 3637 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3638 | |
| | 3639 | /* Disable rendering of traffic signs on low zoom levels */ |
| | 3640 | node|z-15[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/], |
| | 3641 | node|z-15[traffic_sign=~/^(.*;)*overtaking(;.*)*$/] |
| | 3642 | { icon-image: prop(unset_property); } |
| | 3643 | |
| | 3644 | node|z16-[traffic_sign] |
| | 3645 | { |
| | 3646 | traffic_sign_svg: ""; |
| | 3647 | traffic_sign_top: 0; |
| | 3648 | } |
| | 3649 | |
| | 3650 | /* Speed limit in km/h */ |
| | 3651 | node|z16-[traffic_sign~=maxspeed][maxspeed>0] |
| | 3652 | { |
| | 3653 | t: eval((tag(maxspeed)<10)?1.0:((tag(maxspeed)<100)?0.8:((tag(maxspeed)<1000)?0.6:0.4))); |
| | 3654 | t_x: eval((tag(maxspeed)<10)?45:((tag(maxspeed)<100)?60:((tag(maxspeed)<1000)?80:120))); |
| | 3655 | t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?concat("<rect x='0' y='",(prop(traffic_sign_top)+0),"' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='",(prop(traffic_sign_top)+135),"' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>"):""); |
| | 3656 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='45' stroke='red' stroke-width='10' fill='white' /><text style='font-size:60px; font-weight:bold;' x='",prop(t_x),"' y='",(prop(traffic_sign_top)+70),"' text-anchor='middle' transform='scale(",prop(t)," 1.0)'>",tag(maxspeed),"</text>")); |
| | 3657 | traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140)); |
| | 3658 | } |
| | 3659 | |
| | 3660 | /* Speed limit in mph */ |
| | 3661 | node|z16-[traffic_sign~=maxspeed][maxspeed=~/[0-9]+ mph/] |
| | 3662 | { |
| | 3663 | t_speed: eval(get(split(" ",tag(maxspeed)),0)); |
| | 3664 | t: eval((prop(t_speed)<10)?1.0:((prop(t_speed)<100)?0.8:((prop(t_speed)<1000)?0.6:0.4))); |
| | 3665 | t_x: eval((prop(t_speed)<10)?45:((prop(t_speed)<100)?60:((prop(t_speed)<1000)?80:120))); |
| | 3666 | t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?concat("<rect x='0' y='",(prop(traffic_sign_top)+0),"' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='",(prop(traffic_sign_top)+135),"' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>"):""); |
| | 3667 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='45' stroke='red' stroke-width='10' fill='yellow' /><text style='font-size:60px; font-weight:bold;' x='",prop(t_x),"' y='",(prop(traffic_sign_top)+70),"' text-anchor='middle' transform='scale(",prop(t)," 1.0)'>",prop(t_speed),"</text>")); |
| | 3668 | traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140)); |
| | 3669 | } |
| | 3670 | |
| | 3671 | /* End of speed limit but not overtaking allowed (otherwise single traffic sign -> see below) */ |
| | 3672 | node|z16-[traffic_sign~=maxspeed][maxspeed=implicit][overtaking!=yes], |
| | 3673 | node|z16-[traffic_sign~=maxspeed][maxspeed=implicit][overtaking=yes]["source:maxspeed"=~/.*zone.*/] |
| | 3674 | { |
| | 3675 | t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?"<rect x='0' y='0' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='135' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>":""); |
| | 3676 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='50' fill='white' /><circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='46' stroke='black' stroke-width='3' fill='white' /><text style='fill:#DDD; font-size:60px; font-weight:bold;' x='47' y='",(prop(traffic_sign_top)+70),"' text-anchor='middle'>XX</text><line x1='17' y1='",(prop(traffic_sign_top)+83),"' x2='83' y2='",(prop(traffic_sign_top)+17),"' stroke='black' stroke-width='15' />")); |
| | 3677 | traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140)); |
| | 3678 | } |
| | 3679 | |
| | 3680 | /* No overtaking */ |
| | 3681 | node|z16-[traffic_sign~=overtaking][overtaking=no] |
| | 3682 | { |
| | 3683 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),"<g transform='translate(0,",prop(traffic_sign_top),")'><g transform='scale(0.137931)'><circle cx='362.5' cy='362.5' r='350' style='fill:white;stroke:black;stroke-width:2.5px' /><circle cx='362.5' cy='362.5' r='290' style='fill:white;stroke:#c00;stroke-width:93.75'/><path d='M 151.8,375.1 C 151.4,338.9 149.4,370.0 171.2,316.4 C 187.0,279.9 171.0,289.7 252.7,288.4 C 325.3,289.9 310.7,279.3 327.4,318.1 C 348.3,367.6 346.7,341.7 346.5,374.0 C 345.7,409.5 358.9,400.4 248.9,401.6 C 139.7,400.1 152.7,409.4 151.9,375.1 z M 174.0,340.1 L 188.9,305.6 C 191.7,299.5 190.8,300.4 197.3,300.4 L 301.8,300.4 C 307.4,300.4 306.6,300.0 308.9,305.4 L 323.8,339.7 L 174.0,340.1 z M 163.3,405.5 L 191.2,405.5 C 191.1,440.6 194.0,438.6 178.8,438.8 C 160.7,438.8 163.5,440.6 163.3,405.6 z M 307.2,405.8 L 335.2,405.8 C 335.0,440.9 337.5,438.5 321.7,438.6 C 305.3,438.4 307.4,441.0 307.2,405.8 z ' style='fill:#c00;fill-rule:evenodd' />", |
| | 3684 | "<path d='M 377.4,375.1 C 376.9,338.9 375.0,370.0 396.8,316.4 C 412.6,279.9 396.6,289.7 478.2,288.4 C 550.9,289.9 536.2,279.3 552.9,318.1 C 573.8,367.6 572.2,341.7 572.1,374.0 C 571.3,409.5 584.4,400.4 474.4,401.6 C 365.3,400.1 378.2,409.4 377.4,375.1 z M 399.5,340.1 L 414.5,305.6 C 417.2,299.5 416.4,300.4 422.9,300.4 L 527.3,300.4 C 533.0,300.4 532.2,300.0 534.5,305.4 L 549.3,339.7 L 399.5,340.1 z M 388.8,405.6 L 416.8,405.5 C 416.7,440.6 419.6,438.6 404.4,438.8 C 386.2,438.8 389.1,440.6 388.8,405.6 z M 532.7,405.8 L 560.7,405.8 C 560.5,440.9 563.1,438.5 547.2,438.6 C 530.9,438.4 532.9,441.0 532.7,405.8 z ' style='fill:black;fill-rule:evenodd' /></g></g>")); |
| | 3685 | traffic_sign_top: eval(prop(traffic_sign_top)+100); |
| | 3686 | } |
| | 3687 | |
| | 3688 | /* Overtaking allowed and also not implicit speed limit (or implicit speed zone)*/ |
| | 3689 | node|z16-[traffic_sign~=overtaking][overtaking=yes][maxspeed!=implicit], |
| | 3690 | node|z16-[traffic_sign~=overtaking][overtaking=yes][maxspeed=implicit]["source:maxspeed"=~/.*zone.*/] |
| | 3691 | { |
| | 3692 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),"<g transform='translate(0,",prop(traffic_sign_top),")'><g transform='scale(0.137931)'><circle cx='362.5' cy='362.5' r='350' style='fill:white;stroke:black;stroke-width:2.5px' /><circle cx='362.5' cy='362.5' r='330' style='fill:white;stroke:black;stroke-width:20'/><path d='M 151.8,375.1 C 151.4,338.9 149.4,370.0 171.2,316.4 C 187.0,279.9 171.0,289.7 252.7,288.4 C 325.3,289.9 310.7,279.3 327.4,318.1 C 348.3,367.6 346.7,341.7 346.5,374.0 C 345.7,409.5 358.9,400.4 248.9,401.6 C 139.7,400.1 152.7,409.4 151.9,375.1 z M 174.0,340.1 L 188.9,305.6 C 191.7,299.5 190.8,300.4 197.3,300.4 L 301.8,300.4 C 307.4,300.4 306.6,300.0 308.9,305.4 L 323.8,339.7 L 174.0,340.1 z M 163.3,405.5 L 191.2,405.5 C 191.1,440.6 194.0,438.6 178.8,438.8 C 160.7,438.8 163.5,440.6 163.3,405.6 z M 307.2,405.8 L 335.2,405.8 C 335.0,440.9 337.5,438.5 321.7,438.6 C 305.3,438.4 307.4,441.0 307.2,405.8 z ' style='fill:gray;fill-rule:evenodd' />", |
| | 3693 | "<path d='M 377.4,375.1 C 376.9,338.9 375.0,370.0 396.8,316.4 C 412.6,279.9 396.6,289.7 478.2,288.4 C 550.9,289.9 536.2,279.3 552.9,318.1 C 573.8,367.6 572.2,341.7 572.1,374.0 C 571.3,409.5 584.4,400.4 474.4,401.6 C 365.3,400.1 378.2,409.4 377.4,375.1 z M 399.5,340.1 L 414.5,305.6 C 417.2,299.5 416.4,300.4 422.9,300.4 L 527.3,300.4 C 533.0,300.4 532.2,300.0 534.5,305.4 L 549.3,339.7 L 399.5,340.1 z M 388.8,405.6 L 416.8,405.5 C 416.7,440.6 419.6,438.6 404.4,438.8 C 386.2,438.8 389.1,440.6 388.8,405.6 z M 532.7,405.8 L 560.7,405.8 C 560.5,440.9 563.1,438.5 547.2,438.6 C 530.9,438.4 532.9,441.0 532.7,405.8 z ' style='fill:gray;fill-rule:evenodd' /></g><line x1='18' y1='82' x2='82' y2='18' stroke='black' stroke-width='15' /></g>")); |
| | 3694 | traffic_sign_top: eval(prop(traffic_sign_top)+100); |
| | 3695 | } |
| | 3696 | |
| | 3697 | /* End of speed limit (not zone!) and also overtaking allowed -> single traffic sign*/ |
| | 3698 | node|z16-[traffic_sign~=maxspeed][maxspeed=implicit][overtaking=yes][!"source:maxspeed"], |
| | 3699 | node|z16-[traffic_sign~=maxspeed][maxspeed=implicit][overtaking=yes]["source:maxspeed"=~/^((?!zone).)*$/] |
| | 3700 | { |
| | 3701 | traffic_sign_svg: eval(concat(prop(traffic_sign_svg),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='50' fill='white' /><circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='46' stroke='black' stroke-width='3' fill='white' /><line x1='17' y1='",(prop(traffic_sign_top)+83),"' x2='83' y2='",(prop(traffic_sign_top)+17),"' stroke='black' stroke-width='15' />")); |
| | 3702 | traffic_sign_top: eval(prop(traffic_sign_top)+100); |
| | 3703 | } |
| | 3704 | |
| | 3705 | /* Now render the traffic sign */ |
| | 3706 | node|z16-[!(prop(traffic_sign_svg,"default")="")] |
| | 3707 | { |
| | 3708 | major-z-index: 5; /* JOSM added some default rendering, which interferes with this */ |
| | 3709 | icon-image: eval(concat("data:image/svg+xml,<svg width='100px' height='",prop(traffic_sign_top),"'>",prop(traffic_sign_svg),"</svg>")); |
| | 3710 | icon-width: eval(max(12,prop(pixel_per_metre))); |
| | 3711 | } |
| | 3712 | |
| | 3713 | /* Disable JOSMs default rendering (this is a hack and may fail at any time) */ |
| | 3714 | /* Make sure, that the selector is identical to the one that actually renders the traffic sign */ |
| | 3715 | node|z16-[!(prop(traffic_sign_svg,"default")="")]::core_maxnodebg |
| | 3716 | { |
| | 3717 | symbol-shape: none; |
| | 3718 | } |
| | 3719 | node|z16-[!(prop(traffic_sign_svg,"default")="")]::core_maxnodefg |
| | 3720 | { |
| | 3721 | text: none; |
| | 3722 | symbol-shape: none; |
| | 3723 | } |
| | 3724 | |
| | 3725 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3726 | /* Member nodes of enforcement relations */ |
| | 3727 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3728 | relation[type="enforcement"] >[role="from"] node |
| | 3729 | { |
| | 3730 | symbol-stroke-color: #00FF00; symbol-shape: square; symbol-size: 5; symbol-stroke-width: 2; |
| | 3731 | } |
| | 3732 | relation[type="enforcement"] >[role="to"] node |
| | 3733 | { |
| | 3734 | symbol-stroke-color: #FF0000; symbol-shape: square; symbol-size: 5; symbol-stroke-width: 2; |
| | 3735 | } |
| | 3736 | |
| | 3737 | /***************************************************************************************************************************************************/ |
| | 3738 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3739 | /* Check for some common errors */ |
| | 3740 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3741 | /***************************************************************************************************************************************************/ |
| | 3742 | way{} /* Why-oh-why do I need this.... */ |
| | 3743 | |
| | 3744 | /* Discouraged alternative values for oneway */ |
| | 3745 | way[oneway=true], way[oneway=1] { data_error: "use oneway=yes"; } |
| | 3746 | |
| | 3747 | /* Rejected turn lanes proposal */ |
| | 3748 | way["lanes:turnright"], way["lanes:turnleft"], |
| | 3749 | way["lanes:through"], way["lanes:merge"], |
| | 3750 | way["lanes:turnright:forward"], way["lanes:turnleft:forward"], |
| | 3751 | way["lanes:through:forward"], way["lanes:merge:forward"], |
| | 3752 | way["lanes:turnright:backward"], way["lanes:turnleft:backward"], |
| | 3753 | way["lanes:through:backward"], way["lanes:merge:backward"] |
| | 3754 | { data_error: "lanes:<turn> rejected"; } |
| | 3755 | |
| | 3756 | /* Common typos in destination tags */ |
| | 3757 | way["destination:forward:ref"] { data_error: "use destination:ref:forward"; } |
| | 3758 | way["destination:backward:ref"] { data_error: "use destination:ref:backward"; } |
| | 3759 | way["destination:forward:int_ref"] { data_error: "use destination:int_ref:forward"; } |
| | 3760 | way["destination:backward:int_ref"] { data_error: "use destination:int_ref:backward"; } |
| | 3761 | way["destination:forward:symbol"] { data_error: "use destination:symbol:forward"; } |
| | 3762 | way["destination:backward:symbol"] { data_error: "use destination:symbol:backward"; } |
| | 3763 | way["destination:forward:country"] { data_error: "use destination:country:forward"; } |
| | 3764 | way["destination:backward:country"] { data_error: "use destination:country:backward"; } |
| | 3765 | |
| | 3766 | way["destination:sign"] { data_error: "use destination:symbol"; } |
| | 3767 | way["destination:sign:forward"] { data_error: "use destination:symbol"; } |
| | 3768 | way["destination:sign:backward"] { data_error: "use destination:symbol"; } |
| | 3769 | way["destination:sign:lanes"] { data_error: "use destination:symbol"; } |
| | 3770 | way["destination:sign:lanes:forward"] { data_error: "use destination:symbol"; } |
| | 3771 | way["destination:sign:lanes:backward"] { data_error: "use destination:symbol"; } |
| | 3772 | |
| | 3773 | way[destination=~/:\S/] { data_error: "use ; instead of : to separate values"; } |
| | 3774 | way[destination:lanes=~/:\S/] { data_error: "use ; instead of : to separate values"; } |
| | 3775 | way[destination:lanes:forward=~/:\S/] { data_error: "use ; instead of : to separate values"; } |
| | 3776 | way[destination:lanes:backward=~/:\S/] { data_error: "use ; instead of : to separate values"; } |
| | 3777 | |
| | 3778 | way[destination=~/,/] { data_error: "use ; instead of , to separate values"; } |
| | 3779 | way[destination:lanes=~/,/] { data_error: "use ; instead of , to separate values"; } |
| | 3780 | way[destination:lanes:forward=~/,/] { data_error: "use ; instead of , to separate values"; } |
| | 3781 | way[destination:lanes:backward=~/,/] { data_error: "use ; instead of , to separate values"; } |
| | 3782 | |
| | 3783 | way["transit"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;)*$",tag("transit"))?prop(data_error):"invalid transit value"); } |
| | 3784 | way["transit:forward"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;)*$",tag("transit:forward"))?prop(data_error):"invalid transit:forward value"); } |
| | 3785 | way["transit:backward"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;)*$",tag("transit:backward"))?prop(data_error):"invalid transit:backward value"); } |
| | 3786 | way["transit:lanes"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;|\\|)*$",tag("transit:lanes"))?prop(data_error):"invalid transit:lanes value"); } |
| | 3787 | way["transit:lanes:forward"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;|\\|)*$",tag("transit:lanes:forward"))?prop(data_error):"invalid transit:lanes:forward value"); } |
| | 3788 | way["transit:lanes:backward"] { data_error: eval(regexp_test("^(continue|fork|fork:[3-9]|new_on_left|new_on_left:[2-9]|new_on_right|new_on_right:[2-9]|join_with_left|join_with_right|end|leave|;|\\|)*$",tag("transit:lanes:backward"))?prop(data_error):"invalid transit:lanes:backward value"); } |
| | 3789 | way["transit:both_ways"] { data_error: "use the relation instead of transit:both_ways"; } |
| | 3790 | way["transit:lanes:both_ways"] { data_error: "use the relation instead of transit:lanes:both_ways"; } |
| | 3791 | |
| | 3792 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3793 | /* Disputed checks: disabled by default */ |
| | 3794 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3795 | /* maxspeed should be numerical (yes, this is disputed, I know, that's why this is disabled by default) */ |
| | 3796 | way[prop(style_show_disputed)][maxspeed] { data_error: eval(regexp_test("^[0-9]+(| mph| km/h)$",tag(maxspeed))?prop(data_error):"maxspeed not numerical"); } |
| | 3797 | way[prop(style_show_disputed)]["maxspeed:forward"] { data_error: eval(regexp_test("^[0-9]+(| mph| km/h)$",tag("maxspeed:forward"))?prop(data_error):"maxspeed:forward not numerical"); } |
| | 3798 | way[prop(style_show_disputed)]["maxspeed:backward"] { data_error: eval(regexp_test("^[0-9]+(| mph| km/h)$",tag("maxspeed:backward"))?prop(data_error):"maxspeed:backward not numerical"); } |
| | 3799 | /* A source should be given for maxspeed */ |
| | 3800 | way[prop(style_show_disputed)][maxspeed][!"source:maxspeed"] { data_warning: "source:maxspeed missing"; } |
| | 3801 | /* Value of source:maxspeed should be <country code>:<context> */ |
| | 3802 | way[prop(style_show_disputed)]["source:maxspeed"] { data_warning: eval(regexp_test("^([A-Z][A-Z]:.+|zone|sign)$",tag("source:maxspeed"))?prop(data_warning):"verify source:maxspeed"); } |
| | 3803 | |
| | 3804 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3805 | /* Display warnings/errors */ |
| | 3806 | /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ |
| | 3807 | way[is_prop_set(data_warning)][prop(style_show_warnings)=yes] |
| | 3808 | { |
| | 3809 | casing-width: 4; |
| | 3810 | casing-color: yellow; |
| | 3811 | text: eval(prop(data_warning)); |
| | 3812 | font-size: 12; |
| | 3813 | text-halo-radius: 1; |
| | 3814 | } |
| | 3815 | way[is_prop_set(data_error)][prop(style_show_errors)=yes] |
| | 3816 | { |
| | 3817 | casing-width: 5; |
| | 3818 | casing-color: red; |
| | 3819 | text: eval(prop(data_error)); |
| | 3820 | font-size: 14; |
| | 3821 | text-halo-radius: 1; |
| | 3822 | } |
| | 3823 | |
| | 3824 | |
| | 3825 | }}} |