1 | /* {0} on a node */ |
---|
2 | node[oneway], |
---|
3 | node[bridge?], |
---|
4 | node[landuse], |
---|
5 | node[sidewalk], |
---|
6 | node[source:outline] { |
---|
7 | throwWarning: tr("{0} on a node", "{0.key}"); |
---|
8 | assertMatch: "node oneway=-1"; |
---|
9 | assertNoMatch: "way oneway=-1"; |
---|
10 | assertMatch: "node bridge=yes"; |
---|
11 | assertNoMatch: "node bridge=13"; |
---|
12 | } |
---|
13 | |
---|
14 | node[natural=wood] { |
---|
15 | throwOther: tr("{0} on a node. Should be drawn as an area", "{0.tag}"); |
---|
16 | } |
---|
17 | |
---|
18 | /* see ticket:#10125 */ |
---|
19 | node[source:geometry] { |
---|
20 | throwWarning: tr("{0} on a node", "{0.key}"); |
---|
21 | fixChangeKey: "source:geometry => source:position"; |
---|
22 | } |
---|
23 | |
---|
24 | /* Building inside building (spatial test) */ |
---|
25 | *[building][building!~/no|entrance/][any(tag("layer"),"0") = any(parent_tag("layer"),"0")] ∈ |
---|
26 | *[building][building!~/no|entrance/] { |
---|
27 | throwWarning: tr("Building inside building"); |
---|
28 | } |
---|
29 | |
---|
30 | /* Overlapping areas (spatial test) */ |
---|
31 | area[natural =~ /^(water|wetland|coastline)$/], area[landuse=reservoir] { |
---|
32 | set water_area; |
---|
33 | } |
---|
34 | |
---|
35 | /* area:closed:areaStyle.water_area ⧉ area:closed:areaStyle.water_area -- does not work for now -- see ticket#10215 */ |
---|
36 | area:closed:areaStyle[natural =~ /^(water|wetland|coastline)$/] ⧉ area:closed:areaStyle.water_area, |
---|
37 | area:closed:areaStyle[landuse=reservoir] ⧉ area:closed:areaStyle.water_area { |
---|
38 | throwWarning: tr("Overlapping Water Areas"); |
---|
39 | } |
---|
40 | |
---|
41 | area:closed:areaStyle ⧉ area:closed:areaStyle { |
---|
42 | throwOther: tr("Overlapping Areas"); |
---|
43 | } |
---|
44 | |
---|
45 | /* see ticket #9311 */ |
---|
46 | node[amenity=parking]["capacity:disabled" !~ /^(yes|[0-9]+)$/] ∈ *[amenity=parking] { |
---|
47 | throwWarning: tr("{0} inside {1}", "amenity=parking", "amenity=parking"); |
---|
48 | } |
---|
49 | |
---|
50 | /* see ticket #9556 */ |
---|
51 | area:closed:areaStyle[tag("natural") = parent_tag("natural")] ⧉ area:closed:areaStyle[natural] { |
---|
52 | throwWarning: tr("Overlapping Identical Natural Areas"); |
---|
53 | } |
---|
54 | |
---|
55 | area:closed:areaStyle[tag("landuse") = parent_tag("landuse")] ⧉ area:closed:areaStyle[landuse] { |
---|
56 | throwWarning: tr("Overlapping Identical Landuses"); |
---|
57 | } |
---|
58 | |
---|
59 | /* see ticket:#9522 */ |
---|
60 | node[tag("amenity") = parent_tag("amenity")] ∈ *[amenity][amenity != parking] { |
---|
61 | throwWarning: tr("{0} inside {1}", concat("amenity=", tag("amenity")), concat("amenity=", tag("amenity"))); |
---|
62 | } |
---|
63 | node[tag("leisure") = parent_tag("leisure")] ∈ *[leisure] { |
---|
64 | throwWarning: tr("{0} inside {1}", concat("leisure=", tag("leisure")), concat("leisure=", tag("leisure"))); |
---|
65 | } |
---|
66 | node[tag("tourism") = parent_tag("tourism")] ∈ *[tourism] { |
---|
67 | throwWarning: tr("{0} inside {1}", concat("tourism=", tag("tourism")), concat("tourism=", tag("tourism"))); |
---|
68 | } |
---|
69 | node[tag("shop") = parent_tag("shop")] ∈ *[shop] { |
---|
70 | throwWarning: tr("{0} inside {1}", concat("shop=", tag("shop")), concat("shop=", tag("shop"))); |
---|
71 | } |
---|
72 | node[tag("power") = parent_tag("power")] ∈ *[power] { |
---|
73 | throwWarning: tr("{0} inside {1}", concat("power=", tag("power")), concat("power=", tag("power"))); |
---|
74 | } |
---|
75 | |
---|
76 | /* see #10252 */ |
---|
77 | way[route=bus] { |
---|
78 | throwWarning: tr("{0} on a way. Should be used in a relation", "{0.tag}"); |
---|
79 | } |
---|
80 | node[route] { |
---|
81 | throwWarning: tr("{0}=* on a node. Should be used in a relation", "{0.key}"); |
---|
82 | } |
---|