Changes between Version 20 and Version 21 of Styles/Lane_and_Road_Attributes


Ignore:
Timestamp:
2013-03-04T14:18:15+01:00 (13 years ago)
Author:
imagic
Comment:

Improved error checking. Carriageway border was missing for roads with only one lane but which are no one-ways.

Legend:

Unmodified
Added
Removed
Modified
  • Styles/Lane_and_Road_Attributes

    v20 v21  
    4848    description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes.";
    4949    author: "Martin Vonwald";
    50     version: "0.99-beta15-[[revision]]_[[date]]";
     50    version: "1.0-[[revision]]_[[date]]";
    5151    license: "CC-BY-SA";
    5252    min-josm-version: "5714";
     
    203203/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    204204/* Determine allowed lane changes                                                                                                                  */
    205 /* TODO: change:lanes without oneway, but only with values yes or no                                                                          */
    206 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    207 /***************************************************************************************************************************************************/
     205/* TODO: change:lanes without oneway, but only with values yes or no                                                                               */
     206/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     207/***************************************************************************************************************************************************/
     208/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     209/* Error checking                                                                                                                                  */
     210/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     211way["change"]
     212{
     213    data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right)$",tag("change"))?prop(data_error):"invalid change value");
     214}
     215way["change:forward"]
     216{
     217    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");
     218}
     219way["change:backward"]
     220{
     221    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");
     222}
     223way["change:both_ways"]
     224{
     225    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");
     226}
     227way["change:lanes"][!(prop(oneway_type)=0)]
     228{
     229    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");
     230}
     231way["change:lanes"][prop(oneway_type)=0]
     232{
     233    data_error: eval(regexp_test("^(yes|no|\\|)*$",tag("change:lanes"))?prop(data_error):"invalid change:lanes value");
     234}
     235way["change:lanes:forward"]
     236{
     237    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");
     238}
     239way["change:lanes:backward"]
     240{
     241    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");
     242}
     243way["change:lanes:both_ways"]
     244{
     245    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");
     246}
     247
    208248/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    209249/* Forward lanes                                                                                                                                   */
     
    216256    temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
    217257                                cond(has_tag_key("change:lanes:forward"),tag("change:lanes:forward"),tag("change:forward")))));
    218     data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",prop(temp))?prop(data_error):"invalid forward change lanes");
    219258    temp_list: eval(split("|",prop(temp)));
    220259    temp_length: eval(length(prop(temp_list)));
     
    253292    temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"),
    254293                                cond(has_tag_key("change:lanes:backward"),tag("change:lanes:backward"),tag("change:backward")))));
    255     data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",prop(temp))?prop(data_error):"invalid backward change lanes");
    256294    temp_list: eval(split("|",prop(temp)));
    257295    temp_length: eval(length(prop(temp_list)));
     
    286324{
    287325    temp: eval(cond(has_tag_key("change:lanes:both_ways"),tag("change:lanes:both_ways"),tag("change:both_ways")));
    288     data_error: eval(regexp_test("^(yes|no|only_left|only_right|not_left|not_right|\\|)*$",prop(temp))?prop(data_error):"invalid both_ways change lanes");
    289326    temp_list: eval(split("|",prop(temp)));
    290327    temp_length: eval(length(prop(temp_list)));
     
    341378                                     tag("turn:forward")
    342379                                    ))));
    343     /* Work aorund for issue with the lenght() function temp: eval(regexp_test(".*([|])$",prop(temp))?concat(prop(temp),"none"):prop(temp)); */
    344380    data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",prop(temp))?prop(data_error):"invalid forward turn lanes");
    345381    temp_list: eval(split("|",prop(temp)));
     
    387423                                     tag("turn:backward")
    388424                                    ))));
    389     /* Work aorund for issue with the lenght() function temp: eval(regexp_test(".*([|])$",prop(temp))?concat(prop(temp),"none"):prop(temp)); */
    390425    data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",prop(temp))?prop(data_error):"invalid backward turn lanes");
    391426    temp_list: eval(split("|",prop(temp)));
    392427    temp_length: eval(length(prop(temp_list)));
    393428
    394     /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list*/
     429    /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list */
    395430    turn_backward_1: eval(length((prop(temp_length)>0)?(concat(regexp_test(".*left.*",get(prop(temp_list),0))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),0))?"t":"",regexp_test(".*right.*",get(prop(temp_list),0))?"rrrr":"")):""));
    396431    turn_backward_2: eval(length((prop(temp_length)>1)?(concat(regexp_test(".*left.*",get(prop(temp_list),1))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),1))?"t":"",regexp_test(".*right.*",get(prop(temp_list),1))?"rrrr":"")):""));
     
    402437    turn_backward_8: eval(length((prop(temp_length)>7)?(concat(regexp_test(".*left.*",get(prop(temp_list),7))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),7))?"t":"",regexp_test(".*right.*",get(prop(temp_list),7))?"rrrr":"")):""));
    403438
    404     /* Get the relevant code from the list or unset the property*/
     439    /* Get the relevant code from the list or unset the property */
    405440    turn_backward_1: eval((prop(turn_backward_1)>0)?get(prop(turn_matrix),prop(turn_backward_1)):prop(unset_property));
    406441    turn_backward_2: eval((prop(turn_backward_2)>0)?get(prop(turn_matrix),prop(turn_backward_2)):prop(unset_property));
     
    421456/* Lane access (no and designated)                                                                                                                 */
    422457/* The property designated_color_xxx will be overwritten by later rules                                                                            */
    423 /* TODO: both_ways are not implemented                                                                                                             */
     458/* TODO: both_ways is not implemented                                                                                                             */
    424459/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    425460/***************************************************************************************************************************************************/
     
    9991034way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)]
    10001035{
    1001     change_forward_1_left:  eval((prop(oneway_type)=1)?prop(change_border):prop(change_forward_1_left));
     1036    change_forward_1_left:  eval(((prop(oneway_type)=1) || (prop(lanes_all)=1))?prop(change_border):prop(change_forward_1_left));
    10021037    change_backward_1_left: eval((prop(oneway_type)=(-1))?prop(change_border):prop(change_backward_1_left));
    10031038}
     
    10071042    change_forward_1_left:  prop(change_border);
    10081043    change_backward_1_left: prop(change_border);
     1044    change_forward_1_right:  eval((prop(lanes_all)=1)?prop(change_border):prop(change_forward_1_right));
    10091045}
    10101046way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)],
     
    11531189/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    11541190/***************************************************************************************************************************************************/
     1191/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1192/* Error checking                                                                                                                                  */
     1193/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1194way["placement"]
     1195{
     1196    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");
     1197}
     1198way["placement:forward"]
     1199{
     1200    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");
     1201}
     1202way["placement:backward"]
     1203{
     1204    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");
     1205}
     1206way["placement"]["placement:forward"], way["placement"]["placement:backward"], way["placement:forward"]["placement:backward"]
     1207{
     1208    data_error: eval("multiple placement tags");
     1209}
     1210
    11551211/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    11561212/* 1. Calculate the borders without consideration of placement                                                                                     */