Changes between Version 20 and Version 21 of Styles/Lane_and_Road_Attributes
- Timestamp:
- 2013-03-04T14:18:15+01:00 (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Styles/Lane_and_Road_Attributes
v20 v21 48 48 description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes."; 49 49 author: "Martin Vonwald"; 50 version: " 0.99-beta15-[[revision]]_[[date]]";50 version: "1.0-[[revision]]_[[date]]"; 51 51 license: "CC-BY-SA"; 52 52 min-josm-version: "5714"; … … 203 203 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 204 204 /* 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 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 211 way["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 } 215 way["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 } 219 way["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 } 223 way["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 } 227 way["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 } 231 way["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 } 235 way["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 } 239 way["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 } 243 way["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 208 248 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 209 249 /* Forward lanes */ … … 216 256 temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"), 217 257 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");219 258 temp_list: eval(split("|",prop(temp))); 220 259 temp_length: eval(length(prop(temp_list))); … … 253 292 temp: eval(cond(has_tag_key("change:lanes"),tag("change:lanes"),cond(has_tag_key("change"),tag("change"), 254 293 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");256 294 temp_list: eval(split("|",prop(temp))); 257 295 temp_length: eval(length(prop(temp_list))); … … 286 324 { 287 325 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");289 326 temp_list: eval(split("|",prop(temp))); 290 327 temp_length: eval(length(prop(temp_list))); … … 341 378 tag("turn:forward") 342 379 )))); 343 /* Work aorund for issue with the lenght() function temp: eval(regexp_test(".*([|])$",prop(temp))?concat(prop(temp),"none"):prop(temp)); */344 380 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"); 345 381 temp_list: eval(split("|",prop(temp))); … … 387 423 tag("turn:backward") 388 424 )))); 389 /* Work aorund for issue with the lenght() function temp: eval(regexp_test(".*([|])$",prop(temp))?concat(prop(temp),"none"):prop(temp)); */390 425 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"); 391 426 temp_list: eval(split("|",prop(temp))); 392 427 temp_length: eval(length(prop(temp_list))); 393 428 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 */ 395 430 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":"")):"")); 396 431 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":"")):"")); … … 402 437 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":"")):"")); 403 438 404 /* Get the relevant code from the list or unset the property*/ 439 /* Get the relevant code from the list or unset the property */ 405 440 turn_backward_1: eval((prop(turn_backward_1)>0)?get(prop(turn_matrix),prop(turn_backward_1)):prop(unset_property)); 406 441 turn_backward_2: eval((prop(turn_backward_2)>0)?get(prop(turn_matrix),prop(turn_backward_2)):prop(unset_property)); … … 421 456 /* Lane access (no and designated) */ 422 457 /* The property designated_color_xxx will be overwritten by later rules */ 423 /* TODO: both_ways arenot implemented */458 /* TODO: both_ways is not implemented */ 424 459 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 425 460 /***************************************************************************************************************************************************/ … … 999 1034 way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)] 1000 1035 { 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)); 1002 1037 change_backward_1_left: eval((prop(oneway_type)=(-1))?prop(change_border):prop(change_backward_1_left)); 1003 1038 } … … 1007 1042 change_forward_1_left: prop(change_border); 1008 1043 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)); 1009 1045 } 1010 1046 way|z17-[is_prop_set(ok)][prop(style_right_hand_traffic)], … … 1153 1189 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 1154 1190 /***************************************************************************************************************************************************/ 1191 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 1192 /* Error checking */ 1193 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 1194 way["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 } 1198 way["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 } 1202 way["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 } 1206 way["placement"]["placement:forward"], way["placement"]["placement:backward"], way["placement:forward"]["placement:backward"] 1207 { 1208 data_error: eval("multiple placement tags"); 1209 } 1210 1155 1211 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/ 1156 1212 /* 1. Calculate the borders without consideration of placement */
