source: josm/trunk/resources/data/validator/deprecated.mapcss@ 17937

Last change on this file since 17937 was 17926, checked in by Klumbumbus, 5 years ago

fix #21009 - Warn about landuse=yes

  • Property svn:eol-style set to native
File size: 69.1 KB
Line 
1*[barrier=wire_fence] {
2 throwWarning: tr("{0} is deprecated", "{0.tag}");
3 group: tr("deprecated tagging");
4 suggestAlternative: "barrier=fence + fence_type=chain_link";
5 fixAdd: "barrier=fence";
6 fixAdd: "fence_type=chain_link";
7 assertMatch: "way barrier=wire_fence";
8 assertNoMatch: "way barrier=fence";
9}
10
11*[barrier=wood_fence] {
12 throwWarning: tr("{0} is deprecated", "{0.tag}");
13 suggestAlternative: "barrier=fence + fence_type=wood";
14 group: tr("deprecated tagging");
15 fixAdd: "barrier=fence";
16 fixAdd: "fence_type=wood";
17}
18
19node[highway=ford] {
20 throwWarning: tr("{0} is deprecated", "{0.tag}");
21 suggestAlternative: "ford=yes";
22 group: tr("deprecated tagging");
23 fixRemove: "highway";
24 fixAdd: "ford=yes";
25}
26way[highway=ford] {
27 throwWarning: tr("{0} is deprecated", "{0.tag}");
28 suggestAlternative: "highway=* + ford=yes";
29 group: tr("deprecated tagging");
30}
31
32/* from http://wiki.openstreetmap.org/wiki/Deprecated_features */
33way[class] {
34 throwWarning: tr("{0} is deprecated", "{0.key}");
35 suggestAlternative: "highway";
36 group: tr("deprecated tagging");
37}
38*[highway=stile] {
39 throwWarning: tr("{0} is deprecated", "{0.tag}");
40 suggestAlternative: "barrier=stile";
41 group: tr("deprecated tagging");
42 fixRemove: "highway";
43 fixAdd: "barrier=stile";
44}
45*[highway=incline] {
46 throwWarning: tr("{0} is deprecated", "{0.tag}");
47 suggestAlternative: "incline";
48 group: tr("deprecated tagging");
49}
50*[highway=incline_steep] {
51 throwWarning: tr("{0} is deprecated", "{0.tag}");
52 suggestAlternative: "incline";
53 group: tr("deprecated tagging");
54}
55*[highway=unsurfaced] {
56 throwWarning: tr("{0} is deprecated", "{0.tag}");
57 suggestAlternative: "highway=* + surface=unpaved";
58 group: tr("deprecated tagging");
59 fixAdd: "highway=road";
60 fixAdd: "surface=unpaved";
61}
62*[landuse=wood] {
63 throwWarning: tr("{0} is deprecated", "{0.tag}");
64 suggestAlternative: "landuse=forest";
65 suggestAlternative: "natural=wood";
66 group: tr("deprecated tagging");
67}
68*[natural=marsh] {
69 throwWarning: tr("{0} is deprecated", "{0.tag}");
70 suggestAlternative: "natural=wetland + wetland=marsh";
71 group: tr("deprecated tagging");
72 fixAdd: "natural=wetland";
73 fixAdd: "wetland=marsh";
74}
75*[highway=byway] {
76 throwWarning: tr("{0} is deprecated", "{0.tag}");
77 group: tr("deprecated tagging");
78}
79*[power_source] {
80 throwWarning: tr("{0} is deprecated", "{0.key}");
81 suggestAlternative: "generator:source";
82 group: tr("deprecated tagging");
83}
84*[power_rating] {
85 throwWarning: tr("{0} is deprecated", "{0.key}");
86 suggestAlternative: "generator:output";
87 group: tr("deprecated tagging");
88}
89
90*[shop=antique] {
91 throwWarning: tr("{0} is deprecated", "{0.tag}");
92 suggestAlternative: "shop=antiques";
93 group: tr("deprecated tagging");
94 fixAdd: "shop=antiques";
95}
96
97*[shop=bags] {
98 throwWarning: tr("{0} is deprecated", "{0.tag}");
99 suggestAlternative: "shop=bag";
100 group: tr("deprecated tagging");
101 fixAdd: "shop=bag";
102}
103
104/* #17527 */
105*[shop=fashion] {
106 throwWarning: tr("{0} is deprecated", "{0.tag}");
107 suggestAlternative: "shop=clothes";
108 group: tr("deprecated tagging");
109 fixAdd: "shop=clothes";
110}
111
112*[shop=organic] {
113 throwWarning: tr("{0} is deprecated", "{0.tag}");
114 suggestAlternative: "shop=* + organic=yes";
115 suggestAlternative: "shop=* + organic=only";
116 group: tr("deprecated tagging");
117}
118
119*[shop=pets] {
120 throwWarning: tr("{0} is deprecated", "{0.tag}");
121 suggestAlternative: "shop=pet";
122 group: tr("deprecated tagging");
123 fixAdd: "shop=pet";
124}
125
126*[shop=pharmacy] {
127 throwWarning: tr("{0} is deprecated", "{0.tag}");
128 suggestAlternative: "amenity=pharmacy";
129 group: tr("deprecated tagging");
130 fixChangeKey: "shop => amenity";
131}
132
133*[bicycle_parking=sheffield] {
134 throwWarning: tr("{0} is deprecated", "{0.tag}");
135 suggestAlternative: "bicycle_parking=stands";
136 group: tr("deprecated tagging");
137 fixAdd: "bicycle_parking=stands";
138}
139
140*[amenity=emergency_phone] {
141 throwWarning: tr("{0} is deprecated", "{0.tag}");
142 suggestAlternative: "emergency=phone";
143 group: tr("deprecated tagging");
144 fixRemove: "amenity";
145 fixAdd: "emergency=phone";
146}
147
148/* #8132 */
149*[sport=gaelic_football] {
150 throwWarning: tr("{0} is deprecated", "{0.tag}");
151 suggestAlternative: "sport=gaelic_games";
152 group: tr("deprecated tagging");
153 fixAdd: "sport=gaelic_games";
154}
155
156/* #8847, #8961 */
157*[power=station] {
158 throwWarning: tr("{0} is deprecated", "{0.tag}");
159 suggestAlternative: "power=plant";
160 suggestAlternative: "power=substation";
161 group: tr("deprecated tagging");
162}
163
164*[power=sub_station] {
165 throwWarning: tr("{0} is deprecated", "{0.tag}");
166 suggestAlternative: "power=substation";
167 group: tr("deprecated tagging");
168 fixAdd: "power=substation";
169}
170
171*[location=rooftop] {
172 throwWarning: tr("{0} is deprecated", "{0.tag}");
173 suggestAlternative: "location=roof";
174 group: tr("deprecated tagging");
175 fixAdd: "location=roof";
176}
177
178*[generator:location] {
179 throwWarning: tr("{0} is deprecated", "{0.key}");
180 suggestAlternative: "location";
181 group: tr("deprecated tagging");
182 fixChangeKey: "generator:location => location";
183}
184
185*[generator:method=dam] {
186 throwWarning: tr("{0} is deprecated", "{0.tag}");
187 suggestAlternative: "generator:method=water-storage";
188 group: tr("deprecated tagging");
189 fixAdd: "generator:method=water-storage";
190}
191
192*[generator:method=pumped-storage] {
193 throwWarning: tr("{0} is deprecated", "{0.tag}");
194 suggestAlternative: "generator:method=water-pumped-storage";
195 group: tr("deprecated tagging");
196 fixAdd: "generator:method=water-pumped-storage";
197}
198
199*[generator:method=pumping] {
200 throwWarning: tr("{0} is deprecated", "{0.tag}");
201 suggestAlternative: "generator:method=water-pumped-storage";
202 group: tr("deprecated tagging");
203 fixAdd: "generator:method=water-pumped-storage";
204}
205
206/* #8962 */
207*[fence_type=chain] {
208 throwWarning: tr("{0} is deprecated", "{0.tag}");
209 suggestAlternative: "barrier=chain";
210 suggestAlternative: "barrier=fence + fence_type=chain_link";
211 group: tr("deprecated tagging");
212}
213
214/* #9000 */
215*[building=entrance] {
216 throwWarning: tr("{0} is deprecated", "{0.tag}");
217 suggestAlternative: "entrance";
218 group: tr("deprecated tagging");
219}
220
221/* #9213 */
222*[board_type=board] {
223 throwWarning: tr("{0} is deprecated", "{0.tag}");
224 group: tr("deprecated tagging");
225 fixRemove: "board_type";
226}
227
228/* #8434 */
229*[man_made=measurement_station] {
230 throwWarning: tr("{0} is deprecated", "{0.tag}");
231 suggestAlternative: "man_made=monitoring_station";
232 group: tr("deprecated tagging");
233 fixAdd: "man_made=monitoring_station";
234}
235
236*[measurement=water_level] {
237 throwWarning: tr("{0} is deprecated", "{0.tag}");
238 suggestAlternative: "monitoring:water_level=yes";
239 group: tr("deprecated tagging");
240 fixRemove: "measurement";
241 fixAdd: "monitoring:water_level=yes";
242}
243
244*[measurement=weather] {
245 throwWarning: tr("{0} is deprecated", "{0.tag}");
246 suggestAlternative: "monitoring:weather=yes";
247 group: tr("deprecated tagging");
248 fixRemove: "measurement";
249 fixAdd: "monitoring:weather=yes";
250}
251
252*[measurement=seismic] {
253 throwWarning: tr("{0} is deprecated", "{0.tag}");
254 suggestAlternative: "monitoring:seismic_activity=yes";
255 group: tr("deprecated tagging");
256 fixRemove: "measurement";
257 fixAdd: "monitoring:seismic_activity=yes";
258}
259
260*[monitoring:river_level] {
261 throwWarning: tr("{0} is deprecated", "{0.key}");
262 suggestAlternative: "monitoring:water_level";
263 group: tr("deprecated tagging");
264 fixChangeKey: "monitoring:river_level => monitoring:water_level";
265}
266
267*[stay] {
268 throwWarning: tr("{0} is deprecated", "{0.key}");
269 suggestAlternative: "maxstay";
270 group: tr("deprecated tagging");
271 fixChangeKey: "stay => maxstay";
272}
273
274/* #9554 */
275*[emergency=aed] {
276 throwWarning: tr("{0} is deprecated", "{0.tag}");
277 suggestAlternative: "emergency=defibrillator";
278 group: tr("deprecated tagging");
279 fixAdd: "emergency=defibrillator";
280}
281
282/* from http://wiki.openstreetmap.org/wiki/Conditional_restrictions#Deprecated_tags */
283*[day_on][!restriction],
284*[day_off][!restriction],
285*[date_on][!restriction],
286*[date_off][!restriction],
287*[hour_on][!restriction],
288*[hour_off][!restriction] {
289 throwWarning: tr("{0} is deprecated", "{0.key}");
290 suggestAlternative: "*:conditional";
291 group: tr("deprecated tagging");
292 assertMatch: "node day_on=0-12";
293}
294
295/* #10000 */
296*[access=designated] {
297 throwWarning: tr("''{0}'' is meaningless, use more specific tags, e.g. ''{1}''", "access=designated", "bicycle=designated");
298 assertMatch: "way access=designated";
299}
300*[access=official] {
301 throwWarning: tr("''{0}'' does not specify the official mode of transportation, use ''{1}'' for example", "access=official", "bicycle=official");
302 assertMatch: "way access=official";
303}
304
305/* #10085 */
306*[fixme=yes], *[FIXME=yes] {
307 throwWarning: tr("{0}={1} is unspecific. Instead of ''{1}'' please give more information about what exactly should be fixed.", "{0.key}", "{0.value}");
308 assertMatch: "way fixme=yes";
309}
310
311*[name][name=~/^(?i)fixme$/] {
312 throwWarning: tr("Wrong usage of {0} tag. Remove {1}, because it is clear that the name is missing even without an additional tag.", "{0.key}", "{0.tag}");
313 fixRemove: "name";
314 assertMatch: "node name=fixme";
315 assertMatch: "node name=Fixme";
316 assertMatch: "node name=FIXME";
317 assertNoMatch: "node name=valid name";
318}
319
320*[note][note=~/^(?i)fixme$/] {
321 throwWarning: tr("{0} is unspecific. Instead use the key fixme with the information what exactly should be fixed in the value of fixme.", "{0.tag}");
322}
323
324/* #10107, #10108, #10929, #13391 - http://wiki.openstreetmap.org/wiki/Proposed_features/leaftype#Features.2FPages_affected */
325*[type=broad_leaved],
326*[type=broad_leafed] {
327 throwWarning: tr("{0} is deprecated", "{0.tag}");
328 suggestAlternative: "leaf_type=broadleaved";
329 group: tr("deprecated tagging");
330 fixRemove: "{0.key}";
331 fixAdd: "leaf_type=broadleaved";
332}
333*[wood=coniferous],
334*[type=coniferous],
335*[type=conifer] {
336 throwWarning: tr("{0} is deprecated", "{0.tag}");
337 suggestAlternative: "leaf_type=needleleaved";
338 group: tr("deprecated tagging");
339 fixRemove: "{0.key}";
340 fixAdd: "leaf_type=needleleaved";
341}
342*[wood=mixed] {
343 throwWarning: tr("{0} is deprecated", "{0.tag}");
344 suggestAlternative: "leaf_type=mixed";
345 group: tr("deprecated tagging");
346 fixRemove: "wood";
347 fixAdd: "leaf_type=mixed";
348}
349*[wood=evergreen],
350*[type=evergreen] {
351 throwWarning: tr("{0} is deprecated", "{0.tag}");
352 suggestAlternative: "leaf_cycle=evergreen";
353 group: tr("deprecated tagging");
354 fixRemove: "{0.key}";
355 fixAdd: "leaf_cycle=evergreen";
356}
357*[type=deciduous],
358*[type=deciduos] {
359 throwWarning: tr("{0} is deprecated", "{0.tag}");
360 suggestAlternative: "leaf_cycle=deciduous";
361 group: tr("deprecated tagging");
362 fixRemove: "type";
363 fixAdd: "leaf_cycle=deciduous";
364}
365*[wood=deciduous] {
366 throwWarning: tr("{0} is deprecated", "{0.tag}");
367 suggestAlternative: "leaf_type + leaf_cycle";
368 group: tr("deprecated tagging");
369}
370node[type=palm],
371way[type=palm] {
372 throwWarning: tr("{0} is deprecated", "{0.tag}");
373 suggestAlternative: "leaf_type";
374 suggestAlternative: "trees";
375 suggestAlternative: "species";
376 group: tr("deprecated tagging");
377}
378
379*[natural=land] {
380 throwWarning: tr("{0} is deprecated. Please use instead a multipolygon.", "{0.tag}");
381 group: tr("deprecated tagging");
382 assertMatch: "way natural=land";
383}
384
385/* #10447 - https://wiki.openstreetmap.org/wiki/Proposed_features/Bridge_types#Deprecated_bridge_key_values */
386*[bridge=causeway] {
387 throwWarning: tr("{0} is deprecated", "{0.tag}");
388 suggestAlternative: "ford=yes";
389 suggestAlternative: "bridge=low_water_crossing";
390 suggestAlternative: "embankment=yes";
391 group: tr("deprecated tagging");
392}
393*[bridge=swing] {
394 throwWarning: tr("{0} is deprecated", "{0.tag}");
395 suggestAlternative: "bridge:movable=swing";
396 suggestAlternative: "bridge:structure=simple-suspension";
397 group: tr("deprecated tagging");
398}
399*[bridge=suspension] {
400 throwWarning: tr("{0} is deprecated", "{0.tag}");
401 suggestAlternative: "bridge=yes + bridge:structure=suspension";
402 group: tr("deprecated tagging");
403 fixAdd: "bridge=yes";
404 fixAdd: "bridge:structure=suspension";
405}
406*[bridge=pontoon] {
407 throwWarning: tr("{0} is deprecated", "{0.tag}");
408 suggestAlternative: "bridge=yes + bridge:structure=floating";
409 group: tr("deprecated tagging");
410 fixAdd: "bridge=yes";
411 fixAdd: "bridge:structure=floating";
412}
413
414/* #10530 - Incorrect tag proposed in internal preset for years */
415*[fee=interval],
416*[lit=interval],
417*[supervised=interval] {
418 throwWarning: tr("{0} is deprecated. Please specify interval by using opening_hours syntax", "{0.tag}");
419 group: tr("deprecated tagging");
420}
421
422/* #10582 - JOSM supported this tag as "don't upload this" feature, before the introduction of upload flag at layer level */
423*[/josm\/ignore/] {
424 throwError: tr("{0} is deprecated. Please delete this object and use a private layer instead", "{0.key}");
425 group: tr("deprecated tagging");
426 fixDeleteObject: this;
427}
428
429/* #8281 */
430*[sport=diving] {
431 throwWarning: tr("{0} is deprecated", "{0.tag}");
432 suggestAlternative: "sport=scuba_diving";
433 suggestAlternative: "sport=cliff_diving";
434 group: tr("deprecated tagging");
435}
436
437/* #8281 */
438*[parking=park_and_ride] {
439 throwWarning: tr("{0} is deprecated", "{0.tag}");
440 suggestAlternative: "amenity=parking + park_ride=yes";
441 group: tr("deprecated tagging");
442 fixRemove: "parking";
443 fixAdd: "amenity=parking";
444 fixAdd: "park_ride=yes";
445}
446
447/* #19287, #18334, #17950, #10661, #10837, #11737, #12771, #21009 */
448*[playground=yes],
449*[manhole=plain],
450*[manhole=unknown],
451*[manhole=yes],
452*[police=yes],
453*[traffic_calming=yes],
454*[access=restricted],
455*[barrier=yes],
456*[aerialway=yes][!public_transport],
457*[amenity=yes],
458*[leisure=yes],
459*[landuse=yes],
460*[shop="*"],
461*[shop=yes][amenity!=fuel],
462*[craft=yes],
463*[service=yes],
464*[place=yes] {
465 throwWarning: tr("{0}={1} is unspecific. Please replace ''{1}'' by a specific value.", "{0.key}", "{0.value}");
466}
467
468/* #10693 - http://wiki.openstreetmap.org/wiki/Proposed_features/drop_recommendation_for_place_name , #10837 */
469*[place_name][!name] {
470 throwWarning: tr("{0} should be replaced with {1}", "{0.key}", "{1.key}");
471 fixChangeKey: "place_name => name";
472}
473*[place][place_name = *name] {
474 throwWarning: tr("{0} = {1}; remove {0}", "{1.key}", "{1.value}");
475 fixRemove: "{1.key}";
476}
477
478way[sidewalk=yes] {
479 throwWarning: tr("{0} is unspecific", "{0.tag}");
480 suggestAlternative: "sidewalk=left";
481 suggestAlternative: "sidewalk=right";
482 suggestAlternative: "sidewalk=both";
483 suggestAlternative: "sidewalk=separate";
484}
485
486*[waterway=water_point] {
487 throwWarning: tr("{0} is deprecated", "{0.tag}");
488 suggestAlternative: "amenity=water_point";
489 group: tr("deprecated tagging");
490 fixChangeKey: "waterway => amenity";
491}
492*[waterway=waste_disposal] {
493 throwWarning: tr("{0} is deprecated", "{0.tag}");
494 suggestAlternative: "amenity=waste_disposal";
495 group: tr("deprecated tagging");
496 fixChangeKey: "waterway => amenity";
497}
498*[waterway=mooring] {
499 throwWarning: tr("{0} is deprecated", "{0.tag}");
500 suggestAlternative: "mooring=yes";
501 group: tr("deprecated tagging");
502 fixRemove: "waterway";
503 fixAdd: "mooring=yes";
504}
505
506/* #10837 */
507*[building][levels],
508*[building:part=yes][levels] {
509 throwWarning: tr("{0} is deprecated", "{1.key}");
510 suggestAlternative: "building:levels";
511 group: tr("deprecated tagging");
512 fixChangeKey: "levels => building:levels";
513}
514
515/* #10691 */
516*[protected_class] {
517 throwWarning: tr("{0} is deprecated", "{0.key}");
518 suggestAlternative: "protect_class";
519 group: tr("deprecated tagging");
520 fixChangeKey: "protected_class => protect_class";
521}
522
523/* #11070 */
524*[kerb=unknown],
525*[lock=unknown],
526*[hide=unknown],
527*[shelter=unknown],
528*[access=unknown],
529*[capacity:parent=unknown],
530*[capacity:women=unknown],
531*[capacity:disabled=unknown],
532*[crossing=unknown],
533*[foot=unknown] {
534 throwWarning: tr("Unspecific tag {0}", "{0.tag}");
535}
536
537/* #11183 */
538*[sport=skiing] {
539 throwWarning: tr("Definition of {0} is unclear", "{0.tag}");
540 suggestAlternative: tr("{0} + {1} + {2}", "piste:type=*", "piste:difficulty=*", "piste:grooming=*");
541 group: tr("deprecated tagging");
542}
543
544/* #11223 */
545*[waterway=wadi] {
546 throwWarning: tr("{0} is deprecated", "{0.tag}");
547 suggestAlternative: "{0.key}=* + intermittent=yes";
548 suggestAlternative: "natural=valley";
549 group: tr("deprecated tagging");
550}
551
552/* #10346 */
553way[oneway=1] {
554 throwWarning: tr("{0} is deprecated", "{0.tag}");
555 suggestAlternative: "oneway=yes";
556 group: tr("deprecated tagging");
557 fixAdd: "oneway=yes";
558}
559
560/* #11329 */
561way[oneway=-1] {
562 throwWarning: tr("{0} is not recommended. Use the Reverse Ways function from the Tools menu.", "{0.tag}");
563}
564
565*[drinkable] {
566 throwWarning: tr("{0} is deprecated", "{0.key}");
567 suggestAlternative: "drinking_water";
568 group: tr("deprecated tagging");
569}
570
571/* #10329, #15877 */
572 /* simple key change */
573*[color][!colour] {
574 throwWarning: tr("{0} is deprecated", "{0.key}");
575 suggestAlternative: "colour";
576 group: tr("deprecated tagging");
577 fixChangeKey: "color => colour";
578 assertMatch: "way color=red";
579 assertNoMatch: "way color=red colour=red";
580}
581area[building:color][!building:colour] {
582 throwWarning: tr("{0} is deprecated", "{0.key}");
583 suggestAlternative: "building:colour";
584 group: tr("deprecated tagging");
585 fixChangeKey: "building:color => building:colour";
586 assertMatch: "way building:color=red";
587 assertNoMatch: "way building:color=red building:colour=red";
588}
589area[roof:color][!roof:colour] {
590 throwWarning: tr("{0} is deprecated", "{0.key}");
591 suggestAlternative: "roof:colour";
592 group: tr("deprecated tagging");
593 fixChangeKey: "roof:color => roof:colour";
594 assertMatch: "way roof:color=red";
595 assertNoMatch: "way roof:color=red roof:colour=red";
596}
597 /* both tags with same value, remove color */
598*[color][colour][color=*colour] {
599 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
600 suggestAlternative: "colour";
601 group: tr("deprecated tagging");
602 set samecolor;
603 fixRemove: "color";
604 assertMatch: "way color=red colour=red";
605 assertNoMatch: "way color=red colour=green";
606}
607area[building:color][building:colour]["building:color"=*"building:colour"] {
608 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
609 suggestAlternative: "building:colour";
610 group: tr("deprecated tagging");
611 set samebuildingcolor;
612 fixRemove: "building:color";
613 assertMatch: "way building:color=red building:colour=red";
614 assertNoMatch: "way building:color=red building:colour=green";
615}
616area[roof:color][roof:colour]["roof:color"=*"roof:colour"] {
617 throwWarning: tr("{0} together with {1}", "{0.key}", "{1.key}");
618 suggestAlternative: "roof:colour";
619 group: tr("deprecated tagging");
620 set sameroofcolor;
621 fixRemove: "roof:color";
622 assertMatch: "way roof:color=red roof:colour=red";
623 assertNoMatch: "way roof:color=red roof:colour=green";
624}
625 /* both tags with different values, no autofix */
626*[color][colour]!.samecolor {
627 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
628 suggestAlternative: "colour";
629 group: tr("deprecated tagging");
630 assertNoMatch: "way color=red colour=red";
631 assertMatch: "way color=red colour=green";
632}
633*[building:color][building:colour]!.samebuildingcolor {
634 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
635 suggestAlternative: "building:colour";
636 group: tr("deprecated tagging");
637 assertNoMatch: "way building:color=red building:colour=red";
638 assertMatch: "way building:color=red building:colour=green";
639}
640*[roof:color][roof:colour]!.sameroofcolor {
641 throwWarning: tr("{0} together with {1} and conflicting values", "{0.key}", "{1.key}");
642 suggestAlternative: "roof:colour";
643 group: tr("deprecated tagging");
644 assertNoMatch: "way roof:color=red roof:colour=red";
645 assertMatch: "way roof:color=red roof:colour=green";
646}
647/* further more universal checks, no autofix */
648/* gpxd:color has another warning in unnecessary.mapcss */
649*[/:color/][!building:color][!roof:color][!gpxd:color] {
650 throwWarning: tr("{0} is deprecated", "{0.key}");
651 suggestAlternative: ":colour";
652 group: tr("deprecated tagging");
653 assertNoMatch: "way color=red";
654 assertNoMatch: "way roof:color=grey";
655 assertMatch: "way cycleway:surface:color=grey";
656}
657*[/color:/] {
658 throwWarning: tr("{0} is deprecated", "{0.key}");
659 suggestAlternative: "colour:";
660 group: tr("deprecated tagging");
661 assertNoMatch: "way color=red";
662 assertMatch: "way color:back=grey";
663}
664
665/* #11234 */
666*[/=|\+|\/|&|<|>|;|'|"|%|#|@|\\|,|\.|\{|\}|\?|\*|\^|\$/] {
667 throwWarning: tr("{0}", "{0.key}");
668 group: tr("key with uncommon character");
669}
670
671/* #11330, #18642 */
672*[/^.$/],
673node[/^..$/][!kp][!pk],
674way[/^..$/][route=ferry][!to],
675way[/^..$/][route!=ferry],
676relation[/^..$/][!to] {
677 throwWarning: tr("uncommon short key");
678 assertNoMatch: "relation to=Berlin";
679 assertMatch: "relation fo=bar";
680 assertMatch: "way to=bar";
681 assertNoMatch: "way to=Zuidschermer;Akersloot route=ferry";
682 assertMatch: "node fo=bar";
683 assertMatch: "node f=b";
684 assertNoMatch: "node kp=5"; /* already has a deprecated warning */
685 assertNoMatch: "node pk=7"; /* already has a deprecated warning */
686}
687
688/* #11439 */
689*[sport=hockey] {
690 throwWarning: tr("{0} is deprecated", "{0.tag}");
691 suggestAlternative: "sport=field_hockey";
692 suggestAlternative: "sport=ice_hockey";
693 group: tr("deprecated tagging");
694}
695
696/* #11471 */
697*[sport=billard],
698*[sport=billards],
699*[sport=billiard] {
700 throwWarning: tr("{0} is deprecated", "{0.tag}");
701 suggestAlternative: "sport=billiards";
702 group: tr("deprecated tagging");
703 fixAdd: "sport=billiards";
704}
705
706/* #11499, #16928 */
707*[payment:credit_cards=yes] {
708 throwOther: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:mastercard=yes", "payment:visa=yes");
709}
710*[payment:debit_cards=yes] {
711 throwWarning: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:maestro=yes", "payment:girocard=yes");
712}
713*[payment:electronic_purses=yes] {
714 throwWarning: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:ep_geldkarte=yes", "payment:ep_quick=yes");
715}
716*[payment:cryptocurrencies=yes] {
717 throwWarning: tr("{0} is inaccurate. Use separate tags for each specific type, e.g. {1} or {2}.", "{0.tag}", "payment:bitcoin=yes", "payment:litecoin=yes");
718}
719
720/* #16253 */
721*[payment:ep_quick],
722*[payment:ep_cash],
723*[payment:ep_proton],
724*[payment:ep_chipknip] {
725 throwWarning: tr("{0} is deprecated", "{0.key}");
726 group: tr("deprecated tagging");
727 fixRemove: "{0.key}";
728}
729
730/* #8717, #20326 */
731*[kp][railway!=milestone] {
732 throwWarning: tr("{0} is deprecated", "{0.key}");
733 suggestAlternative: "distance";
734 group: tr("deprecated tagging");
735 fixChangeKey: "kp => distance";
736}
737*[pk][railway!=milestone] {
738 throwWarning: tr("{0} is deprecated", "{0.key}");
739 suggestAlternative: "distance";
740 group: tr("deprecated tagging");
741 fixChangeKey: "pk => distance";
742}
743*[kp][railway=milestone] {
744 throwWarning: tr("{0} is deprecated", "{0.key}");
745 suggestAlternative: "railway:position";
746 group: tr("deprecated tagging");
747 fixChangeKey: "kp => railway:position";
748}
749*[pk][railway=milestone] {
750 throwWarning: tr("{0} is deprecated", "{0.key}");
751 suggestAlternative: "railway:position";
752 group: tr("deprecated tagging");
753 fixChangeKey: "pk => railway:position";
754}
755*[distance][railway=milestone] {
756 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
757 suggestAlternative: "railway:position";
758 group: tr("deprecated tagging");
759 fixChangeKey: "distance => railway:position";
760}
761
762*[postcode] {
763 throwWarning: tr("{0} is deprecated", "{0.key}");
764 suggestAlternative: "addr:postcode";
765 group: tr("deprecated tagging");
766 suggestAlternative: "postal_code";
767}
768
769*[water=intermittent] {
770 throwWarning: tr("{0} is deprecated", "{0.tag}");
771 suggestAlternative: "intermittent=yes";
772 group: tr("deprecated tagging");
773 fixRemove: "water";
774 fixAdd: "intermittent=yes";
775}
776
777/* #10907, #14141 */
778/* type=waterway on ways is questionable, but the autofix doesn't make it better, so disabled; type=route and type=network is used only on relations */
779way[type][type!=waterway][man_made=pipeline],
780node[type][pipeline=marker] {
781 throwWarning: tr("{0} is deprecated", "{0.key}");
782 suggestAlternative: "substance";
783 group: tr("deprecated tagging");
784 fixChangeKey: "type => substance";
785}
786
787*[landuse=farm] {
788 throwWarning: tr("{0} is deprecated", "{0.tag}");
789 suggestAlternative: "landuse=farmland";
790 suggestAlternative: "landuse=farmyard";
791 group: tr("deprecated tagging");
792}
793
794/* #12135 comment:11 */
795*[seamark=buoy]["seamark:type"=~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
796 throwWarning: tr("{0} is deprecated", "{0.tag}");
797 suggestAlternative: "{1.tag}";
798 group: tr("deprecated tagging");
799 fixRemove: "seamark";
800}
801*[seamark=buoy]["seamark:type"!~/^(buoy_cardinal|buoy_installation|buoy_isolated_danger|buoy_lateral|buoy_safe_water|buoy_special_purpose|mooring)$/] {
802 throwWarning: tr("{0} is deprecated", "{0.tag}");
803 suggestAlternative: "{1.tag}";
804 group: tr("deprecated tagging");
805}
806/* #12135 */
807*[landuse=conservation] {
808 throwWarning: tr("{0} is deprecated", "{0.tag}");
809 suggestAlternative: "boundary=protected_area";
810 group: tr("deprecated tagging");
811 fixAdd: "boundary=protected_area";
812 fixRemove: "landuse";
813}
814
815/* #12205 */
816*[amenity=kiosk] {
817 throwWarning: tr("{0} is deprecated", "{0.tag}");
818 suggestAlternative: "shop=kiosk";
819 group: tr("deprecated tagging");
820 fixChangeKey: "amenity => shop";
821}
822*[amenity=shop] {
823 throwWarning: tr("{0} is deprecated", "{0.tag}");
824 suggestAlternative: "shop=*";
825 group: tr("deprecated tagging");
826}
827*[shop=fishmonger] {
828 throwWarning: tr("{0} is deprecated", "{0.tag}");
829 suggestAlternative: "shop=seafood";
830 group: tr("deprecated tagging");
831 fixAdd: "shop=seafood";
832}
833*[shop=fish] {
834 throwWarning: tr("{0} is deprecated", "{0.tag}");
835 suggestAlternative: "shop=seafood";
836 suggestAlternative: "shop=pet";
837 suggestAlternative: "shop=fishing";
838 group: tr("deprecated tagging");
839}
840*[shop=betting] {
841 throwWarning: tr("{0} is deprecated", "{0.tag}");
842 suggestAlternative: "shop=bookmaker";
843 suggestAlternative: "shop=lottery";
844 suggestAlternative: "amenity=casino";
845 suggestAlternative: "leisure=amusement_arcade";
846 suggestAlternative: "leisure=adult_gaming_centre";
847 suggestAlternative: "amenity=gambling";
848 group: tr("deprecated tagging");
849}
850*[shop=perfume] {
851 throwWarning: tr("{0} is deprecated", "{0.tag}");
852 suggestAlternative: "shop=perfumery";
853 group: tr("deprecated tagging");
854 fixAdd: "shop=perfumery";
855}
856*[amenity=exercise_point] {
857 throwWarning: tr("{0} is deprecated", "{0.tag}");
858 suggestAlternative: "leisure=fitness_station";
859 group: tr("deprecated tagging");
860 fixAdd: "leisure=fitness_station";
861 fixRemove: "amenity";
862}
863*[shop=auto_parts] {
864 throwWarning: tr("{0} is deprecated", "{0.tag}");
865 suggestAlternative: "shop=car_parts";
866 group: tr("deprecated tagging");
867 fixAdd: "shop=car_parts";
868}
869*[amenity=car_repair] {
870 throwWarning: tr("{0} is deprecated", "{0.tag}");
871 suggestAlternative: "shop=car_repair";
872 group: tr("deprecated tagging");
873 fixChangeKey: "amenity => shop";
874}
875
876/* #12311 */
877*[amenity=studio][type=audio],
878*[amenity=studio][type=radio],
879*[amenity=studio][type=television],
880*[amenity=studio][type=video] {
881 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
882 suggestAlternative: "studio";
883 group: tr("deprecated tagging");
884 fixChangeKey: "type => studio";
885}
886
887/* #11507, #12297, #15409 */
888*[power=cable_distribution_cabinet] {
889 throwWarning: tr("{0} is deprecated", "{0.tag}");
890 suggestAlternative: "man_made=street_cabinet + street_cabinet=*";
891 group: tr("deprecated tagging");
892 fixAdd: "man_made=street_cabinet";
893 fixRemove: "power";
894}
895
896/* #16430 */
897*[power][location=kiosk] {
898 throwWarning: tr("{0} is deprecated", "{1.tag}");
899 group: tr("deprecated tagging");
900 fixAdd: "man_made=street_cabinet";
901 fixAdd: "street_cabinet=power";
902 fixRemove: "location";
903}
904
905/* #12276 */
906*[man_made=well] {
907 throwWarning: tr("{0} is deprecated", "{0.tag}");
908 suggestAlternative: "man_made=water_well";
909 suggestAlternative: "man_made=petroleum_well";
910 group: tr("deprecated tagging");
911}
912*[amenity=dog_bin],
913*[amenity=dog_waste_bin] {
914 throwWarning: tr("{0} is deprecated", "{0.tag}");
915 suggestAlternative: "amenity=waste_basket + waste=dog_excrement + vending=excrement_bags";
916 group: tr("deprecated tagging");
917 fixAdd: "amenity=waste_basket";
918 fixAdd: "waste=dog_excrement";
919 fixAdd: "vending=excrement_bags";
920}
921*[amenity=artwork] {
922 throwWarning: tr("{0} is deprecated", "{0.tag}");
923 suggestAlternative: "tourism=artwork";
924 group: tr("deprecated tagging");
925 fixAdd: "tourism=artwork";
926 fixRemove: "amenity";
927}
928*[amenity=community_center] {
929 throwWarning: tr("{0} is deprecated", "{0.tag}");
930 suggestAlternative: "amenity=community_centre";
931 group: tr("deprecated tagging");
932 fixAdd: "amenity=community_centre";
933}
934*[man_made=cut_line] {
935 throwWarning: tr("{0} is deprecated", "{0.tag}");
936 suggestAlternative: "man_made=cutline";
937 group: tr("deprecated tagging");
938 fixAdd: "man_made=cutline";
939}
940*[amenity=park] {
941 throwWarning: tr("{0} is deprecated", "{0.tag}");
942 suggestAlternative: "leisure=park";
943 group: tr("deprecated tagging");
944 fixAdd: "leisure=park";
945 fixRemove: "amenity";
946}
947*[amenity=hotel] {
948 throwWarning: tr("{0} is deprecated", "{0.tag}");
949 suggestAlternative: "tourism=hotel";
950 group: tr("deprecated tagging");
951 fixAdd: "tourism=hotel";
952 fixRemove: "amenity";
953}
954*[shop=window],
955*[shop=windows] {
956 throwWarning: tr("{0} is deprecated", "{0.tag}");
957 suggestAlternative: "craft=window_construction";
958 group: tr("deprecated tagging");
959 fixAdd: "craft=window_construction";
960 fixRemove: "shop";
961}
962*[amenity=education] {
963 throwWarning: tr("{0} is deprecated", "{0.tag}");
964 suggestAlternative: "amenity=college";
965 suggestAlternative: "amenity=school";
966 suggestAlternative: "amenity=university";
967 group: tr("deprecated tagging");
968}
969*[shop=gallery] {
970 throwWarning: tr("{0} is deprecated", "{0.tag}");
971 suggestAlternative: "shop=art";
972 group: tr("deprecated tagging");
973 fixAdd: "shop=art";
974}
975*[shop=gambling],
976*[leisure=gambling] {
977 throwWarning: tr("{0} is deprecated", "{0.tag}");
978 suggestAlternative: "shop=bookmaker";
979 suggestAlternative: "shop=lottery";
980 suggestAlternative: "amenity=casino";
981 suggestAlternative: "leisure=amusement_arcade";
982 suggestAlternative: "amenity=gambling";
983 group: tr("deprecated tagging");
984}
985*[office=real_estate],
986*[office=real_estate_agent] {
987 throwWarning: tr("{0} is deprecated", "{0.tag}");
988 suggestAlternative: "office=estate_agent";
989 group: tr("deprecated tagging");
990 fixAdd: "office=estate_agent";
991}
992*[shop=glass] {
993 throwWarning: tr("{0} is deprecated", "{0.tag}");
994 suggestAlternative: "shop=glaziery";
995 suggestAlternative: "craft=glaziery";
996 group: tr("deprecated tagging");
997}
998*[amenity=proposed],
999*[amenity=disused],
1000*[shop=disused],
1001*[highway=abandoned],
1002*[historic=abandoned] {
1003 throwWarning: tr("{0} is deprecated. Use the {1}: key prefix instead.", "{0.tag}", "{0.value}");
1004 group: tr("deprecated tagging");
1005}
1006
1007/* #12431 */
1008*[amenity=swimming_pool] {
1009 throwWarning: tr("{0} is deprecated", "{0.tag}");
1010 suggestAlternative: "leisure=swimming_pool";
1011 group: tr("deprecated tagging");
1012 fixChangeKey: "amenity => leisure";
1013}
1014
1015/* #17379 */
1016*[amenity=sauna] {
1017 throwWarning: tr("{0} is deprecated", "{0.tag}");
1018 suggestAlternative: "leisure=sauna";
1019 group: tr("deprecated tagging");
1020 fixChangeKey: "amenity => leisure";
1021}
1022
1023/* #12494, #17554 */
1024*[/^[^t][^i][^g].+_[0-9]$/][!/^note_[0-9]$/][!/^description_[0-9]$/] {
1025 throwWarning: tr("{0}", "{0.key}");
1026 group: tr("questionable key (ending with a number)");
1027 assertMatch: "way name_1=foo";
1028 assertNoMatch: "way note_2=foo";
1029 assertNoMatch: "way description_3=foo";
1030 assertNoMatch: "way tiger:name_base_1=bar"; /*should not warn for key tiger:name_base_1 */
1031}
1032
1033/* #12500 */
1034*[sport=skating] {
1035 throwWarning: tr("{0} is deprecated", "{0.tag}");
1036 suggestAlternative: "sport=ice_skating";
1037 suggestAlternative: "sport=roller_skating";
1038 group: tr("deprecated tagging");
1039}
1040
1041way[barrier=wall][type=noise_barrier][!wall],
1042way[barrier=wall][type=noise_barrier][wall=noise_barrier] {
1043 throwWarning: tr("{0} is deprecated", "{1.tag}");
1044 suggestAlternative: "wall=noise_barrier";
1045 group: tr("deprecated tagging");
1046 fixChangeKey: "type => wall";
1047}
1048way[barrier=wall][type=noise_barrier][wall][wall!=noise_barrier] {
1049 throwWarning: tr("{0} is deprecated", "{1.tag}");
1050 suggestAlternative: "wall=noise_barrier";
1051 group: tr("deprecated tagging");
1052}
1053
1054/* #8978, 12588 */
1055*[amenity=public_building] {
1056 throwWarning: tr("{0} is deprecated", "{0.tag}");
1057 suggestAlternative: "amenity=townhall";
1058 suggestAlternative: "amenity=community_centre";
1059 suggestAlternative: "amenity=hospital";
1060 suggestAlternative: "leisure=sports_centre";
1061 suggestAlternative: "office=government";
1062 suggestAlternative: "building=hospital";
1063 suggestAlternative: "building=public";
1064 suggestAlternative: "...";
1065 group: tr("deprecated tagging");
1066}
1067
1068/* #18517 */
1069*[office=administrative] {
1070 throwWarning: tr("{0} is deprecated", "{0.tag}");
1071 suggestAlternative: "office=government";
1072 group: tr("deprecated tagging");
1073 fixAdd: "office=government";
1074}
1075
1076/* #12708 */
1077*[vending=news_papers] {
1078 throwWarning: tr("{0} is deprecated", "{0.tag}");
1079 suggestAlternative: "vending=newspapers";
1080 group: tr("deprecated tagging");
1081 fixAdd: "vending=newspapers";
1082}
1083
1084/* #12771 */
1085*[service=drive_through] {
1086 throwWarning: tr("{0} is deprecated", "{0.tag}");
1087 suggestAlternative: "service=drive-through";
1088 group: tr("deprecated tagging");
1089 fixAdd: "service=drive-through";
1090}
1091
1092/* #12771, #9895 */
1093*[noexit][noexit!=yes][noexit!=no], /* noexit=no has an own warning */
1094way[highway=service][service][service !~ /^(alley|drive-through|drive_through|driveway|emergency_access|parking_aisle|rest_area|slipway|yes)$/], /* drive_through and yes have special warnings */
1095way[railway=rail][service][service !~ /^(crossover|siding|spur|yard)$/],
1096way[waterway=canal][service][service !~ /^(irrigation|transportation|water_power)$/] {
1097 throwWarning: tr("The key {0} has an uncommon value.", "{1.key}");
1098}
1099
1100/* #13008 */
1101*[name:botanical] {
1102 throwWarning: tr("{0} is deprecated", "{0.key}");
1103 suggestAlternative: "species";
1104 group: tr("deprecated tagging");
1105}
1106
1107/* #11344, #13101, #15480 */
1108node[pole=air_to_ground],
1109node[pole=transition] {
1110 throwWarning: tr("{0} is deprecated", "{0.tag}");
1111 suggestAlternative: "location:transition=yes";
1112 group: tr("deprecated tagging");
1113 fixAdd: "location:transition=yes";
1114 fixRemove: "pole";
1115}
1116node[tower=air_to_ground],
1117node[tower=transition] {
1118 throwWarning: tr("{0} is deprecated", "{0.tag}");
1119 suggestAlternative: "location:transition=yes";
1120 group: tr("deprecated tagging");
1121 fixAdd: "location:transition=yes";
1122 fixRemove: "tower";
1123}
1124
1125/* #13138 */
1126area[landuse=pond] {
1127 throwWarning: tr("{0} is deprecated", "{0.tag}");
1128 suggestAlternative: "natural=water + water=pond";
1129 group: tr("deprecated tagging");
1130 fixAdd: "natural=water";
1131 fixAdd: "water=pond";
1132 fixRemove: "landuse";
1133}
1134
1135*[shop=souvenir],
1136*[shop=souvenirs],
1137*[shop=souveniers] {
1138 throwWarning: tr("{0} is deprecated", "{0.tag}");
1139 suggestAlternative: "shop=gift";
1140 group: tr("deprecated tagging");
1141 fixAdd: "shop=gift";
1142}
1143
1144*[vending=animal_food] {
1145 throwWarning: tr("{0} is deprecated", "{0.tag}");
1146 suggestAlternative: "vending=animal_feed";
1147 group: tr("deprecated tagging");
1148 fixAdd: "vending=animal_feed";
1149}
1150
1151/* #14376 */
1152node[vending=photos][amenity=vending_machine],
1153node[vending=photo][amenity=vending_machine] {
1154 throwWarning: tr("{0} is deprecated", "{0.tag}");
1155 suggestAlternative: "amenity=photo_booth";
1156 group: tr("deprecated tagging");
1157 fixRemove: "vending";
1158 fixAdd: "amenity=photo_booth";
1159
1160}
1161node[vending=photos][amenity!=vending_machine] {
1162 throwWarning: tr("{0} is deprecated", "{0.tag}");
1163 suggestAlternative: "amenity=photo_booth";
1164 group: tr("deprecated tagging");
1165}
1166
1167/* #13653 */
1168node[highway=emergency_access_point][phone][!emergency_telephone_code],
1169way[highway=emergency_access_point][phone][!emergency_telephone_code] {
1170 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1171 suggestAlternative: "emergency_telephone_code";
1172 group: tr("deprecated tagging");
1173 fixChangeKey: "phone => emergency_telephone_code";
1174 assertMatch: "node highway=emergency_access_point phone=123";
1175 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=456";
1176 assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=456";
1177 assertNoMatch: "node phone=123";
1178}
1179node[highway=emergency_access_point][phone=*emergency_telephone_code],
1180way[highway=emergency_access_point][phone=*emergency_telephone_code] {
1181 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1182 suggestAlternative: "emergency_telephone_code";
1183 group: tr("deprecated tagging");
1184 fixRemove: "phone";
1185 assertNoMatch: "node highway=emergency_access_point phone=123";
1186 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1187 assertMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1188}
1189node[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code],
1190way[highway=emergency_access_point][phone][emergency_telephone_code][phone!=*emergency_telephone_code] {
1191 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1192 suggestAlternative: "emergency_telephone_code";
1193 group: tr("deprecated tagging");
1194 assertNoMatch: "node highway=emergency_access_point phone=123";
1195 assertNoMatch: "node highway=emergency_access_point emergency_telephone_code=123";
1196 assertNoMatch: "node highway=emergency_access_point phone=123 emergency_telephone_code=123";
1197}
1198
1199/* #13879 */
1200way[tracktype=1] {
1201 throwError: tr("{0}", "{0.tag}");
1202 suggestAlternative: "tracktype=grade1";
1203 group: tr("misspelled value");
1204 fixAdd: "tracktype=grade1";
1205}
1206way[tracktype=2] {
1207 throwError: tr("{0}", "{0.tag}");
1208 suggestAlternative: "tracktype=grade2";
1209 group: tr("misspelled value");
1210 fixAdd: "tracktype=grade2";
1211}
1212way[tracktype=3] {
1213 throwError: tr("{0}", "{0.tag}");
1214 suggestAlternative: "tracktype=grade3";
1215 group: tr("misspelled value");
1216 fixAdd: "tracktype=grade3";
1217}
1218way[tracktype=4] {
1219 throwError: tr("{0}", "{0.tag}");
1220 suggestAlternative: "tracktype=grade4";
1221 group: tr("misspelled value");
1222 fixAdd: "tracktype=grade4";
1223}
1224way[tracktype=5] {
1225 throwError: tr("{0}", "{0.tag}");
1226 suggestAlternative: "tracktype=grade5";
1227 group: tr("misspelled value");
1228 fixAdd: "tracktype=grade5";
1229}
1230way[tracktype][tracktype!~/^(1|2|3|4|5|grade1|grade2|grade3|grade4|grade5)$/] {
1231 throwError: tr("wrong value: {0}", "{0.tag}");
1232 suggestAlternative: "tracktype=grade1";
1233 suggestAlternative: "tracktype=grade2";
1234 suggestAlternative: "tracktype=grade3";
1235 suggestAlternative: "tracktype=grade4";
1236 suggestAlternative: "tracktype=grade5";
1237}
1238
1239area[area][area!=yes][area!=no] {
1240 throwError: tr("wrong value: {0}", "{0.tag}");
1241 suggestAlternative: "area=yes";
1242 suggestAlternative: "area=no";
1243}
1244
1245/* #13953 */
1246*[amenity=hunting_stand][lock=yes],
1247*[amenity=hunting_stand][lock=no] {
1248 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
1249 suggestAlternative: "lockable";
1250 group: tr("deprecated tagging");
1251 fixChangeKey: "lock => lockable";
1252}
1253
1254*[amenity=advertising][!advertising] {
1255 throwWarning: tr("{0} is deprecated", "{0.tag}");
1256 suggestAlternative: "advertising=*";
1257 group: tr("deprecated tagging");
1258}
1259*[amenity=advertising][advertising] {
1260 throwWarning: tr("{0} is deprecated", "{0.tag}");
1261 suggestAlternative: "advertising=*";
1262 group: tr("deprecated tagging");
1263 fixRemove: "amenity";
1264}
1265
1266way[direction=up][incline=up],
1267way[direction=down][incline=down],
1268way[direction=up][!incline],
1269way[direction=down][!incline] {
1270 throwWarning: tr("{0} is deprecated", "{0.tag}");
1271 suggestAlternative: "incline";
1272 group: tr("deprecated tagging");
1273 fixChangeKey: "direction => incline";
1274}
1275way[direction=up][incline][incline!=up],
1276way[direction=down][incline][incline!=down] {
1277 throwWarning: tr("{0} is deprecated", "{0.tag}");
1278 suggestAlternative: "incline";
1279 group: tr("deprecated tagging");
1280}
1281
1282*[building=true],
1283*[building="*"],
1284*[building=Y],
1285*[building=y],
1286*[building=1] {
1287 throwError: tr("{0}", "{0.tag}");
1288 suggestAlternative: "building=yes";
1289 group: tr("misspelled value");
1290 fixAdd: "building=yes";
1291}
1292
1293/* #17786, #18612 */
1294*[building=abandoned],
1295*[building=address],
1296*[building=bing],
1297*[building=collapsed],
1298*[building=damaged],
1299*[building=demolished],
1300*[building=disused],
1301*[building=fixme],
1302*[building=occupied],
1303*[building=razed] {
1304 throwWarning: tr("{0} is not a building type.", "{0.tag}");
1305 group: tr("deprecated tagging");
1306}
1307*[building=other],
1308*[building=unclassified],
1309*[building=undefined],
1310*[building=unknown],
1311*[building=unidentified] {
1312 throwWarning: tr("{0} is not a building type.", "{0.tag}");
1313 group: tr("deprecated tagging");
1314 fixAdd: "building=yes";
1315}
1316
1317/* #15675 */
1318node[power=transformer][location=pole][transformer] {
1319 throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1320 group: tr("deprecated tagging");
1321 fixChangeKey: "location => power";
1322}
1323node[power=transformer][location=pole][!transformer] {
1324 throwWarning: tr("{0} together with {1}", "{0.tag}", "{1.tag}");
1325 group: tr("deprecated tagging");
1326 fixChangeKey: "location => power";
1327 fixAdd: "transformer=yes";
1328}
1329
1330node[tourism=picnic_table],
1331node[amenity=picnic_table],
1332node[leisure=picnic],
1333node[leisure=picnic_site] {
1334 throwWarning: tr("{0} is deprecated", "{0.tag}");
1335 suggestAlternative: "tourism=picnic_site";
1336 suggestAlternative: "leisure=picnic_table";
1337 group: tr("deprecated tagging");
1338}
1339
1340/* #15804 */
1341relation[water=salt],
1342way[water=salt],
1343way[water=salt_pool],
1344way[water=salt_panne],
1345way[water=salt_pond] {
1346 throwWarning: tr("{0} is deprecated", "{0.tag}");
1347 suggestAlternative: "salt=yes";
1348 suggestAlternative: "landuse=salt_pond";
1349 group: tr("deprecated tagging");
1350}
1351
1352/* #15805 */
1353way[water=tidal] {
1354 throwWarning: tr("{0} is deprecated", "{0.tag}");
1355 suggestAlternative: "tidal=yes";
1356 fixAdd: "tidal=yes";
1357 fixRemove: "water";
1358 group: tr("deprecated tagging");
1359}
1360
1361*[amenity=toilet] {
1362 throwError: tr("{0}", "{0.tag}");
1363 suggestAlternative: "amenity=toilets";
1364 group: tr("misspelled value");
1365 fixAdd: "amenity=toilets";
1366}
1367
1368way[power=busbar] {
1369 throwWarning: tr("{0} is deprecated", "{0.tag}");
1370 suggestAlternative: "power=line + line=busbar";
1371 group: tr("deprecated tagging");
1372 fixAdd: "power=line";
1373 fixAdd: "line=busbar";
1374}
1375
1376/* #16924 */
1377*[man_made=MDF],
1378*[man_made=telephone_exchange] {
1379 throwWarning: tr("{0} is deprecated", "{0.tag}");
1380 suggestAlternative: "telecom=exchange";
1381 fixAdd: "telecom=exchange";
1382 fixRemove: "man_made";
1383 group: tr("deprecated tagging");
1384}
1385*[building=central_office] {
1386 throwWarning: tr("{0} is deprecated", "{0.tag}");
1387 suggestAlternative: "telecom=exchange";
1388 fixAdd: "telecom=exchange";
1389 fixAdd: "building=yes";
1390 group: tr("deprecated tagging");
1391}
1392*[telecom=central_office] {
1393 throwWarning: tr("{0} is deprecated", "{0.tag}");
1394 suggestAlternative: "telecom=exchange";
1395 fixAdd: "telecom=exchange";
1396 group: tr("deprecated tagging");
1397}
1398
1399/* #16925 */
1400node[communication=outdoor_dslam],
1401node[man_made=outdoor_dslam],
1402node[street_cabinet=outdoor_dslam] {
1403 throwWarning: tr("{0} is deprecated", "{0.tag}");
1404 suggestAlternative: "telecom=service_device";
1405 fixAdd: "telecom=service_device";
1406 fixRemove: "{0.key}";
1407 group: tr("deprecated tagging");
1408}
1409node[telecom=dslam],
1410node[telecom=outdoor_dslam] {
1411 throwWarning: tr("{0} is deprecated", "{0.tag}");
1412 suggestAlternative: "telecom=service_device";
1413 fixAdd: "telecom=service_device";
1414 group: tr("deprecated tagging");
1415}
1416
1417/* #15774 */
1418node[amenity=fire_hydrant] {
1419 throwWarning: tr("{0} is deprecated", "{0.tag}");
1420 suggestAlternative: "emergency=fire_hydrant";
1421 fixChangeKey: "amenity => emergency";
1422 group: tr("deprecated tagging");
1423}
1424node[fire_hydrant:type=pond] {
1425 throwWarning: tr("{0} is deprecated", "{0.tag}");
1426 suggestAlternative: "water_source=pond";
1427 fixAdd: "water_source=pond";
1428 fixRemove: "{0.key}";
1429 group: tr("deprecated tagging");
1430}
1431node[fire_hydrant:flow_capacity] {
1432 throwWarning: tr("{0} is deprecated", "{0.key}");
1433 suggestAlternative: "flow_rate";
1434 group: tr("deprecated tagging");
1435}
1436node[emergency=fire_hydrant][in_service=no] {
1437 throwWarning: tr("{0} is deprecated", "{1.tag}");
1438 suggestAlternative: "disused:emergency=fire_hydrant";
1439 fixAdd: "disused:emergency=fire_hydrant";
1440 fixRemove: "{1.key}";
1441 fixRemove: "{0.key}";
1442 group: tr("deprecated tagging");
1443}
1444node[fire_hydrant:water_source] {
1445 throwWarning: tr("{0} is deprecated", "{0.key}");
1446 suggestAlternative: "water_source";
1447 fixChangeKey: "fire_hydrant:water_source => water_source";
1448 group: tr("deprecated tagging");
1449}
1450
1451/* #17383 */
1452*[natural=waterfall] {
1453 throwWarning: tr("{0} is deprecated", "{0.tag}");
1454 suggestAlternative: "waterway=waterfall";
1455 fixChangeKey: "natural => waterway";
1456 group: tr("deprecated tagging");
1457}
1458
1459/* #17249 */
1460*[religion=unitarian] {
1461 throwWarning: tr("{0} is deprecated", "{0.tag}");
1462 suggestAlternative: "religion=unitarian_universalist";
1463 fixAdd: "religion=unitarian_universalist";
1464 group: tr("deprecated tagging");
1465}
1466
1467*[shop=shopping_centre] {
1468 throwWarning: tr("{0} is deprecated", "{0.tag}");
1469 suggestAlternative: "shop=mall";
1470 fixAdd: "shop=mall";
1471 group: tr("deprecated tagging");
1472}
1473
1474/* #17504 */
1475*[is_in],
1476node[/^is_in:$/],
1477way[/^is_in:$/] {
1478 throwWarning: tr("{0} is deprecated", "{0.key}");
1479 group: tr("deprecated tagging");
1480 fixRemove: "{0.key}";
1481}
1482
1483/* #17593 */
1484*[sport=football] {
1485 throwWarning: tr("{0} is deprecated", "{0.tag}");
1486 suggestAlternative: "sport=soccer";
1487 suggestAlternative: "sport=american_football";
1488 suggestAlternative: "sport=australian_football";
1489 suggestAlternative: "sport=canadian_football";
1490 suggestAlternative: "sport=rugby_league";
1491 suggestAlternative: "sport=rugby_union";
1492 suggestAlternative: "sport=gaelic_games";
1493 group: tr("deprecated tagging");
1494}
1495
1496/* #17556 */
1497*[leisure=common] {
1498 throwWarning: tr("{0} is deprecated", "{0.tag}");
1499 suggestAlternative: "landuse=*";
1500 suggestAlternative: "leisure=*";
1501 suggestAlternative: "designation=common";
1502 group: tr("deprecated tagging");
1503}
1504
1505/* #17043 */
1506*[cuisine=vegan],
1507*[cuisine=vegetarian] {
1508 throwWarning: tr("{0} is deprecated", "{0.tag}");
1509 suggestAlternative: concat("diet:", "{0.value}", "=yes");
1510 suggestAlternative: concat("diet:", "{0.value}", "=only");
1511 group: tr("deprecated tagging");
1512}
1513
1514/* #17798 */
1515*[kitchen_hours] {
1516 throwWarning: tr("{0} is deprecated", "{0.key}");
1517 suggestAlternative: "opening_hours:kitchen";
1518 fixChangeKey: "kitchen_hours => opening_hours:kitchen";
1519 group: tr("deprecated tagging");
1520}
1521
1522/* #17681 */
1523*[shop=money_transfer] {
1524 throwWarning: tr("{0} is deprecated", "{0.tag}");
1525 suggestAlternative: "amenity=money_transfer";
1526 fixChangeKey: "shop => amenity";
1527 group: tr("deprecated tagging");
1528}
1529
1530*[contact:google_plus] {
1531 throwWarning: tr("{0} is deprecated", "{0.key}");
1532 fixRemove: "contact:google_plus";
1533 group: tr("deprecated tagging");
1534}
1535
1536/* #17370 */
1537*[amenity=garages],
1538*[amenity=garage] {
1539 throwWarning: tr("{0} is deprecated", "{0.tag}");
1540 suggestAlternative: concat("building=", "{0.value}");
1541 suggestAlternative: "landuse=garages";
1542 suggestAlternative: "amenity=parking + parking=garage_boxes";
1543 group: tr("deprecated tagging");
1544}
1545*[shop=winery],
1546*[amenity=winery] {
1547 throwWarning: tr("{0} is deprecated", "{0.tag}");
1548 suggestAlternative: "craft=winery";
1549 suggestAlternative: "shop=wine";
1550 group: tr("deprecated tagging");
1551}
1552*[amenity=youth_centre] {
1553 throwWarning: tr("{0} is deprecated", "{0.tag}");
1554 suggestAlternative: "amenity=community_centre + community_centre=youth_centre";
1555 fixAdd: "amenity=community_centre";
1556 fixAdd: "community_centre=youth_centre";
1557 group: tr("deprecated tagging");
1558}
1559*[building:type][building=yes],
1560*[building:type][!building] {
1561 throwWarning: tr("{0} is deprecated", "{0.key}");
1562 suggestAlternative: "building";
1563 group: tr("deprecated tagging");
1564 fixChangeKey: "building:type => building";
1565 assertMatch: "way building:type=church";
1566 assertMatch: "way building:type=church building=yes";
1567 assertNoMatch: "way building:type=church building=supermarket";
1568}
1569*[building:type][building][building!=yes] {
1570 throwWarning: tr("{0} is deprecated", "{0.key}");
1571 suggestAlternative: "building";
1572 group: tr("deprecated tagging");
1573 assertNoMatch: "way building:type=church";
1574 assertNoMatch: "way building:type=church building=yes";
1575 assertMatch: "way building:type=church building=supermarket";
1576}
1577*[escalator] {
1578 throwWarning: tr("{0} is deprecated", "{0.key}");
1579 suggestAlternative: "highway=steps + conveying=*";
1580 group: tr("deprecated tagging");
1581}
1582*[fenced] {
1583 throwWarning: tr("{0} is deprecated", "{0.key}");
1584 suggestAlternative: "barrier=fence";
1585 group: tr("deprecated tagging");
1586}
1587*[historic_name][!old_name] {
1588 throwWarning: tr("{0} is deprecated", "{0.key}");
1589 suggestAlternative: "old_name";
1590 group: tr("deprecated tagging");
1591 fixChangeKey: "historic_name => old_name";
1592}
1593*[historic_name][old_name] {
1594 throwWarning: tr("{0} is deprecated", "{0.key}");
1595 suggestAlternative: "old_name";
1596 group: tr("deprecated tagging");
1597}
1598*[landuse=field] {
1599 throwWarning: tr("{0} is deprecated", "{0.tag}");
1600 suggestAlternative: "landuse=farmland";
1601 group: tr("deprecated tagging");
1602 fixAdd: "landuse=farmland";
1603}
1604*[leisure=beach] {
1605 throwWarning: tr("{0} is deprecated", "{0.tag}");
1606 suggestAlternative: "natural=beach";
1607 suggestAlternative: "leisure=beach_resort";
1608 group: tr("deprecated tagging");
1609}
1610*[leisure=club] {
1611 throwWarning: tr("{0} is deprecated", "{0.tag}");
1612 suggestAlternative: "club=*";
1613 group: tr("deprecated tagging");
1614}
1615*[leisure=video_arcade] {
1616 throwWarning: tr("{0} is deprecated", "{0.tag}");
1617 suggestAlternative: "leisure=amusement_arcade";
1618 suggestAlternative: "leisure=adult_gaming_centre";
1619 group: tr("deprecated tagging");
1620}
1621*[man_made=jetty] {
1622 throwWarning: tr("{0} is deprecated", "{0.tag}");
1623 suggestAlternative: "man_made=pier";
1624 group: tr("deprecated tagging");
1625 fixAdd: "man_made=pier";
1626}
1627*[man_made=village_pump] {
1628 throwWarning: tr("{0} is deprecated", "{0.tag}");
1629 suggestAlternative: "man_made=water_well";
1630 group: tr("deprecated tagging");
1631 fixAdd: "man_made=water_well";
1632}
1633*[man_made=water_tank] {
1634 throwWarning: tr("{0} is deprecated", "{0.tag}");
1635 suggestAlternative: "man_made=storage_tank + content=water";
1636 group: tr("deprecated tagging");
1637 fixAdd: "man_made=storage_tank";
1638 fixAdd: "content=water";
1639}
1640*[natural=moor] {
1641 throwWarning: tr("{0} is deprecated", "{0.tag}");
1642 suggestAlternative: "natural=heath";
1643 suggestAlternative: "natural=scrub";
1644 suggestAlternative: "natural=grassland";
1645 suggestAlternative: "natural=wetland";
1646 suggestAlternative: "natural=fell";
1647 suggestAlternative: "natural=tundra";
1648 suggestAlternative: "landuse=meadow + meadow=agricultural";
1649 group: tr("deprecated tagging");
1650}
1651*[noexit=no][!fixme] {
1652 throwWarning: tr("{0} is deprecated", "{0.tag}");
1653 suggestAlternative: "fixme=continue";
1654 group: tr("deprecated tagging");
1655 fixAdd: "fixme=continue";
1656 fixRemove: "noexit";
1657}
1658*[noexit=no][fixme] {
1659 throwWarning: tr("{0} is deprecated", "{0.tag}");
1660 suggestAlternative: "fixme=continue";
1661 group: tr("deprecated tagging");
1662}
1663*[shop=dive] {
1664 throwWarning: tr("{0} is deprecated", "{0.tag}");
1665 suggestAlternative: "shop=scuba_diving";
1666 group: tr("deprecated tagging");
1667 fixAdd: "shop=scuba_diving";
1668}
1669*[shop=furnace] {
1670 throwWarning: tr("{0} is deprecated", "{0.tag}");
1671 suggestAlternative: "shop=fireplace";
1672 suggestAlternative: "craft=plumber";
1673 group: tr("deprecated tagging");
1674}
1675*[sport=paragliding] {
1676 throwWarning: tr("{0} is deprecated", "{0.tag}");
1677 suggestAlternative: "sport=free_flying";
1678 group: tr("deprecated tagging");
1679 fixAdd: "sport=free_flying";
1680}
1681*[tourism=bed_and_breakfast] {
1682 throwWarning: tr("{0} is deprecated", "{0.tag}");
1683 suggestAlternative: "tourism=guest_house + guest_house=bed_and_breakfast";
1684 group: tr("deprecated tagging");
1685 fixAdd: "tourism=guest_house";
1686 fixAdd: "guest_house=bed_and_breakfast";
1687}
1688
1689/* #17880 */
1690*[diaper=yes],
1691*[diaper=no] {
1692 throwWarning: tr("{0} is deprecated", "{0.tag}");
1693 suggestAlternative: concat("changing_table=", "{0.value}");
1694 group: tr("deprecated tagging");
1695 fixChangeKey: "diaper => changing_table";
1696 set diaper_checked;
1697}
1698*[diaper][diaper =~ /^[1-9][0-9]*$/] {
1699 throwWarning: tr("{0} is deprecated", "{0.tag}");
1700 suggestAlternative: concat("changing_table=yes + changing_table:count=", "{0.value}");
1701 group: tr("deprecated tagging");
1702 fixChangeKey: "diaper => changing_table:count";
1703 fixAdd: "changing_table=yes";
1704 set diaper_checked;
1705}
1706*[diaper=room] {
1707 throwWarning: tr("{0} is deprecated", "{0.tag}");
1708 suggestAlternative: "changing_table=room";
1709 suggestAlternative: "changing_table=dedicated_room";
1710 group: tr("deprecated tagging");
1711 set diaper_checked;
1712}
1713*[diaper]!.diaper_checked {
1714 throwWarning: tr("{0} is deprecated", "{0.key}");
1715 suggestAlternative: "changing_table";
1716 group: tr("deprecated tagging");
1717}
1718*[diaper:male=yes] {
1719 throwWarning: tr("{0} is deprecated", "{0.tag}");
1720 suggestAlternative: "changing_table:location=male_toilet";
1721 group: tr("deprecated tagging");
1722 fixAdd: "changing_table:location=male_toilet";
1723 fixRemove: "diaper:male";
1724 set diaper___checked;
1725}
1726*[diaper:female=yes] {
1727 throwWarning: tr("{0} is deprecated", "{0.tag}");
1728 suggestAlternative: "changing_table:location=female_toilet";
1729 group: tr("deprecated tagging");
1730 fixAdd: "changing_table:location=female_toilet";
1731 fixRemove: "diaper:female";
1732 set diaper___checked;
1733}
1734*[diaper:unisex=yes] {
1735 throwWarning: tr("{0} is deprecated", "{0.tag}");
1736 suggestAlternative: "changing_table:location=unisex_toilet";
1737 group: tr("deprecated tagging");
1738 fixAdd: "changing_table:location=unisex_toilet";
1739 fixRemove: "diaper:unisex";
1740 set diaper___checked;
1741}
1742*[diaper:wheelchair=yes],
1743*[diaper:wheelchair=no] {
1744 throwWarning: tr("{0} is deprecated", "{0.tag}");
1745 suggestAlternative: concat("changing_table:wheelchair=", "{0.value}");
1746 group: tr("deprecated tagging");
1747 fixChangeKey: "diaper:wheelchair => changing_table:wheelchair";
1748 set diaper___checked;
1749}
1750*[diaper:fee=yes],
1751*[diaper:fee=no] {
1752 throwWarning: tr("{0} is deprecated", "{0.tag}");
1753 suggestAlternative: concat("changing_table:fee=", "{0.value}");
1754 group: tr("deprecated tagging");
1755 fixChangeKey: "diaper:fee => changing_table:fee";
1756 set diaper___checked;
1757}
1758*[/^diaper:/]!.diaper___checked {
1759 throwWarning: tr("{0} is deprecated", "diaper:*");
1760 suggestAlternative: "changing_table:*";
1761 group: tr("deprecated tagging");
1762}
1763*[changing_table][changing_table!~/^(yes|no|limited)$/] {
1764 throwWarning: tr("wrong value: {0}", "{0.tag}");
1765 suggestAlternative: "changing_table=yes";
1766 suggestAlternative: "changing_table=no";
1767 suggestAlternative: "changing_table=limited";
1768}
1769
1770/* #17990 */
1771*[roof:shape=half_hipped] {
1772 throwWarning: tr("{0} is deprecated", "{0.tag}");
1773 suggestAlternative: "roof:shape=half-hipped";
1774 group: tr("deprecated tagging");
1775 fixAdd: "roof:shape=half-hipped";
1776}
1777
1778/* #18003 */
1779*[bridge_name] {
1780 throwWarning: tr("{0} is deprecated", "{0.key}");
1781 suggestAlternative: "bridge:name";
1782 group: tr("deprecated tagging");
1783 fixChangeKey: "bridge_name => bridge:name";
1784}
1785
1786/* #18007 */
1787*[access=public] {
1788 throwWarning: tr("{0} is deprecated", "{0.tag}");
1789 suggestAlternative: "access=yes";
1790 group: tr("deprecated tagging");
1791 fixAdd: "access=yes";
1792}
1793
1794/* #17330 */
1795*[crossing=island] {
1796 throwWarning: tr("{0} is deprecated", "{0.tag}");
1797 suggestAlternative: "crossing:island=yes";
1798 group: tr("deprecated tagging");
1799 fixRemove: "crossing";
1800 fixAdd: "crossing:island=yes";
1801}
1802
1803/* #18152 */
1804*[recycling:metal] {
1805 throwWarning: tr("{0} is deprecated", "{0.key}");
1806 suggestAlternative: "recycling:scrap_metal";
1807 group: tr("deprecated tagging");
1808 fixChangeKey: "recycling:metal => recycling:scrap_metal";
1809}
1810
1811/* #18154 */
1812*[shop=dog_grooming] {
1813 throwWarning: tr("{0} is deprecated", "{0.tag}");
1814 suggestAlternative: "shop=pet_grooming";
1815 fixAdd: "shop=pet_grooming";
1816 group: tr("deprecated tagging");
1817}
1818
1819/* #17984, #19383 */
1820*[tower:type=anchor],
1821*[tower:type=suspension] {
1822 throwWarning: tr("{0} is deprecated", "{0.tag}");
1823 suggestAlternative: concat("line_attachment=", "{0.value}");
1824 fixChangeKey: "tower:type => line_attachment";
1825 set power_tower_type_warning;
1826 group: tr("deprecated tagging");
1827}
1828*[tower:type=branch][branch:type=split],
1829*[tower:type=branch][branch:type=loop] {
1830 throwWarning: tr("{0} is deprecated", "{0.tag}");
1831 suggestAlternative: "line_management=split";
1832 fixAdd: "line_management=split";
1833 fixRemove: "tower:type";
1834 fixRemove: "branch:type";
1835 set power_tower_type_warning;
1836 group: tr("deprecated tagging");
1837}
1838*[tower:type=branch][!branch:type],
1839*[tower:type=branch][branch:type=tap] {
1840 throwWarning: tr("{0} is deprecated", "{0.tag}");
1841 suggestAlternative: "line_management=branch";
1842 fixAdd: "line_management=branch";
1843 fixRemove: "tower:type";
1844 fixRemove: "branch:type";
1845 set power_tower_type_warning;
1846 group: tr("deprecated tagging");
1847}
1848*[tower:type=branch][branch:type=cross] {
1849 throwWarning: tr("{0} is deprecated", "{0.tag}");
1850 suggestAlternative: "line_management=cross";
1851 fixAdd: "line_management=cross";
1852 fixRemove: "tower:type";
1853 fixRemove: "branch:type";
1854 set power_tower_type_warning;
1855 group: tr("deprecated tagging");
1856}
1857*[tower:type=termination] {
1858 throwWarning: tr("{0} is deprecated", "{0.tag}");
1859 suggestAlternative: "line_management=termination";
1860 fixAdd: "line_management=termination";
1861 fixRemove: "tower:type";
1862 set power_tower_type_warning;
1863 group: tr("deprecated tagging");
1864}
1865*[tower:type=transition] {
1866 throwWarning: tr("{0} is deprecated", "{0.tag}");
1867 suggestAlternative: "location:transition=yes";
1868 fixAdd: "location:transition=yes";
1869 fixRemove: "tower:type";
1870 set power_tower_type_warning;
1871 group: tr("deprecated tagging");
1872}
1873*[tower:type=transposing] {
1874 throwWarning: tr("{0} is deprecated", "{0.tag}");
1875 suggestAlternative: "line_management=transpose";
1876 fixAdd: "line_management=transpose";
1877 fixRemove: "tower:type";
1878 set power_tower_type_warning;
1879 group: tr("deprecated tagging");
1880}
1881*[tower:type=crossing] {
1882 throwWarning: tr("{0} is deprecated", "{0.tag}");
1883 suggestAlternative: "height=* + design=*";
1884 set power_tower_type_warning;
1885 group: tr("deprecated tagging");
1886}
1887*[tower:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_tower_type_warning {
1888 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1889 suggestAlternative: "design";
1890 suggestAlternative: "structure";
1891 suggestAlternative: "line_management";
1892 suggestAlternative: "line_attachment";
1893 set generic_power_tower_type_warning;
1894 group: tr("deprecated tagging");
1895}
1896node[pole:type=anchor],
1897node[pole:type=suspension] {
1898 throwWarning: tr("{0} is deprecated", "{0.tag}");
1899 suggestAlternative: concat("line_attachment=", "{0.value}");
1900 fixChangeKey: "pole:type => line_attachment";
1901 set power_pole_type_warning;
1902 group: tr("deprecated tagging");
1903}
1904node[pole:type=branch][branch:type=split],
1905node[pole:type=branch][branch:type=loop] {
1906 throwWarning: tr("{0} is deprecated", "{0.tag}");
1907 suggestAlternative: "line_management=split";
1908 fixAdd: "line_management=split";
1909 fixRemove: "pole:type";
1910 fixRemove: "branch:type";
1911 set power_pole_type_warning;
1912 group: tr("deprecated tagging");
1913}
1914node[pole:type=branch][!branch:type],
1915node[pole:type=branch][branch:type=tap] {
1916 throwWarning: tr("{0} is deprecated", "{0.tag}");
1917 suggestAlternative: "line_management=branch";
1918 fixAdd: "line_management=branch";
1919 fixRemove: "pole:type";
1920 fixRemove: "branch:type";
1921 set power_pole_type_warning;
1922 group: tr("deprecated tagging");
1923}
1924node[pole:type=branch][branch:type=cross] {
1925 throwWarning: tr("{0} is deprecated", "{0.tag}");
1926 suggestAlternative: "line_management=cross";
1927 fixAdd: "line_management=cross";
1928 fixRemove: "pole:type";
1929 fixRemove: "branch:type";
1930 set power_pole_type_warning;
1931 group: tr("deprecated tagging");
1932}
1933node[pole:type=termination] {
1934 throwWarning: tr("{0} is deprecated", "{0.tag}");
1935 suggestAlternative: "line_management=termination";
1936 fixAdd: "line_management=termination";
1937 fixRemove: "pole:type";
1938 set power_pole_type_warning;
1939 group: tr("deprecated tagging");
1940}
1941node[pole:type=transition] {
1942 throwWarning: tr("{0} is deprecated", "{0.tag}");
1943 suggestAlternative: "location:transition=yes";
1944 fixAdd: "location:transition=yes";
1945 fixRemove: "pole:type";
1946 set power_pole_type_warning;
1947 group: tr("deprecated tagging");
1948}
1949*[pole:type][power][power=~/^(tower|pole|insulator|portal|terminal)$/]!.power_pole_type_warning!.generic_power_tower_type_warning {
1950 throwWarning: tr("{0} is deprecated for {1}", "{0.key}", "{1.tag}");
1951 suggestAlternative: "line_management";
1952 suggestAlternative: "line_attachment";
1953 group: tr("deprecated tagging");
1954}
1955
1956/* #18267 */
1957node[man_made=pipeline_marker],
1958node[pipeline=marker],
1959node[power=marker],
1960node[cable=marker] {
1961 throwWarning: tr("{0} is deprecated", "{0.tag}");
1962 suggestAlternative: "marker=* + utility=*";
1963 group: tr("deprecated tagging");
1964}
1965
1966/* #17643 */
1967way[barrier=embankment] {
1968 throwWarning: tr("{0} is deprecated", "{0.tag}");
1969 suggestAlternative: "man_made=embankment";
1970 suggestAlternative: "embankment=yes";
1971 group: tr("deprecated tagging");
1972}
1973
1974/* #18469 */
1975way[landuse=churchyard] {
1976 throwWarning: tr("{0} is deprecated", "{0.tag}");
1977 suggestAlternative: "landuse=religious";
1978 suggestAlternative: "amenity=graveyard";
1979 group: tr("deprecated tagging");
1980}
1981
1982*[sloped_curb=yes][!kerb],
1983*[sloped_curb=both][!kerb] {
1984 throwWarning: tr("{0} is deprecated", "{0.tag}");
1985 suggestAlternative: "kerb=lowered";
1986 group: tr("deprecated tagging");
1987 fixRemove: "sloped_curb";
1988 fixAdd: "kerb=lowered";
1989}
1990*[sloped_curb=no][!kerb] {
1991 throwWarning: tr("{0} is deprecated", "{0.tag}");
1992 suggestAlternative: "kerb=yes";
1993 group: tr("deprecated tagging");
1994 fixRemove: "sloped_curb";
1995 fixAdd: "kerb=yes";
1996}
1997*[sloped_curb][sloped_curb !~ /^(yes|both|no)$/][!kerb],
1998*[sloped_curb][kerb] {
1999 throwWarning: tr("{0} is deprecated", "{0.key}");
2000 suggestAlternative: "kerb=*";
2001 group: tr("deprecated tagging");
2002}
2003
2004/* #18571 */
2005*[unnamed=yes] {
2006 throwWarning: tr("{0} is deprecated", "{0.tag}");
2007 suggestAlternative: "noname=yes";
2008 fixChangeKey: "unnamed => noname";
2009 group: tr("deprecated tagging");
2010}
2011
2012node[segregated][segregated!=yes][segregated!=no],
2013way[segregated ][segregated!=yes][segregated!=no] {
2014 throwWarning: tr("unusual value of {0}", "{0.key}");
2015}
2016
2017/* #18603 */
2018way[bicycle:oneway] {
2019 throwWarning: tr("{0} is deprecated", "{0.key}");
2020 suggestAlternative: "oneway:bicycle";
2021 fixChangeKey: "bicycle:oneway => oneway:bicycle";
2022 group: tr("deprecated tagging");
2023}
2024
2025/* #18605 */
2026*[building:height] {
2027 throwWarning: tr("{0} is deprecated", "{0.key}");
2028 suggestAlternative: "height";
2029 fixChangeKey: "building:height => height";
2030 group: tr("deprecated tagging");
2031}
2032*[building:min_height] {
2033 throwWarning: tr("{0} is deprecated", "{0.key}");
2034 suggestAlternative: "min_height";
2035 fixChangeKey: "building:min_height => min_height";
2036 group: tr("deprecated tagging");
2037}
2038
2039/* #11232 */
2040way[highway][construction=yes][highway!=construction] {
2041 throwWarning: tr("{0} is deprecated", "{1.tag}");
2042 suggestAlternative: "construction=minor";
2043 suggestAlternative: concat("highway=construction + construction=", "{0.value}");
2044 group: tr("deprecated tagging");
2045}
2046
2047/* #18659 */
2048*[car][amenity=charging_station] {
2049 throwWarning: tr("{0} is deprecated", "{0.key}");
2050 suggestAlternative: "motorcar";
2051 group: tr("deprecated tagging");
2052 fixChangeKey: "car => motorcar";
2053}
2054
2055/* #18767 */
2056*[navigationaid=approach_light],
2057*[navigationaid="ALS (Approach lighting system)"] {
2058 throwWarning: tr("{0} is deprecated", "{0.tag}");
2059 suggestAlternative: "navigationaid=als";
2060 group: tr("deprecated tagging");
2061 fixAdd: "navigationaid=als";
2062}
2063
2064/* #18819 */
2065node[exit_to] {
2066 throwWarning: tr("{0} is deprecated", "{0.key}");
2067 suggestAlternative: "destination";
2068 group: tr("deprecated tagging");
2069}
2070
2071/* #18951 */
2072*[water=riverbank][!natural] {
2073 throwWarning: tr("{0} is deprecated", "{0.tag}");
2074 suggestAlternative: "natural=water + water=river";
2075 group: tr("deprecated tagging");
2076 fixAdd: "water=river";
2077 fixAdd: "natural=water";
2078}
2079*[water=riverbank][natural] {
2080 throwWarning: tr("{0} is deprecated", "{0.tag}");
2081 suggestAlternative: "natural=water + water=river";
2082 group: tr("deprecated tagging");
2083}
2084
2085node[amenity=bench][capacity][!seats],
2086way[amenity=bench][capacity][!seats] {
2087 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2088 suggestAlternative: "seats";
2089 group: tr("deprecated tagging");
2090 fixChangeKey: "capacity => seats";
2091}
2092node[amenity=bench][capacity][seats],
2093way[amenity=bench][capacity][seats] {
2094 throwWarning: tr("{0} is deprecated for {1}", "{1.key}", "{0.tag}");
2095 suggestAlternative: "seats";
2096 group: tr("deprecated tagging");
2097}
2098
2099/* #19396 */
2100way[stream=intermittent] {
2101 throwWarning: tr("{0} is deprecated", "{0.tag}");
2102 suggestAlternative: "intermittent=yes";
2103 suggestAlternative: "seasonal=yes";
2104 group: tr("deprecated tagging");
2105}
2106
2107*[shop=lamps] {
2108 throwWarning: tr("{0} is deprecated", "{0.tag}");
2109 suggestAlternative: "shop=lighting";
2110 group: tr("deprecated tagging");
2111 fixAdd: "shop=lighting";
2112}
2113
2114/* #19180 */
2115*[access=customer] {
2116 throwWarning: tr("{0} is deprecated", "{0.tag}");
2117 suggestAlternative: "access=customers";
2118 group: tr("deprecated tagging");
2119 fixAdd: "access=customers";
2120}
2121*[addr:inclusion=estimated] {
2122 throwWarning: tr("{0} is deprecated", "{0.tag}");
2123 suggestAlternative: "addr:inclusion=estimate";
2124 group: tr("deprecated tagging");
2125 fixAdd: "addr:inclusion=estimate";
2126}
2127*[building=apartment] {
2128 throwWarning: tr("{0} is deprecated", "{0.tag}");
2129 suggestAlternative: "building=apartments";
2130 group: tr("deprecated tagging");
2131 fixAdd: "building=apartments";
2132}
2133node[lamp_mount="bent mast"] {
2134 throwWarning: tr("{0} is deprecated", "{0.tag}");
2135 suggestAlternative: "lamp_mount=bent_mast";
2136 group: tr("deprecated tagging");
2137 fixAdd: "lamp_mount=bent_mast";
2138}
2139node[lamp_mount="straight mast"] {
2140 throwWarning: tr("{0} is deprecated", "{0.tag}");
2141 suggestAlternative: "lamp_mount=straight_mast";
2142 group: tr("deprecated tagging");
2143 fixAdd: "lamp_mount=straight_mast";
2144}
2145node[lamp_type=electrical] {
2146 throwWarning: tr("{0} is deprecated", "{0.tag}");
2147 suggestAlternative: "lamp_type=electric";
2148 group: tr("deprecated tagging");
2149 fixAdd: "lamp_type=electric";
2150}
2151*[generator:type=solar_photovoltaic_panels] {
2152 throwWarning: tr("{0} is deprecated", "{0.tag}");
2153 suggestAlternative: "generator:type=solar_photovoltaic_panel";
2154 group: tr("deprecated tagging");
2155 fixAdd: "generator:type=solar_photovoltaic_panel";
2156}
2157*[building=part] {
2158 throwWarning: tr("{0} is deprecated", "{0.tag}");
2159 suggestAlternative: "building:part=yes";
2160 group: tr("deprecated tagging");
2161 /* without autofix, it is not clear if a building or a building part is mapped */
2162}
2163
2164/* #19739 */
2165*[natural=sink_hole] {
2166 throwWarning: tr("{0} is deprecated", "{0.tag}");
2167 suggestAlternative: "natural=sinkhole";
2168 group: tr("deprecated tagging");
2169 fixAdd: "natural=sinkhole";
2170}
2171
2172/* #19782 */
2173*[climbing:grade:UIAA:min] {
2174 throwWarning: tr("{0} is deprecated", "{0.key}");
2175 suggestAlternative: "climbing:grade:uiaa:min";
2176 group: tr("deprecated tagging");
2177 fixChangeKey: "climbing:grade:UIAA:min => climbing:grade:uiaa:min";
2178}
2179*[climbing:grade:UIAA:max] {
2180 throwWarning: tr("{0} is deprecated", "{0.key}");
2181 suggestAlternative: "climbing:grade:uiaa:max";
2182 group: tr("deprecated tagging");
2183 fixChangeKey: "climbing:grade:UIAA:max => climbing:grade:uiaa:max";
2184}
2185*[climbing:grade:UIAA:mean] {
2186 throwWarning: tr("{0} is deprecated", "{0.key}");
2187 suggestAlternative: "climbing:grade:uiaa:mean";
2188 group: tr("deprecated tagging");
2189 fixChangeKey: "climbing:grade:UIAA:mean => climbing:grade:uiaa:mean";
2190}
2191*[climbing:grade:UIAA] {
2192 throwWarning: tr("{0} is deprecated", "{0.key}");
2193 suggestAlternative: "climbing:grade:uiaa";
2194 group: tr("deprecated tagging");
2195 fixChangeKey: "climbing:grade:UIAA => climbing:grade:uiaa";
2196}
2197
2198/* #19835 */
2199*[cuisine][cuisine =~ /^(?i)(bbq)$/] { /* single value cases with autofix */
2200 throwWarning: tr("{0} is deprecated", "{0.tag}");
2201 suggestAlternative: "cuisine=barbecue";
2202 group: tr("deprecated tagging");
2203 fixAdd: "cuisine=barbecue";
2204 set bbq_autofix;
2205 assertMatch: "way cuisine=bbq";
2206 assertMatch: "way cuisine=BBQ";
2207 assertNoMatch: "way cuisine=pizza;Bbq";
2208 assertNoMatch: "way cuisine=pizza;bbq";
2209 assertNoMatch: "way cuisine=bbq;pizza";
2210 assertNoMatch: "way cuisine=pasta;bbq;pizza";
2211 assertNoMatch: "way cuisine=korean_bbq";
2212 assertNoMatch: "way cuisine=korean_bbq;bbq";
2213}
2214*[cuisine =~ /(?i)(;bbq|bbq;)/][cuisine!~/(?i)(_bbq)/] { /* multi value cases without autofix */
2215 throwWarning: tr("{0} is deprecated", "cuisine=bbq");
2216 suggestAlternative: "cuisine=barbecue";
2217 group: tr("deprecated tagging");
2218 assertNoMatch: "way cuisine=bbq";
2219 assertNoMatch: "way cuisine=BBQ";
2220 assertMatch: "way cuisine=pizza;Bbq";
2221 assertMatch: "way cuisine=pizza;bbq";
2222 assertMatch: "way cuisine=bbq;pizza";
2223 assertMatch: "way cuisine=pasta;bbq;pizza";
2224 assertNoMatch: "way cuisine=korean_bbq";
2225 assertNoMatch: "way cuisine=korean_bbq;bbq"; /* corner case (mixed ; and _) not supported by these rules, probably not present in the osm database */
2226}
2227
2228/* #17498, #20392 */
2229way[cycleway=none],
2230way[cycleway:left=none],
2231way[cycleway:right=none],
2232way[shoulder=none] {
2233 throwWarning: tr("{0} is deprecated", "{0.tag}");
2234 suggestAlternative: concat("{0.key}", "=no");
2235 group: tr("deprecated tagging");
2236 fixAdd: concat("{0.key}", "=no");
2237}
2238
2239/* #17809 */
2240*[Fixme] {
2241 throwWarning: tr("{0} is deprecated", "{0.key}");
2242 suggestAlternative: "fixme";
2243 group: tr("deprecated tagging");
2244 fixChangeKey: "Fixme => fixme";
2245 assertMatch: "way Fixme=foo";
2246 assertNoMatch: "way fixme=foo";
2247 assertNoMatch: "way FIXME=foo";
2248}
2249
2250/* #20338 */
2251*[amenity=embassy] {
2252 throwWarning: tr("{0} is deprecated", "{0.tag}");
2253 suggestAlternative: "office=diplomatic + diplomatic=embassy";
2254 group: tr("deprecated tagging");
2255 fixAdd: "office=diplomatic";
2256 fixChangeKey: "amenity => diplomatic";
2257}
2258
2259/* When tags are deprecated they should be added to ignoretags.cfg too. */
Note: See TracBrowser for help on using the repository browser.