Changes between Version 34 and Version 35 of Styles/Lane_and_Road_Attributes


Ignore:
Timestamp:
2014-01-29T16:33:35+01:00 (12 years ago)
Author:
imagic
Comment:

Made settings configurable

Legend:

Unmodified
Added
Removed
Modified
  • Styles/Lane_and_Road_Attributes

    v34 v35  
    3030To '''report bugs or provide feedback''' send [[osmwiki:User:Imagic|me a message]].
    3131
     32=== Settings
     33Some 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!)
     34* The settings '''carriage.way.backward''', '''carriage.way.forward''', '''carriage.way.both_ways''' specify the colour of the respective lanes.
     35* The settings '''sidewalk''', '''cycletrack''' and '''combined.sidewalk.and.cycletrack''' specify the colour of the sidewalk, a cycletrack and a combined sidewalk and cycletrack
     36* If '''boolean.right.hand.traffic''' is set to white, lanes are rendered for right hand traffic, otherwise for left hand traffic.
     37* If '''boolean.use.svg''' is set to white, the markings for turning lanes are rendered more precisely. '''If you run into memory problems, set this to black.'''
     38* 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.
     39
    3240=== Known limitations/bugs
    33 * Dependent on the setting style_use_svg, turning lanes can be rendered also as SVG with much wider support for different combinations. Currently this leads to very high memory consumption - see [[ticket:8581|ticket 8581]] for details.
    3441* [[ticket:8429|A bug in JOSM]] leads sometimes to rendering artefacts.
    3542* Left-hand traffic is nearly untested. Please provide feedback.
     
    3845* If both destination:forward and destination:backward are given they will be written side-by-side but due to a limitation of JOSM it is purely random if destination:forward is rendered above the forward or backward lanes and vice versa.
    3946* In forward and backward direction a maximum of eight lanes and for lanes in both directions a maximum of four lanes is displayed.
    40 * [[ticket:8568|Bug 8568]] might lead to multiple images for access restrictions.
    4147
    4248=== Acknowledgments
     
    5359{{{
    5460#!style type="mapcss"
     61
    5562
    5663
     
    6067    link: "http://josm.openstreetmap.de/wiki/Styles/Lane_and_Road_Attributes";
    6168    author: "Martin Vonwald";
    62     version: "2.0-[[revision]]_[[date]]";
     69    version: "2.1-[[revision]]_[[date]]";
    6370    license: "CC-BY-SA";
    64     min-josm-version: "5812";
     71    min-josm-version: "6766";
    6572}
    6673
     
    8087{
    8188  /* Settings: change if necessary */
    82   style_right_hand_traffic: yes;
    83   style_lane_opacity: 0.5;
    84   style_ground_opacity: 0.5;
    85   style_markings_opacity: 0.8;
    86   style_show_warnings: yes;
    87   style_show_errors: yes;
    88   style_show_disputed: no;
    89   style_use_svg: no;
     89  style_right_hand_traffic: yes;  /* Will be overriden by ugly hack below */
     90  style_lane_opacity: 0.5;        /* Will be overriden by ugly hack below */
     91  style_sidewalk_opacity: 0.5;    /* Will be overriden by ugly hack below */
     92  style_markings_opacity: 0.8;    /* Will be overriden by ugly hack below */
     93  style_show_warnings: yes;       /* Will be overriden by ugly hack below */
     94  style_show_errors: yes;         /* Will be overriden by ugly hack below */
     95  style_show_disputed: no;        /* Will be overriden by ugly hack below */
     96  style_use_svg: yes;             /* Will be overriden by ugly hack below */
     97
     98  /* Ugly hack to make opacity configurable */
     99  ugly_lane_opacity: Opacity_lane#808080;
     100  style_lane_opacity: eval((red(prop(ugly_lane_opacity))+green(prop(ugly_lane_opacity))+blue(prop(ugly_lane_opacity)))/3);
     101  ugly_sidewalk_opacity: Opacity_sidewalk#808080;
     102  style_sidewalk_opacity: eval((red(prop(ugly_sidewalk_opacity))+green(prop(ugly_sidewalk_opacity))+blue(prop(ugly_sidewalk_opacity)))/3);
     103  ugly_markings_opacity: Opacity_markings#CCCCCC;
     104  style_markings_opacity: eval((red(prop(ugly_markings_opacity))+green(prop(ugly_markings_opacity))+blue(prop(ugly_markings_opacity)))/3);
     105
     106  /* Ugly hack to make boolean configurable */
     107  ugly_right_hand_traffic: Boolean_right_hand_traffic#FFFFFF;
     108  style_right_hand_traffic: eval(red(prop(ugly_right_hand_traffic)))=1;
     109  ugly_show_warnings: Boolean_show_warnings#FFFFFF;
     110  style_show_warnings: eval(red(prop(ugly_show_warnings)))=1;
     111  ugly_show_errors: Boolean_show_errors#FFFFFF;
     112  style_show_errors: eval(red(prop(ugly_show_errors)))=1;
     113  ugly_show_disputed: Boolean_show_disputed#000000;
     114  style_show_disputed: eval(red(prop(ugly_show_disputed)))=1;
     115  ugly_use_svg: Boolean_use_svg#FFFFFF;
     116  style_use_svg: eval(red(prop(ugly_use_svg)))=1;
    90117
    91118  /* Color of the sidewalk: none (ignored), sidewalk only, cycletrack only, sidewalk and cycletrack */
    92   style_sidewalk_color: eval(list(#000000,#808080,#8080C0,#C08080));
     119  style_sidewalk_color: eval(list(#000000,Sidewalk#808080,Cycletrack#8080C0,Combined_sidewalk_and_cycletrack#C08080));
    93120
    94121  /* Color of the dashes if lane is access=no */
    95   style_noaccess_color: red;
     122  style_noaccess_color: No_access#FF0000;
    96123}
    97124
     
    148175{
    149176    /* Base color of the carriage way */
    150     ground-color:   #404040;
     177    /* TODO: obsolete - remove in future release: ground-color:   #404040; */
    151178
    152179    /* Individual colors for each direction */
    153     color_forward:  eval(rgb(red(prop(ground-color))    ,green(prop(ground-color))+0.1,blue(prop(ground-color))    ));
    154     color_backward: eval(rgb(red(prop(ground-color))+0.1,green(prop(ground-color))    ,blue(prop(ground-color))    ));
    155     color_bothways: eval(rgb(red(prop(ground-color))    ,green(prop(ground-color))    ,blue(prop(ground-color))+0.1));
     180    color_forward:  Carriage_way_forward#405A40;
     181    color_backward: Carriage_way_backward#5A4040;
     182    color_bothways: Carriage_way_bothways#40405A;
    156183}
    157184
     
    210237    color_bothways_4: prop(color_bothways);
    211238
    212     sign_forward_1: "";         sign_backward_1: "";
    213     sign_forward_2: "";         sign_backward_2: "";
    214     sign_forward_3: "";         sign_backward_3: "";
    215     sign_forward_4: "";         sign_backward_4: "";
    216     sign_forward_5: "";         sign_backward_5: "";
    217     sign_forward_6: "";         sign_backward_6: "";
    218     sign_forward_7: "";         sign_backward_7: "";
    219     sign_forward_8: "";         sign_backward_8: "";
     239    sign_forward_1: "";         sign_backward_1: "";
     240    sign_forward_2: "";         sign_backward_2: "";
     241    sign_forward_3: "";         sign_backward_3: "";
     242    sign_forward_4: "";         sign_backward_4: "";
     243    sign_forward_5: "";         sign_backward_5: "";
     244    sign_forward_6: "";         sign_backward_6: "";
     245    sign_forward_7: "";         sign_backward_7: "";
     246    sign_forward_8: "";         sign_backward_8: "";
    220247
    221248    tag_lanes_all_min:  9999; tag_lanes_all_max: 0;
     
    280307{
    281308    temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
    282                                 cond(has_tag_key("change:lanes:forward"),tag("change:lanes:forward"),tag("change:forward")))));
     309                                cond(has_tag_key("change:lanes:forward"),tag("change:lanes:forward"),tag("change:forward")))));
    283310    temp_list: eval(split("|",prop(temp)));
    284311    temp_length: eval(length(prop(temp_list)));
     
    316343{
    317344    temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
    318                                 cond(has_tag_key("change:lanes:backward"),tag("change:lanes:backward"),tag("change:backward")))));
     345                                cond(has_tag_key("change:lanes:backward"),tag("change:lanes:backward"),tag("change:backward")))));
    319346    temp_list: eval(split("|",prop(temp)));
    320347    temp_length: eval(length(prop(temp_list)));
     
    392419{
    393420    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
    394                                 cond(has_tag_key("turn"),tag("turn"),
    395                                 cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
    396                                      tag("turn:forward")
     421                                cond(has_tag_key("turn"),tag("turn"),
     422                                cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
     423                                     tag("turn:forward")
    397424                                    ))));
    398425    temp_list: eval(split("|",prop(temp)));
     
    401428    t: eval(get(prop(temp_list),0));
    402429    turn_image_forward_1: eval(
    403                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    404                                 (
    405                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    406                                 (
    407                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    408                                     concat("images/turn forward ",prop(t),".png")
    409                                 )
    410                                 )
    411                             );
     430                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     431                                (
     432                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     433                                (
     434                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     435                                    concat("images/turn forward ",prop(t),".png")
     436                                )
     437                                )
     438                            );
    412439    t: eval(get(prop(temp_list),1));
    413440    turn_image_forward_2: eval(
    414                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    415                                 (
    416                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    417                                 (
    418                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    419                                     concat("images/turn forward ",prop(t),".png")
    420                                 )
    421                                 )
    422                             );
     441                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     442                                (
     443                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     444                                (
     445                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     446                                    concat("images/turn forward ",prop(t),".png")
     447                                )
     448                                )
     449                            );
    423450    t: eval(get(prop(temp_list),2));
    424451    turn_image_forward_3: eval(
    425                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    426                                 (
    427                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    428                                 (
    429                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    430                                     concat("images/turn forward ",prop(t),".png")
    431                                 )
    432                                 )
    433                             );
     452                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     453                                (
     454                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     455                                (
     456                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     457                                    concat("images/turn forward ",prop(t),".png")
     458                                )
     459                                )
     460                            );
    434461    t: eval(get(prop(temp_list),3));
    435462    turn_image_forward_4: eval(
    436                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    437                                 (
    438                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    439                                 (
    440                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    441                                     concat("images/turn forward ",prop(t),".png")
    442                                 )
    443                                 )
    444                             );
     463                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     464                                (
     465                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     466                                (
     467                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     468                                    concat("images/turn forward ",prop(t),".png")
     469                                )
     470                                )
     471                            );
    445472    t: eval(get(prop(temp_list),4));
    446473    turn_image_forward_5: eval(
    447                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    448                                 (
    449                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    450                                 (
    451                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    452                                     concat("images/turn forward ",prop(t),".png")
    453                                 )
    454                                 )
    455                             );
     474                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     475                                (
     476                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     477                                (
     478                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     479                                    concat("images/turn forward ",prop(t),".png")
     480                                )
     481                                )
     482                            );
    456483    t: eval(get(prop(temp_list),5));
    457484    turn_image_forward_6: eval(
    458                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    459                                 (
    460                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    461                                 (
    462                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    463                                     concat("images/turn forward ",prop(t),".png")
    464                                 )
    465                                 )
    466                             );
     485                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     486                                (
     487                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     488                                (
     489                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     490                                    concat("images/turn forward ",prop(t),".png")
     491                                )
     492                                )
     493                            );
    467494    t: eval(get(prop(temp_list),6));
    468495    turn_image_forward_7: eval(
    469                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    470                                 (
    471                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    472                                 (
    473                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    474                                     concat("images/turn forward ",prop(t),".png")
    475                                 )
    476                                 )
    477                             );
     496                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     497                                (
     498                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     499                                (
     500                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     501                                    concat("images/turn forward ",prop(t),".png")
     502                                )
     503                                )
     504                            );
    478505    t: eval(get(prop(temp_list),7));
    479506    turn_image_forward_8: eval(
    480                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    481                                 (
    482                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
    483                                 (
    484                                     regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    485                                     concat("images/turn forward ",prop(t),".png")
    486                                 )
    487                                 )
    488                             );
     507                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     508                                (
     509                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     510                                (
     511                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     512                                    concat("images/turn forward ",prop(t),".png")
     513                                )
     514                                )
     515                            );
    489516
    490517    /* Lane count based on :lanes values */
     
    505532{
    506533    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
    507                                 cond(has_tag_key("turn"),tag("turn"),
    508                                 cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
    509                                      tag("turn:backward")
     534                                cond(has_tag_key("turn"),tag("turn"),
     535                                cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
     536                                     tag("turn:backward")
    510537                                    ))));
    511538    temp_list: eval(split("|",prop(temp)));
     
    514541    t: eval(get(prop(temp_list),0));
    515542    turn_image_backward_1: eval(
    516                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    517                                 (
    518                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    519                                 (
    520                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    521                                     concat("images/turn backward ",prop(t),".png")
    522                                 )
    523                                 )
    524                             );
     543                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     544                                (
     545                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     546                                (
     547                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     548                                    concat("images/turn backward ",prop(t),".png")
     549                                )
     550                                )
     551                            );
    525552    t: eval(get(prop(temp_list),1));
    526553    turn_image_backward_2: eval(
    527                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    528                                 (
    529                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    530                                 (
    531                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    532                                     concat("images/turn backward ",prop(t),".png")
    533                                 )
    534                                 )
    535                             );
     554                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     555                                (
     556                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     557                                (
     558                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     559                                    concat("images/turn backward ",prop(t),".png")
     560                                )
     561                                )
     562                            );
    536563    t: eval(get(prop(temp_list),2));
    537564    turn_image_backward_3: eval(
    538                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    539                                 (
    540                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    541                                 (
    542                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    543                                     concat("images/turn backward ",prop(t),".png")
    544                                 )
    545                                 )
    546                             );
     565                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     566                                (
     567                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     568                                (
     569                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     570                                    concat("images/turn backward ",prop(t),".png")
     571                                )
     572                                )
     573                            );
    547574    t: eval(get(prop(temp_list),3));
    548575    turn_image_backward_4: eval(
    549                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    550                                 (
    551                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    552                                 (
    553                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    554                                     concat("images/turn backward ",prop(t),".png")
    555                                 )
    556                                 )
    557                             );
     576                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     577                                (
     578                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     579                                (
     580                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     581                                    concat("images/turn backward ",prop(t),".png")
     582                                )
     583                                )
     584                            );
    558585    t: eval(get(prop(temp_list),4));
    559586    turn_image_backward_5: eval(
    560                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    561                                 (
    562                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    563                                 (
    564                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    565                                     concat("images/turn backward ",prop(t),".png")
    566                                 )
    567                                 )
    568                             );
     587                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     588                                (
     589                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     590                                (
     591                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     592                                    concat("images/turn backward ",prop(t),".png")
     593                                )
     594                                )
     595                            );
    569596    t: eval(get(prop(temp_list),5));
    570597    turn_image_backward_6: eval(
    571                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    572                                 (
    573                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    574                                 (
    575                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    576                                     concat("images/turn backward ",prop(t),".png")
    577                                 )
    578                                 )
    579                             );
     598                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     599                                (
     600                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     601                                (
     602                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     603                                    concat("images/turn backward ",prop(t),".png")
     604                                )
     605                                )
     606                            );
    580607    t: eval(get(prop(temp_list),6));
    581608    turn_image_backward_7: eval(
    582                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    583                                 (
    584                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    585                                 (
    586                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    587                                     concat("images/turn backward ",prop(t),".png")
    588                                 )
    589                                 )
    590                             );
     609                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     610                                (
     611                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     612                                (
     613                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     614                                    concat("images/turn backward ",prop(t),".png")
     615                                )
     616                                )
     617                            );
    591618    t: eval(get(prop(temp_list),7));
    592619    turn_image_backward_8: eval(
    593                                 ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
    594                                 (
    595                                 (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
    596                                 (
    597                                     regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
    598                                     concat("images/turn backward ",prop(t),".png")
    599                                 )
    600                                 )
    601                             );
     620                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     621                                (
     622                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     623                                (
     624                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     625                                    concat("images/turn backward ",prop(t),".png")
     626                                )
     627                                )
     628                            );
    602629
    603630    /* Lane count based on :lanes values */
     
    611638way|z17-[is_prop_set(ok)][prop(style_use_svg)]
    612639{
    613         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'/>");
    614         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'/>");
    615         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'/>");
    616         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'/>");
    617         turn_svg_slight_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_slight_right_forward),"</g>"));
    618         turn_svg_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_right_forward),"</g>"));
    619         turn_svg_sharp_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"));
    620         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'/>");
    621         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>"));
    622         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'/>");
    623         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>"));
    624         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'/>");
    625         turn_svg_hook_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_hook_right_forward),"</g>"));
     640        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'/>");
     641        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'/>");
     642        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'/>");
     643        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'/>");
     644        turn_svg_slight_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_slight_right_forward),"</g>"));
     645        turn_svg_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_right_forward),"</g>"));
     646        turn_svg_sharp_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"));
     647        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'/>");
     648        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>"));
     649        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'/>");
     650        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>"));
     651        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'/>");
     652        turn_svg_hook_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_hook_right_forward),"</g>"));
    626653}
    627654
     
    636663{
    637664    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
    638                                 cond(has_tag_key("turn"),tag("turn"),
    639                                 cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
    640                                      tag("turn:forward")
     665                                cond(has_tag_key("turn"),tag("turn"),
     666                                cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
     667                                     tag("turn:forward")
    641668                                    ))));
    642669    temp_list: eval(split("|",prop(temp)));
     
    796823{
    797824    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
    798                                 cond(has_tag_key("turn"),tag("turn"),
    799                                 cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
    800                                      tag("turn:backward")
     825                                cond(has_tag_key("turn"),tag("turn"),
     826                                cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
     827                                     tag("turn:backward")
    801828                                    ))));
    802829    temp_list: eval(split("|",prop(temp)));
     
    960987{
    961988    temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    962                                 cond(has_tag_key("access"),tag("access"),
    963                                 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
    964                                      tag("access:forward")
     989                                cond(has_tag_key("access"),tag("access"),
     990                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     991                                     tag("access:forward")
    965992                                    ))));
    966993    temp_list: eval(split("|",prop(temp)));
     
    9911018{
    9921019    temp: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    993                                 cond(has_tag_key("access"),tag("access"),
    994                                 cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),
    995                                      tag("access:backward")
     1020                                cond(has_tag_key("access"),tag("access"),
     1021                                cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),
     1022                                     tag("access:backward")
    9961023                                    ))));
    9971024    temp_list: eval(split("|",prop(temp)));
     
    10281055{
    10291056    temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"),
    1030                                 cond(has_tag_key("bus"),tag("bus"),
    1031                                 cond(has_tag_key("bus:lanes:forward"),tag("bus:lanes:forward"),
    1032                                      tag("bus:forward")
     1057                                cond(has_tag_key("bus"),tag("bus"),
     1058                                cond(has_tag_key("bus:lanes:forward"),tag("bus:lanes:forward"),
     1059                                     tag("bus:forward")
    10331060                                    ))));
    10341061    temp_list: eval(split("|",prop(temp)));
    10351062    temp_length: eval(length(prop(temp_list)));
    10361063    tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    1037                                 cond(has_tag_key("access"),tag("access"),
    1038                                 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
    1039                                      tag("access:forward")
     1064                                cond(has_tag_key("access"),tag("access"),
     1065                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     1066                                     tag("access:forward")
    10401067                                    ))));
    10411068    tempa_list: eval(split("|",prop(tempa)));
     
    10671094{
    10681095    temp: eval(cond(has_tag_key("bus:lanes"),tag("bus:lanes"),
    1069                                 cond(has_tag_key("bus"),tag("bus"),
    1070                                 cond(has_tag_key("bus:lanes:backward"),tag("bus:lanes:backward"),
    1071                                      tag("bus:backward")
     1096                                cond(has_tag_key("bus"),tag("bus"),
     1097                                cond(has_tag_key("bus:lanes:backward"),tag("bus:lanes:backward"),
     1098                                     tag("bus:backward")
    10721099                                    ))));
    10731100    temp_list: eval(split("|",prop(temp)));
     
    11011128{
    11021129    temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"),
    1103                                 cond(has_tag_key("taxi"),tag("taxi"),
    1104                                 cond(has_tag_key("taxi:lanes:forward"),tag("taxi:lanes:forward"),
    1105                                      tag("taxi:forward")
     1130                                cond(has_tag_key("taxi"),tag("taxi"),
     1131                                cond(has_tag_key("taxi:lanes:forward"),tag("taxi:lanes:forward"),
     1132                                     tag("taxi:forward")
    11061133                                    ))));
    11071134    temp_list: eval(split("|",prop(temp)));
    11081135    temp_length: eval(length(prop(temp_list)));
    11091136    tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    1110                                 cond(has_tag_key("access"),tag("access"),
    1111                                 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
    1112                                      tag("access:forward")
     1137                                cond(has_tag_key("access"),tag("access"),
     1138                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     1139                                     tag("access:forward")
    11131140                                    ))));
    11141141    tempa_list: eval(split("|",prop(tempa)));
     
    11401167{
    11411168    temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"),
    1142                                 cond(has_tag_key("taxi"),tag("taxi"),
    1143                                 cond(has_tag_key("taxi:lanes:backward"),tag("taxi:lanes:backward"),
    1144                                      tag("taxi:backward")
     1169                                cond(has_tag_key("taxi"),tag("taxi"),
     1170                                cond(has_tag_key("taxi:lanes:backward"),tag("taxi:lanes:backward"),
     1171                                     tag("taxi:backward")
    11451172                                    ))));
    11461173    temp_list: eval(split("|",prop(temp)));
     
    11741201{
    11751202    temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"),
    1176                                 cond(has_tag_key("psv"),tag("psv"),
    1177                                 cond(has_tag_key("psv:lanes:forward"),tag("psv:lanes:forward"),
    1178                                      tag("psv:forward")
     1203                                cond(has_tag_key("psv"),tag("psv"),
     1204                                cond(has_tag_key("psv:lanes:forward"),tag("psv:lanes:forward"),
     1205                                     tag("psv:forward")
    11791206                                    ))));
    11801207    temp_list: eval(split("|",prop(temp)));
    11811208    temp_length: eval(length(prop(temp_list)));
    11821209    tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    1183                                 cond(has_tag_key("access"),tag("access"),
    1184                                 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
    1185                                      tag("access:forward")
     1210                                cond(has_tag_key("access"),tag("access"),
     1211                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     1212                                     tag("access:forward")
    11861213                                    ))));
    11871214    tempa_list: eval(split("|",prop(tempa)));
     
    12131240{
    12141241    temp: eval(cond(has_tag_key("psv:lanes"),tag("psv:lanes"),
    1215                                 cond(has_tag_key("psv"),tag("psv"),
    1216                                 cond(has_tag_key("psv:lanes:backward"),tag("psv:lanes:backward"),
    1217                                      tag("psv:backward")
     1242                                cond(has_tag_key("psv"),tag("psv"),
     1243                                cond(has_tag_key("psv:lanes:backward"),tag("psv:lanes:backward"),
     1244                                     tag("psv:backward")
    12181245                                    ))));
    12191246    temp_list: eval(split("|",prop(temp)));
     
    12471274{
    12481275    temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"),
    1249                                 cond(has_tag_key("bicycle"),tag("bicycle"),
    1250                                 cond(has_tag_key("bicycle:lanes:forward"),tag("bicycle:lanes:forward"),
    1251                                      tag("bicycle:forward")
     1276                                cond(has_tag_key("bicycle"),tag("bicycle"),
     1277                                cond(has_tag_key("bicycle:lanes:forward"),tag("bicycle:lanes:forward"),
     1278                                     tag("bicycle:forward")
    12521279                                    ))));
    12531280    temp_list: eval(split("|",prop(temp)));
    12541281    temp_length: eval(length(prop(temp_list)));
    12551282    tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
    1256                                 cond(has_tag_key("access"),tag("access"),
    1257                                 cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
    1258                                      tag("access:forward")
     1283                                cond(has_tag_key("access"),tag("access"),
     1284                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     1285                                     tag("access:forward")
    12591286                                    ))));
    12601287    tempa_list: eval(split("|",prop(tempa)));
     
    12861313{
    12871314    temp: eval(cond(has_tag_key("bicycle:lanes"),tag("bicycle:lanes"),
    1288                                 cond(has_tag_key("bicycle"),tag("bicycle"),
    1289                                 cond(has_tag_key("bicycle:lanes:backward"),tag("bicycle:lanes:backward"),
    1290                                      tag("bicycle:backward")
     1315                                cond(has_tag_key("bicycle"),tag("bicycle"),
     1316                                cond(has_tag_key("bicycle:lanes:backward"),tag("bicycle:lanes:backward"),
     1317                                     tag("bicycle:backward")
    12911318                                    ))));
    12921319    temp_list: eval(split("|",prop(temp)));
     
    13211348{
    13221349    temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"),
    1323                                 cond(has_tag_key("hov:lanes:forward"),tag("hov:lanes:forward"),
    1324                                 cond(has_tag_key("hov"),tag("hov"),
    1325                                      tag("hov:forward")
     1350                                cond(has_tag_key("hov:lanes:forward"),tag("hov:lanes:forward"),
     1351                                cond(has_tag_key("hov"),tag("hov"),
     1352                                     tag("hov:forward")
    13261353                                    ))));
    13271354    temp_list: eval(split("|",prop(temp)));
     
    13631390{
    13641391    temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"),
    1365                                 cond(has_tag_key("hov"),tag("hov"),
    1366                                 cond(has_tag_key("hov:lanes:backward"),tag("hov:lanes:backward"),
    1367                                      tag("hov:backward")
     1392                                cond(has_tag_key("hov"),tag("hov"),
     1393                                cond(has_tag_key("hov:lanes:backward"),tag("hov:lanes:backward"),
     1394                                     tag("hov:backward")
    13681395                                    ))));
    13691396    temp_list: eval(split("|",prop(temp)));
     
    14371464/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    14381465/***************************************************************************************************************************************************/
    1439 way[is_prop_set(ok)][lanes]             { lanes_all:  tag(lanes);}
    1440 way[is_prop_set(ok)]["lanes:forward"]   { lanes_fwd:  tag("lanes:forward");}
    1441 way[is_prop_set(ok)]["lanes:backward"]  { lanes_bwd:  tag("lanes:backward");}
    1442 way[is_prop_set(ok)]["lanes:both_ways"] { lanes_both: tag("lanes:both_ways");}
     1466way[is_prop_set(ok)][lanes]             { lanes_all:  tag(lanes);}
     1467way[is_prop_set(ok)]["lanes:forward"]   { lanes_fwd:  tag("lanes:forward");}
     1468way[is_prop_set(ok)]["lanes:backward"]  { lanes_bwd:  tag("lanes:backward");}
     1469way[is_prop_set(ok)]["lanes:both_ways"] { lanes_both: tag("lanes:both_ways");}
    14431470
    14441471/* Nothing specified */
    14451472way[is_prop_set(ok)][prop(oneway_type)=0][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
    1446         { lanes_all: 2; lanes_fwd: 1; lanes_bwd: 1; lanes_both: 0; }
     1473        { lanes_all: 2; lanes_fwd: 1; lanes_bwd: 1; lanes_both: 0; }
    14471474way[is_prop_set(ok)][prop(oneway_type)=1][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
    1448         { lanes_all: 1; lanes_fwd: 1; lanes_bwd: 0; lanes_both: 0; }
     1475        { lanes_all: 1; lanes_fwd: 1; lanes_bwd: 0; lanes_both: 0; }
    14491476way[is_prop_set(ok)][prop(oneway_type)=(-1)][!lanes][!"lanes:backward"][!"lanes:both_ways"][!"lanes:forward"]
    1450         { lanes_all: 1; lanes_fwd: 0; lanes_bwd: 1; lanes_both: 0; }
     1477        { lanes_all: 1; lanes_fwd: 0; lanes_bwd: 1; lanes_both: 0; }
    14511478
    14521479/* One-ways */
    14531480way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1]
    1454         { lanes_fwd: prop(lanes_all); lanes_bwd: 0; lanes_both: 0; }
     1481        { lanes_fwd: prop(lanes_all); lanes_bwd: 0; lanes_both: 0; }
    14551482way[is_prop_set(ok)][lanes][!"lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)]
    1456         { lanes_bwd: prop(lanes_all); lanes_fwd: 0; lanes_both: 0; }
     1483        { lanes_bwd: prop(lanes_all); lanes_fwd: 0; lanes_both: 0; }
    14571484
    14581485way[is_prop_set(ok)][!lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=1] 
    1459         { lanes_all: prop(lanes_fwd); lanes_bwd: 0; lanes_both: 0; }
     1486        { lanes_all: prop(lanes_fwd); lanes_bwd: 0; lanes_both: 0; }
    14601487way[is_prop_set(ok)][!lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"][prop(oneway_type)=(-1)]
    1461         { lanes_all: prop(lanes_bwd); lanes_fwd: 0; lanes_both: 0; }
     1488        { lanes_all: prop(lanes_bwd); lanes_fwd: 0; lanes_both: 0; }
    14621489
    14631490/* One count besides both_ways is missing  */
    14641491way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
    1465         { lanes_fwd: eval((prop(lanes_all))-(prop(lanes_bwd))); lanes_both: 0; }
     1492        { lanes_fwd: eval((prop(lanes_all))-(prop(lanes_bwd))); lanes_both: 0; }
    14661493way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"][!"lanes:both_ways"]
    14671494        { lanes_bwd: eval((prop(lanes_all))-(prop(lanes_fwd))); lanes_both: 0;}
    14681495way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
    1469         { lanes_all: eval((prop(lanes_fwd))+(prop(lanes_bwd))); lanes_both: 0; }
     1496        { lanes_all: eval((prop(lanes_fwd))+(prop(lanes_bwd))); lanes_both: 0; }
    14701497
    14711498/* One count is missing  */
    14721499way[is_prop_set(ok)][lanes]["lanes:forward"]["lanes:backward"][!"lanes:both_ways"]
    1473         { lanes_both: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_bwd)))); }
     1500        { lanes_both: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_bwd)))); }
    14741501way[is_prop_set(ok)][lanes]["lanes:forward"][!"lanes:backward"]["lanes:both_ways"]
    1475         { lanes_bwd: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_both)))); }
     1502        { lanes_bwd: eval((prop(lanes_all))-((prop(lanes_fwd))+(prop(lanes_both)))); }
    14761503way[is_prop_set(ok)][lanes][!"lanes:forward"]["lanes:backward"]["lanes:both_ways"]
    1477         { lanes_fwd: eval((prop(lanes_all))-((prop(lanes_bwd))+(prop(lanes_both)))); }
     1504        { lanes_fwd: eval((prop(lanes_all))-((prop(lanes_bwd))+(prop(lanes_both)))); }
    14781505way[is_prop_set(ok)][!lanes]["lanes:forward"]["lanes:backward"]["lanes:both_ways"]
    1479         { lanes_all: eval((prop(lanes_fwd))+((prop(lanes_bwd))+(prop(lanes_both)))); }
     1506        { lanes_all: eval((prop(lanes_fwd))+((prop(lanes_bwd))+(prop(lanes_both)))); }
    14801507
    14811508/* Only the lanes tag is set */
     
    18111838{
    18121839    lane_width_all_forward: eval(
    1813                                     ((prop(lanes_fwd)>0)?prop(lane_width_forward_1):0)+
    1814                                     ((prop(lanes_fwd)>1)?prop(lane_width_forward_2):0)+
    1815                                     ((prop(lanes_fwd)>2)?prop(lane_width_forward_3):0)+
    1816                                     ((prop(lanes_fwd)>3)?prop(lane_width_forward_4):0)+
    1817                                     ((prop(lanes_fwd)>4)?prop(lane_width_forward_5):0)+
    1818                                     ((prop(lanes_fwd)>5)?prop(lane_width_forward_6):0)+
    1819                                     ((prop(lanes_fwd)>6)?prop(lane_width_forward_7):0)+
    1820                                     ((prop(lanes_fwd)>7)?prop(lane_width_forward_8):0)
    1821                                 );
     1840                                    ((prop(lanes_fwd)>0)?prop(lane_width_forward_1):0)+
     1841                                    ((prop(lanes_fwd)>1)?prop(lane_width_forward_2):0)+
     1842                                    ((prop(lanes_fwd)>2)?prop(lane_width_forward_3):0)+
     1843                                    ((prop(lanes_fwd)>3)?prop(lane_width_forward_4):0)+
     1844                                    ((prop(lanes_fwd)>4)?prop(lane_width_forward_5):0)+
     1845                                    ((prop(lanes_fwd)>5)?prop(lane_width_forward_6):0)+
     1846                                    ((prop(lanes_fwd)>6)?prop(lane_width_forward_7):0)+
     1847                                    ((prop(lanes_fwd)>7)?prop(lane_width_forward_8):0)
     1848                                );
    18221849
    18231850    lane_width_all_backward: eval(
    1824                                     ((prop(lanes_bwd)>0)?prop(lane_width_backward_1):0)+
    1825                                     ((prop(lanes_bwd)>1)?prop(lane_width_backward_2):0)+
    1826                                     ((prop(lanes_bwd)>2)?prop(lane_width_backward_3):0)+
    1827                                     ((prop(lanes_bwd)>3)?prop(lane_width_backward_4):0)+
    1828                                     ((prop(lanes_bwd)>4)?prop(lane_width_backward_5):0)+
    1829                                     ((prop(lanes_bwd)>5)?prop(lane_width_backward_6):0)+
    1830                                     ((prop(lanes_bwd)>6)?prop(lane_width_backward_7):0)+
    1831                                     ((prop(lanes_bwd)>7)?prop(lane_width_backward_8):0)
    1832                                 );
     1851                                    ((prop(lanes_bwd)>0)?prop(lane_width_backward_1):0)+
     1852                                    ((prop(lanes_bwd)>1)?prop(lane_width_backward_2):0)+
     1853                                    ((prop(lanes_bwd)>2)?prop(lane_width_backward_3):0)+
     1854                                    ((prop(lanes_bwd)>3)?prop(lane_width_backward_4):0)+
     1855                                    ((prop(lanes_bwd)>4)?prop(lane_width_backward_5):0)+
     1856                                    ((prop(lanes_bwd)>5)?prop(lane_width_backward_6):0)+
     1857                                    ((prop(lanes_bwd)>6)?prop(lane_width_backward_7):0)+
     1858                                    ((prop(lanes_bwd)>7)?prop(lane_width_backward_8):0)
     1859                                );
    18331860
    18341861    lane_width_all_bothways: eval(
    1835                                     ((prop(lanes_both)>0)?prop(lane_width_bothways_1):0)+
    1836                                     ((prop(lanes_both)>1)?prop(lane_width_bothways_2):0)+
    1837                                     ((prop(lanes_both)>2)?prop(lane_width_bothways_3):0)+
    1838                                     ((prop(lanes_both)>3)?prop(lane_width_bothways_4):0)
    1839                                 );
     1862                                    ((prop(lanes_both)>0)?prop(lane_width_bothways_1):0)+
     1863                                    ((prop(lanes_both)>1)?prop(lane_width_bothways_2):0)+
     1864                                    ((prop(lanes_both)>2)?prop(lane_width_bothways_3):0)+
     1865                                    ((prop(lanes_both)>3)?prop(lane_width_bothways_4):0)
     1866                                );
    18401867
    18411868    lane_width_all: eval((prop(lane_width_all_forward)+prop(lane_width_all_backward))+prop(lane_width_all_bothways));
     
    21632190    left-casing-width: eval((prop(templ)>0)?(prop(lane_default_width,"default")/2):0);
    21642191    left-casing-color:  eval(get(prop(style_sidewalk_color,"default"),prop(templ)));
    2165     left-casing-opacity: prop(style_ground_opacity,"default");
     2192    left-casing-opacity: prop(style_sidewalk_opacity,"default");
    21662193
    21672194    right-casing-linecap: none;
    21682195    right-casing-width: eval((prop(tempr)>0)?(prop(lane_default_width,"default")/2):0);
    21692196    right-casing-color:  eval(get(prop(style_sidewalk_color,"default"),prop(tempr)));
    2170     right-casing-opacity: prop(style_ground_opacity,"default");
     2197    right-casing-opacity: prop(style_sidewalk_opacity,"default");
    21712198}
    21722199
     
    31243151way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_1
    31253152{
    3126         width: eval(prop(width,"Ground"));
    3127         width: eval(prop(width)+(is_prop_set(left-casing-width,"Ground")?prop(left-casing-width,"Ground"):0));
    3128         width: eval(prop(width)+(is_prop_set(right-casing-width,"Ground")?prop(right-casing-width,"Ground"):0));
    3129         opacity: 0.1;   color: white;   linecap: none;
    3130         major-z-index: eval(prop(major-z-index,"Ground")-0.1);
    3131         offset: eval(prop(offset,"Ground"));
     3153        width: eval(prop(width,"Ground"));
     3154        width: eval(prop(width)+(is_prop_set(left-casing-width,"Ground")?prop(left-casing-width,"Ground"):0));
     3155        width: eval(prop(width)+(is_prop_set(right-casing-width,"Ground")?prop(right-casing-width,"Ground"):0));
     3156        opacity: 0.1;   color: white;   linecap: none;
     3157        major-z-index: eval(prop(major-z-index,"Ground")-0.1);
     3158        offset: eval(prop(offset,"Ground"));
    31323159}
    31333160way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_2
    31343161{
    3135         width: eval(prop(width,"Lighting_1")+(3 * prop(pixel_per_metre,"default")));
    3136         opacity: 0.1;   color: white;   linecap: none;
    3137         major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
     3162        width: eval(prop(width,"Lighting_1")+(3 * prop(pixel_per_metre,"default")));
     3163        opacity: 0.1;   color: white;   linecap: none;
     3164        major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
    31383165}
    31393166way|z17-[lit?][is_prop_set(width,"Ground")]::Lighting_3
    31403167{
    3141         width: eval(prop(width,"Lighting_2")+(3 * prop(pixel_per_metre,"default")));
    3142         opacity: 0.1;   color: white;   linecap: none;
    3143         major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
     3168        width: eval(prop(width,"Lighting_2")+(3 * prop(pixel_per_metre,"default")));
     3169        opacity: 0.1;   color: white;   linecap: none;
     3170        major-z-index: eval(prop(major-z-index,"Lighting_1")); offset: eval(prop(offset,"Lighting_1"));
    31443171}
    31453172
     
    31833210node|z-15[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/],
    31843211node|z-15[traffic_sign=~/^(.*;)*overtaking(;.*)*$/]
    3185 {       icon-image: prop(unset_property);               }
     3212{       icon-image: prop(unset_property);               }
    31863213
    31873214node|z16-[traffic_sign]
     
    32243251node|z16-[traffic_sign~=overtaking][overtaking=no]
    32253252{
    3226     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' /><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>"));
     3253    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' />",
     3254                                  "<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>"));
    32273255    traffic_sign_top: eval(prop(traffic_sign_top)+100);
    32283256}
     
    32323260node|z16-[traffic_sign~=overtaking][overtaking=yes][maxspeed=implicit]["source:maxspeed"=~/.*zone.*/]
    32333261{
    3234     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' /><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>"));
     3262    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' />",
     3263                                  "<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>"));
    32353264    traffic_sign_top: eval(prop(traffic_sign_top)+100);
    32363265}
     
    32713300
    32723301/* Discouraged alternative values for oneway */
    3273 way[oneway=true], way[oneway=1]                 { data_error:   "use oneway=yes"; }
     3302way[oneway=true], way[oneway=1]                 { data_error:   "use oneway=yes"; }
    32743303
    32753304/* Rejected turn lanes proposal */
     
    32773306way["lanes:through"], way["lanes:merge"],
    32783307way["lanes:turnright:forward"], way["lanes:turnleft:forward"],
    3279 way["lanes:through:forward"], way["lanes:merge:forward"],       
     3308way["lanes:through:forward"], way["lanes:merge:forward"],       
    32803309way["lanes:turnright:backward"], way["lanes:turnleft:backward"],
    3281 way["lanes:through:backward"], way["lanes:merge:backward"]     
    3282                                                 { data_error:   "lanes:<turn> rejected"; }
     3310way["lanes:through:backward"], way["lanes:merge:backward"]     
     3311                                                { data_error:   "lanes:<turn> rejected"; }
    32833312
    32843313/* Common typos in destination tags */
    3285 way["destination:forward:ref"]                  { data_error:   "use destination:ref:forward"; }
    3286 way["destination:backward:ref"]                 { data_error:   "use destination:ref:backward"; }
    3287 way["destination:forward:int_ref"]              { data_error:   "use destination:int_ref:forward"; }
    3288 way["destination:backward:int_ref"]             { data_error:   "use destination:int_ref:backward"; }
    3289 way["destination:forward:sign"]                 { data_error:   "use destination:sign:forward"; }
    3290 way["destination:backward:sign"]                { data_error:   "use destination:sign:backward"; }
    3291 way["destination:forward:country"]              { data_error:   "use destination:country:forward"; }
    3292 way["destination:backward:country"]             { data_error:   "use destination:country:backward"; }
     3314way["destination:forward:ref"]                  { data_error:   "use destination:ref:forward"; }
     3315way["destination:backward:ref"]                 { data_error:   "use destination:ref:backward"; }
     3316way["destination:forward:int_ref"]              { data_error:   "use destination:int_ref:forward"; }
     3317way["destination:backward:int_ref"]             { data_error:   "use destination:int_ref:backward"; }
     3318way["destination:forward:sign"]                 { data_error:   "use destination:sign:forward"; }
     3319way["destination:backward:sign"]                { data_error:   "use destination:sign:backward"; }
     3320way["destination:forward:country"]              { data_error:   "use destination:country:forward"; }
     3321way["destination:backward:country"]             { data_error:   "use destination:country:backward"; }
    32933322
    32943323/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     
    33003329way[prop(style_show_disputed)]["maxspeed:backward"] { data_error: eval(regexp_test("^[0-9]+$",tag("maxspeed:backward"))?prop(data_error):"maxspeed:backward not numerical"); }
    33013330/* A source should be given for maxspeed */
    3302 way[prop(style_show_disputed)][maxspeed][!"source:maxspeed"]            { data_warning: "source:maxspeed missing"; }
     3331way[prop(style_show_disputed)][maxspeed][!"source:maxspeed"]            { data_warning: "source:maxspeed missing"; }
    33033332/* Value of source:maxspeed should be <country code>:<context> */
    33043333way[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"); }