| 1 | # JOSM TagChecker validator file |
|---|
| 2 | |
|---|
| 3 | # Format: |
|---|
| 4 | # Each line specifies a certain error to be reported |
|---|
| 5 | # <data type> : messagetype : <key><expression><value> |
|---|
| 6 | # Lines starting with a # are considered as comments. |
|---|
| 7 | # |
|---|
| 8 | # Data type can be: |
|---|
| 9 | # node - a node point |
|---|
| 10 | # way - a way |
|---|
| 11 | # relation - a relation |
|---|
| 12 | # * - all data types |
|---|
| 13 | # |
|---|
| 14 | # Message type can be: |
|---|
| 15 | # E - an error |
|---|
| 16 | # W - a warning |
|---|
| 17 | # I - an low priority informational warning |
|---|
| 18 | # |
|---|
| 19 | # Key and value are expressions describing certain keys and values of these keys. |
|---|
| 20 | # Regulator expressions are supported. In this case the expressions starts and |
|---|
| 21 | # ends with a / sign. If an 'i' is appended, the regular expression is |
|---|
| 22 | # case insensitive. For instance, /foo|bar/i |
|---|
| 23 | # |
|---|
| 24 | # The * sign indicates any string. |
|---|
| 25 | # The texts BOOLEAN_TRUE and BOOLEAN_FALSE in the value part indicate a special |
|---|
| 26 | # handling for boolean values (yes, true, 0, false, no, ...). |
|---|
| 27 | # |
|---|
| 28 | # Expression can be: |
|---|
| 29 | # != - the key/value combination does not match |
|---|
| 30 | # == - the key/value combination does match |
|---|
| 31 | # |
|---|
| 32 | # To have more complicated expressions, multiple elements can be grouped together |
|---|
| 33 | # with an logical and (&&). |
|---|
| 34 | # |
|---|
| 35 | # The comment at the end of a rule is displayed in validator description |
|---|
| 36 | # |
|---|
| 37 | # Empty lines and space signs are ignored |
|---|
| 38 | |
|---|
| 39 | way : W : highway == * && name == /.* (Ave|Blvd|Cct|Cir|Cl|Cr|Crct|Cres|Crt|Ct|Dr|Drv|Esp|Espl|Hwy|Ln|Mw|Mwy|Pl|Rd|Qy|Qys|Sq|St|Str|Ter|Tce|Tr|Wy)\.?$/i # abbreviated street name |
|---|
| 40 | |
|---|
| 41 | node : W : oneway == * # oneway tag on a node |
|---|
| 42 | node : W : bridge == BOOLEAN_TRUE # bridge tag on a node |
|---|
| 43 | node : W : highway == tertiary # wrong highway tag on a node |
|---|
| 44 | node : W : highway == secondary # wrong highway tag on a node |
|---|
| 45 | node : W : highway == residential # wrong highway tag on a node |
|---|
| 46 | node : W : highway == unclassified # wrong highway tag on a node |
|---|
| 47 | node : W : highway == track # wrong highway tag on a node |
|---|
| 48 | way : I : highway == unclassified && name != * # Unnamed unclassified highway |
|---|
| 49 | way : I : highway == secondary && ref != * # highway without a reference |
|---|
| 50 | way : I : highway == tertiary && ref != * # highway without a reference |
|---|
| 51 | way : I : highway == motorway && nat_ref != * # highway without a reference |
|---|
| 52 | * : W : highway == road # temporary highway type |
|---|
| 53 | * : W : / *name */i == * && name != * # misspelled key name |
|---|
| 54 | |
|---|
| 55 | # The following could replace unnamed way check. Still at the moment we keep it as it is |
|---|
| 56 | #way : W : junction == roundabout && highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/ && /name|ref|(name:.*)|(.*_name)|(.*_ref)/ != * # Unnamed junction |
|---|
| 57 | #way : W : highway == /motorway|trunk|primary|secondary|tertiary|residential|pedestrian/ && /name|ref|(name:.*)|(.*_name)|(.*_ref)/ != * # Unnamed |
|---|
| 58 | |
|---|
| 59 | way : W : highway == cycleway && bicycle == BOOLEAN_FALSE # cycleway with tag bicycle |
|---|
| 60 | way : W : highway == footway && foot == BOOLEAN_FALSE # footway with tag foot |
|---|
| 61 | #way : I : highway == cycleway && bicycle == * # cycleway with tag bicycle |
|---|
| 62 | #way : I : highway == footway && foot == * # footway with tag foot |
|---|
| 63 | way : W : highway == cycleway && cycleway == lane # separate cycleway as lane on a cycleway |
|---|
| 64 | way : W : highway == * && barrier == * # barrier used on a way |
|---|
| 65 | |
|---|
| 66 | #way : I : waterway == * && layer != * # waterway without layer tag |
|---|
| 67 | way : I : highway == footway && maxspeed == * # maxspeed used for footway |
|---|
| 68 | way : I : highway == steps && maxspeed == * # maxspeed used for footway |
|---|
| 69 | |
|---|
| 70 | way : W : oneway != BOOLEAN_FALSE && /.*:(backward|forward)/ == * # oneway combined with *:backward/forward |
|---|
| 71 | |
|---|
| 72 | * : W : layer == /\+.*/ # layer tag with + sign |
|---|
| 73 | |
|---|
| 74 | * : I : name == /.*Strasse.*/i # street name contains ss |
|---|
| 75 | |
|---|
| 76 | relation : E : type != * # relation without type |
|---|
| 77 | |
|---|
| 78 | node : I : amenity == /restaurant|cafe|fast_food/ && name != * # restaurant without name |
|---|
| 79 | #way : I : highway != * && railway != * && waterway != * && name == * # unusual named way type |
|---|
| 80 | #* : W : natural == water && waterway == * # unusual tag combination |
|---|
| 81 | * : W : highway == * && waterway == * # unusual tag combination |
|---|
| 82 | * : W : highway == * && natural == * # unusual tag combination |
|---|