forked from openstreetmap/iD
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathkeepRight.json
503 lines (503 loc) · 18.5 KB
/
keepRight.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
{
"localizeStrings": {
"this node": "this_node",
"this way": "this_way",
"this relation": "this_relation",
"this one-way": "this_oneway",
"this highway": "this_highway",
"this railway": "this_railway",
"this waterway": "this_waterway",
"this cycleway": "this_cycleway",
"this footpath": "this_footpath",
"this cycleway/footpath": "this_cycleway_footpath",
"this riverbank": "this_riverbank",
"this crossing": "this_crossing",
"this railway crossing": "this_railway_crossing",
"this bridge": "this_bridge",
"this tunnel": "this_tunnel",
"this boundary": "this_boundary",
"this turn-restriction": "this_turn_restriction",
"this roundabout": "this_roundabout",
"this mini-roundabout": "this_mini_roundabout",
"this track": "this_track",
"this feature": "this_feature",
"highway": "highway",
"railway": "railway",
"waterway": "waterway",
"cycleway": "cycleway",
"cycleway_footpath": "cycleway/footpath",
"riverbank": "riverbank",
"place_of_worship": "place_of_worship",
"pub": "pub",
"restaurant": "restaurant",
"school": "school",
"university": "university",
"hospital": "hospital",
"library": "library",
"theatre": "theatre",
"courthouse": "courthouse",
"bank": "bank",
"cinema": "cinema",
"pharmacy": "pharmacy",
"cafe": "cafe",
"fast_food": "fast_food",
"fuel": "fuel",
"from": "from",
"to": "to",
"left-hand": "left_hand",
"right-hand": "right_hand"
},
"errorTypes": {
"20": {
"title": "multiple nodes on the same spot",
"severity": "warning",
"description": "There is more than one node in this spot. Offending node IDs: $1",
"IDs": ["20"],
"regex": "IDs: ((?:#\\d+,?)+)"
},
"30": {
"title": "non-closed_areas",
"severity": "error",
"description": "This way is tagged with '$1' and should be closed-loop.",
"IDs": ["this", ""],
"regex": "(this way) is tagged with '(.+)'"
},
"40": {
"title": "dead-ended one-ways",
"severity": "error",
"description": "The first node (id $1) of this one-way is not connected to any other way",
"IDs": ["n", "this"],
"regex": "\\(id (\\d+)\\) of (this one-way)"
},
"41": {
"title": "",
"severity": "error",
"description": "The last node (id $1) of this one-way is not connected to any other way",
"IDs": ["n", "this"],
"regex": "\\(id (\\d+)\\) of (this one-way)"
},
"42": {
"title": "",
"severity": "error",
"description": "This node cannot be reached because one-ways only lead away from here",
"IDs": ["this"],
"regex": "(this node)"
},
"43": {
"title": "",
"severity": "error",
"description": "You cannot escape from this node because one-ways only lead to here",
"IDs": ["this"],
"regex": "(this node)"
},
"50": {
"title": "almost-junctions",
"severity": "error",
"description": "This node is very close but not connected to way #$1",
"IDs": ["this", "w"],
"regex": "(this node) is very close but not connected to way #(\\d+)"
},
"60": {
"title": "deprecated tags",
"severity": "warning",
"description": "This $1 uses deprecated tag $2. Please use $3 instead!",
"IDs": ["this", "", ""],
"regex": "(this (?:node|way|relation)) uses deprecated tag '(.+)'\\. Please use "(.+)""
},
"70": {
"title": "missing tags",
"severity": "error",
"description": "This $1 has an empty tag: $2",
"IDs": ["this", ""],
"regex": "(this (?:node|way|relation)) has an empty tag: "(.+)=""
},
"71": {
"title": "",
"severity": "error",
"description": "This way has no tags",
"IDs": ["this"],
"regex": "(this way)"
},
"72": {
"title": "",
"severity": "error",
"description": "This node is not member of any way and does not have any tags",
"IDs": ["this"],
"regex": "(this node)"
},
"73": {
"title": "",
"severity": "error",
"description": "This way has a $1 tag but no highway tag",
"IDs": ["this", ""],
"regex": "(this way) has a (.+) tag"
},
"74": {
"title": "missing tags",
"severity": "error",
"description": "This $1 has an empty tag: $2",
"IDs": ["this", ""],
"regex": "(this (?:node|way|relation)) has an empty tag: "(.+)=""
},
"75": {
"description": "This (node|way|relation) has a name \\((.+)\\) but no other tag",
"IDs": ["this", ""],
"regex": "(this (?:node|way|relation)) has a name \\((.+)\\)"
},
"90": {
"title": "motorways without ref",
"severity": "error",
"description": "This way is tagged as motorway and therefore needs a ref nat_ref or int_ref tag",
"IDs": ["this"],
"regex": "(this way)"
},
"100": {
"title": "places of worship without religion",
"severity": "error",
"description": "This $1 is tagged as place of worship and therefore needs a religion tag",
"IDs": ["this"],
"regex": "(this (?:node|way|relation))"
},
"110": {
"title": "point of interest without name",
"severity": "error",
"description": "This node is tagged as $1 and therefore needs a name tag",
"IDs": ["this", ""],
"regex": "(this (?:node|way|relation)) is tagged as (.+) and"
},
"120": {
"title": "ways without nodes",
"severity": "error",
"description": "This way has just one single node",
"IDs": ["this"],
"regex": "(this way)"
},
"130": {
"title": "floating islands",
"severity": "error",
"description": "This way is not connected to the rest of the map",
"IDs": ["this"],
"regex": "(this way)"
},
"150": {
"title": "railway crossing without tag",
"severity": "error",
"description": "This crossing of a highway and a railway needs to be tagged as railway=crossing or railway=level_crossing",
"IDs": ["this"],
"regex": "(this crossing)"
},
"160": {
"title": "wrongly used railway tag",
"severity": "error",
"description": "There are ways in different layers coming together in this railway crossing. There are ways tagged as tunnel or bridge coming together in this railway crossing",
"IDs": ["this"],
"regex": "(this railway crossing)"
},
"170": {
"title": "FIXME tagged items",
"severity": "error",
"description": "This feature has a FIXME tag: (.*)",
"IDs": ["this"],
"regex": "(this feature) has a FIXME tag: (.*)"
},
"180": {
"title": "relations without type",
"severity": "error",
"description": "This relation has no type tag which is mandatory for relations",
"IDs": ["this"],
"regex": "(this relation)"
},
"190": {
"title": "intersections without junctions",
"severity": "error",
"description": "This $1 intersects the $2 #$3 but there is no junction node",
"IDs": ["this", "", "w"],
"regex": "(this .+) intersects the (.+) #(\\d+)"
},
"200": {
"title": "overlapping ways",
"severity": "error",
"description": "This $1 overlaps the $2 #$3",
"IDs": ["this", "", "w"],
"regex": "(this .+) overlaps the (.+) #(\\d+)"
},
"210": {
"title": "loopings",
"severity": "error",
"description": "These errors contain self intersecting ways"
},
"211": {
"title": "",
"severity": "error",
"description": "This way contains more than one node at least twice. Nodes are $1.",
"IDs": ["this", "211"],
"regex": "(this way) contains more than one node at least twice. Nodes are ((?:#\\d+(?:, )?)+)\\."
},
"212": {
"title": "",
"severity": "error",
"description": "This way has only two different nodes and contains one of them more than once",
"IDs": ["this"],
"regex": "(this way)"
},
"220": {
"title": "misspelled tags",
"severity": "error",
"description": "This $1 is tagged '$2' where $3 looks like $4",
"regex": "(this (?:node|way|relation)) is tagged '(.+)' where "(.+)" looks like "(.+)""
},
"221": {
"title": "",
"severity": "error",
"description": "The key of this $1's tag is 'key': $2",
"regex": "(this (?:node|way|relation))\\'s tag is \\'key\\': (.+)"
},
"230": {
"title": "layer conflicts",
"severity": "error",
"description": "This node is a junction of ways on different layers.",
"IDs": ["this"],
"regex": "(this node)"
},
"231": {
"title": "mixed layers intersection",
"severity": "error",
"description": "This node is a junction of ways on different layers: $1",
"IDs": ["this", "231"],
"regex": "(this node) is a junction of ways on different layers: (.+)"
},
"232": {
"title": "strange layers",
"severity": "error",
"description": "This $1 is tagged with layer $2. This need not be an error, but it looks strange",
"IDs": ["this", ""],
"regex": "(this (?:bridge|tunnel)) is tagged with layer (-?\\d+)\\."
},
"270": {
"title": "motorways connected directly",
"severity": "error",
"description": "This node is a junction of a motorway and a highway other than motorway, motorway_link, trunk, rest_area or construction. Service or unclassified is only valid if it has access=no/private or it leads to a motorway service area or if it is a service=parking_aisle.",
"IDs": ["this"],
"regex": "(this node)"
},
"280": {
"title": "boundaries",
"severity": "error",
"description": "Administrative Boundaries can be expressed either by tagging ways or by adding them to a relation. They should be closed-loop sequences of ways, they must not self-intersect or split and they must have a name and an admin_level."
},
"281": {
"title": "missing name",
"severity": "error",
"description": "This boundary has no name",
"IDs": ["this"],
"regex": "(this boundary)"
},
"282": {
"title": "missing admin level",
"severity": "error",
"description": "The boundary of $1 has no (?:valid numeric)?admin_level",
"regex": "of (.+) has"
},
"283": {
"title": "no closed loop",
"severity": "error",
"description": "The boundary of $1 is not closed-loop",
"regex": "boundary of (.+) is"
},
"284": {
"title": "splitting boundary",
"severity": "error",
"description": "The boundary of $1 splits here",
"regex": "boundary of (.+) splits"
},
"285": {
"title": "admin_level too high",
"severity": "error",
"description": "This boundary-way has admin_level $1 but belongs to a relation with lower admin_level (higher priority); it should have the lowest admin_level of all relations",
"IDs": ["this", ""],
"regex": "(this boundary)-way has admin_level (-?\\d+) but"
},
"290": {
"title": "restrictions",
"severity": "error",
"description": "Analyses all relations tagged type=restriction or following variations type=restriction:hgv type=restriction:caravan type=restriction:motorcar type=restriction:bus type=restriction:agricultural type=restriction:motorcycle type=restriction:bicycle and type=restriction:hazmat"
},
"291": {
"title": "missing type",
"severity": "error",
"description": "This turn-restriction has no (?:known )?restriction type",
"IDs": ["this"],
"regex": "(this turn-restriction) has"
},
"292": {
"title": "missing from way",
"severity": "error",
"description": "This turn-restriction needs exactly one from member. This one has $1",
"IDs": ["this", ""],
"regex": "(this turn-restriction) needs.+has (\\d+)"
},
"293": {
"title": "missing to way",
"severity": "error",
"description": "This turn-restriction needs exactly one to member. This one has $1",
"IDs": ["this", ""],
"regex": "(this turn-restriction) needs.+has (\\d+)"
},
"294": {
"title": "from or to not a way",
"severity": "error",
"description": "From- and To-members of this turn-restriction need to be ways. $1",
"IDs": ["this", "294"],
"regex": "(this turn-restriction)~.+ways\\. ((?:(?:from|to) (?:node|relation) #\\d+,?)+)"
},
"295": {
"title": "via is not on the way ends",
"severity": "error",
"description": "via (node #$1) is not the first or the last member of (from|to) (way #$3)",
"IDs": ["this", "n", "", "w"],
"regex": "(this turn-restriction)~via \\(node #(\\d+)\\).+ of (from|to) \\(way #(\\d+)\\)"
},
"296": {
"title": "wrong restriction angle",
"severity": "error",
"description": "This turn-restriction type is $1, but angle is $2 degrees. Maybe the restriction type is not appropriate?",
"IDs": ["this", "", ""],
"regex": "(this turn-restriction)~.+is (\\w+), but angle is (-?\\d+)"
},
"297": {
"title": "wrong direction of to member",
"severity": "error",
"description": "wrong direction of to way $1",
"IDs": ["this", "w"],
"regex": "(this turn-restriction)~.+to way (\\d+)"
},
"298": {
"title": "already restricted by oneway",
"severity": "error",
"description": "entry already prohibited by oneway tag on $1",
"IDs": ["this", "w"],
"regex": "(this turn-restriction)~.+tag on (\\d+)"
},
"300": {
"title": "missing maxspeed",
"severity": "warning",
"description": "This highway is missing a maxspeed tag",
"IDs": ["this"],
"regex": "(this highway)"
},
"310": {
"title": "roundabouts",
"severity": "error",
"description": "Analyses ways with tag junction=roundabout. More then one way can form a roundabout. It supports tag oneway=-1"
},
"311": {
"title": "not closed loop",
"severity": "error",
"description": "This way is part of a roundabout but is not closed-loop. (split carriageways approaching a roundabout should not be tagged as roundabout)",
"IDs": ["this"],
"regex": "(this way)"
},
"312": {
"title": "wrong direction",
"severity": "error",
"description": "If this ((?:mini_)?roundabout) is in a country with (left|right)-hand traffic then its orientation goes the wrong way around",
"IDs": ["this", ""],
"regex": "(this (?:mini_)?roundabout) is in a country with ((?:left|right)-hand)"
},
"313": {
"title": "faintly connected",
"severity": "error",
"description": "This roundabout has only $1 other roads connected. Roundabouts typically have three",
"IDs": ["this", ""],
"regex": "(this roundabout) has only (\\d) other"
},
"320": {
"title": "*_link connections",
"severity": "error",
"description": "This way is tagged as highway=$1_link but doesn't have a connection to any other $1 or $1_link",
"IDs": ["this", "", "", "", ""],
"regex": "(this way) is tagged as (highway=.+) but doesn't have a connection to any other (.+) or (.+)"
},
"350": {
"title": "bridge-tags",
"severity": "error",
"description": "This bridge does not have a tag in common with its surrounding ways that shows the purpose of this bridge. There should be one of these tags: (.+)",
"NOTE": "Group can be arbitrary list of form: key=value,key=value,key=value...",
"IDs": ["this", ""],
"regex": "(this bridge).*tags: (.+)"
},
"360": {
"title": "language unknown",
"severity": "warning",
"description": "It would be nice if this (node|way|relation) had an additional tag 'name:XX=(.+)' where XX shows the language of its name '\\2'",
"IDs": ["this", ""],
"regex": "(this (?:node|way|relation)) had an additional tag 'name:XX=(.+)' where"
},
"370": {
"title": "doubled places",
"severity": "error",
"description": "This node has tags in common with the surrounding way #$1 ((?:\\(including the name '.+'\\) )?)and seems to be redundant",
"IDs": ["this", "w", "370"],
"regex": "(this node) has tags in common with the surrounding way #(\\d+) ((?:\\(including the name '.+'\\) )?)and"
},
"380": {
"title": "non-physical use of sport-tag",
"severity": "error",
"description": "This way is tagged sport=$1 but has no physical tag like e.g. leisure, building, amenity or highway",
"IDs": ["this", ""],
"regex": "(this way) is tagged (sport=.+) but"
},
"390": {
"title": "missing tracktype",
"severity": "warning",
"description": "This track doesn''t have a tracktype",
"IDs": ["this"],
"regex": "(this track)"
},
"400": {
"title": "geometry glitches",
"severity": "error",
"description": ""
},
"401": {
"title": "missing turn restriction",
"severity": "error",
"description": "ways $1 and $2 join in a very sharp angle here and there is no oneway tag or turn restriction that prevents turning( from way (\\1|\\2) to (\\1|\\2))?",
"IDs": ["w", "w"],
"regex": "ways (\\d+) and (\\d+) join"
},
"402": {
"title": "impossible angles",
"severity": "error",
"description": "this way bends in a very sharp angle here",
"IDs": ["this"],
"regex": "(this way)"
},
"410": {
"title": "website",
"severity": "error",
"description": "Web pages are analyzed. Web page is defined by any of the following tags website=* url=* website:mobile=* contact:website=* contact:url=* image=* source:website=* or source:url=*"
},
"411": {
"title": "http error",
"severity": "error",
"description": "The URL (<a target=_blank href=$1>$1</a>) cannot be opened (HTTP status code $2)",
"IDs": ["this", "url", ""],
"regex": "(this feature)~.+ href=([^>]+)>.+ code (\\d+)\\)"
},
"412": {
"title": "domain hijacking",
"severity": "error",
"description": "Possible domain squatting: <a target=_blank href=$1>$1</a>. Suspicious text is: \"$2\"",
"IDs": ["this", "url", ""],
"regex": "(this feature)~.+ href=([^>]+)>.+ is: "(.+)""
},
"413": {
"title": "non-match",
"severity": "error",
"description": "Content of the URL (<a target=_blank href=$1>$1</a>) did not contain these keywords: ($2)",
"IDs": ["this", "url", ""],
"regex": "(this feature)~.+ href=([^>]+)>.+ keywords: \\((.+)\\)"
}
}
}