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

Last change on this file since 19069 was 19025, checked in by taylor.smock, 8 months ago

Fix #23177: Change ref:gnis to gnis:feature_id in the waterway tagging options

ref:gnis, gnis:id, tiger:PLACENS, NHS:GNIS_ID, and nhs:gnis_id have
been merged into gnis:feature_id.

The wiki pages have been stable for 6 months, and the changes were discussed on
the OSM forum.

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