Routino SVN Repository Browser

Check out the latest version of Routino: svn co http://routino.org/svn/trunk routino

ViewVC logotype

Contents of /trunk/xml/routino-tagging.xml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2182 - (show annotations) (download) (as text)
Tue Aug 29 10:28:26 2023 UTC (18 months, 2 weeks ago) by amb
File MIME type: application/xml
File size: 42909 byte(s)
Update the way tagging, minor changes.

1 <?xml version="1.0" encoding="UTF-8" ?>
2
3 <!-- ============================================================
4 An XML format file containing Routino tagging rules
5
6 Part of the Routino routing software.
7 ============================================================
8 This file Copyright 2010-2015, 2018, 2019, 2020, 2021, 2022, 2023 Andrew M. Bishop
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU Affero General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14 ============================================================ -->
15
16 <routino-tagging xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
17 xsi:noNamespaceSchemaLocation="http://www.routino.org/xml/routino-tagging.xsd">
18
19 <!-- - - - - - - - - - - Node rules - - - - - - - - - - -->
20
21 <node>
22
23 <!-- Add barrier tags to quasi-barriers that are not tagged as barriers -->
24
25 <ifnot k="barrier">
26
27 <if k="entrance">
28 <set k="barrier" v="entrance"/>
29 </if>
30
31 <if k="railway" v="level_crossing">
32 <set k="barrier" v="level_crossing"/>
33 </if>
34
35 <if k="ford">
36 <set k="barrier" v="ford"/>
37 </if>
38
39 </ifnot>
40
41 <!-- Note: The default is that all transport types are allowed past a barrier
42 unless it is specifically recognised here; access must be specified
43 to disallow each transport type. -->
44
45 <if k="barrier">
46
47 <!-- Barriers that are too generic to determine default access -->
48
49 <if k="barrier" v="door" > <unset/> </if>
50
51 <if k="barrier" v="gate" > <unset/> </if>
52 <if k="barrier" v="lift_gate" > <unset/> </if>
53 <if k="barrier" v="swing_gate" > <unset/> </if>
54 <if k="barrier" v="sliding_gate" > <unset/> </if>
55 <if k="barrier" v="hampshire_gate"> <unset/> </if>
56
57 <if k="barrier" v="block" > <unset/> </if>
58 <if k="barrier" v="jersey_barrier"> <unset/> </if>
59 <if k="barrier" v="debris" > <unset/> </if>
60 <if k="barrier" v="kerb" > <unset/> </if>
61
62 <if k="barrier" v="chicane" > <unset/> </if>
63
64 <if k="barrier" v="gap" > <unset/> </if>
65 <if k="barrier" v="entrance" > <unset/> </if>
66 <if k="barrier" v="sally_port" > <unset/> </if>
67
68 <if k="barrier" v="toll_booth" > <unset/> </if>
69 <if k="barrier" v="border_control"> <unset/> </if>
70
71 <if k="barrier" v="ford" > <unset/> </if>
72
73 <if k="barrier" v="level_crossing"> <unset/> </if>
74
75 <!-- Barriers that imply no access (as a default) -->
76
77 <if k="barrier" v="wall" > <set v="no_access"/> </if>
78 <if k="barrier" v="fence"> <set v="no_access"/> </if>
79 <if k="barrier" v="hedge"> <set v="no_access"/> </if>
80
81 <if k="barrier" v="no_access">
82 <output k="foot" v="no"/>
83 <output k="horse" v="no"/>
84 <output k="wheelchair" v="no"/>
85 <output k="bicycle" v="no"/>
86 <output k="moped" v="no"/>
87 <output k="motorcycle" v="no"/>
88 <output k="motorcar" v="no"/>
89 <output k="goods" v="no"/>
90 <output k="hgv" v="no"/>
91 <output k="psv" v="no"/>
92
93 <unset k="barrier"/>
94 </if>
95
96 <!-- Barriers that imply foot-only access (as a default) -->
97
98 <if k="barrier" v="kissing_gate" > <set v="foot_only"/> </if>
99 <if k="barrier" v="footgate" > <set v="foot_only"/> </if>
100 <if k="barrier" v="lych_gate" > <set v="foot_only"/> </if>
101 <if k="barrier" v="wicket_gate" > <set v="foot_only"/> </if>
102 <if k="barrier" v="stile" > <set v="foot_only"/> </if>
103 <if k="barrier" v="v_stile" > <set v="foot_only"/> </if>
104 <if k="barrier" v="full-height_turnstile"> <set v="foot_only"/> </if>
105 <if k="barrier" v="turnstile" > <set v="foot_only"/> </if>
106 <if k="barrier" v="squeeze" > <set v="foot_only"/> </if>
107 <if k="barrier" v="squeeze_stile" > <set v="foot_only"/> </if>
108
109 <if k="barrier" v="foot_only">
110 <output k="horse" v="no"/>
111 <output k="wheelchair" v="no"/>
112 <output k="bicycle" v="no"/>
113 <output k="moped" v="no"/>
114 <output k="motorcycle" v="no"/>
115 <output k="motorcar" v="no"/>
116 <output k="goods" v="no"/>
117 <output k="hgv" v="no"/>
118 <output k="psv" v="no"/>
119
120 <unset k="barrier"/>
121 </if>
122
123 <!-- Barriers that imply no wheeled access (as a default) -->
124
125 <if k="barrier" v="horse_stile"> <set v="not_wheeled"/> </if>
126 <if k="barrier" v="horse_jump" > <set v="not_wheeled"/> </if>
127 <if k="barrier" v="step_over" > <set v="not_wheeled"/> </if>
128 <if k="barrier" v="chain" > <set v="not_wheeled"/> </if>
129 <if k="barrier" v="log" > <set v="not_wheeled"/> </if>
130 <if k="barrier" v="tree" > <set v="not_wheeled"/> </if>
131 <if k="barrier" v="fallen_tree"> <set v="not_wheeled"/> </if>
132 <if k="barrier" v="bar" > <set v="not_wheeled"/> </if>
133
134 <if k="barrier" v="not_wheeled">
135 <output k="wheelchair" v="no"/>
136 <output k="bicycle" v="no"/>
137 <output k="moped" v="no"/>
138 <output k="motorcycle" v="no"/>
139 <output k="motorcar" v="no"/>
140 <output k="goods" v="no"/>
141 <output k="hgv" v="no"/>
142 <output k="psv" v="no"/>
143
144 <unset k="barrier"/>
145 </if>
146
147 <!-- Barriers that imply no horse access (as a default) -->
148
149 <if k="barrier" v="horse_barrier"> <set v="no_horse"/> </if>
150 <if k="barrier" v="cattle_grid" > <set v="no_horse"/> </if>
151
152 <if k="barrier" v="no_horse">
153 <output k="horse" v="no"/>
154
155 <unset k="barrier"/>
156 </if>
157
158 <!-- Barriers that imply no motor vehicle access (as a default) -->
159
160 <if k="barrier" v="cycle_barrier" > <set v="no_motorised"/> </if>
161 <if k="barrier" v="motorcycle_barrier"> <set v="no_motorised"/> </if>
162
163 <if k="barrier" v="no_motorised">
164 <output k="moped" v="no"/>
165 <output k="motorcycle" v="no"/>
166 <output k="motorcar" v="no"/>
167 <output k="goods" v="no"/>
168 <output k="hgv" v="no"/>
169 <output k="psv" v="no"/>
170
171 <unset k="barrier"/>
172 </if>
173
174 <!-- Barriers that imply no wide motor vehicle access (as a default) -->
175
176 <if k="barrier" v="bollard" > <set v="not_2plus_wheels"/> </if>
177 <if k="barrier" v="post" > <set v="not_2plus_wheels"/> </if>
178 <if k="barrier" v="car_barrier"> <set v="not_2plus_wheels"/> </if>
179 <if k="barrier" v="car_trap" > <set v="not_2plus_wheels"/> </if>
180 <if k="barrier" v="planter" > <set v="not_2plus_wheels"/> </if>
181
182 <if k="barrier" v="not_2plus_wheels">
183 <output k="motorcar" v="no"/>
184 <output k="goods" v="no"/>
185 <output k="hgv" v="no"/>
186 <output k="psv" v="no"/>
187
188 <unset k="barrier"/>
189 </if>
190
191 <!-- Log any remaining, unrecognised, barriers that do not have a generic access permission -->
192
193 <if k="barrier">
194 <ifnot k="access">
195 <logerror k="barrier" message="no 'access' tag so assuming access='yes' plus tagged restrictions"/>
196 </ifnot>
197 </if>
198
199
200 <!-- Normalisation of access tag keys -->
201
202 <ifnot k="foot" > <if k="access:foot" > <set k="foot" /> </if> </ifnot>
203 <ifnot k="horse" > <if k="access:horse" > <set k="horse" /> </if> </ifnot>
204 <ifnot k="wheelchair"> <if k="access:wheelchair"> <set k="wheelchair"/> </if> </ifnot>
205 <ifnot k="bicycle" > <if k="access:bicycle" > <set k="bicycle" /> </if> </ifnot>
206 <ifnot k="moped" > <if k="access:moped" > <set k="moped" /> </if> </ifnot>
207 <ifnot k="motorcycle"> <if k="access:motorcycle"> <set k="motorcycle"/> </if> </ifnot>
208 <ifnot k="motorcar" > <if k="access:motorcar" > <set k="motorcar" /> </if> </ifnot>
209 <ifnot k="goods" > <if k="access:goods" > <set k="goods" /> </if> </ifnot>
210 <ifnot k="hgv" > <if k="access:hgv" > <set k="hgv" /> </if> </ifnot>
211 <ifnot k="psv" > <if k="access:psv" > <set k="psv" /> </if> </ifnot>
212
213 <!-- Normalisation of access tag values -->
214
215 <if v="designated" > <set v="yes"/> </if>
216 <if v="permissive" > <set v="yes"/> </if>
217 <if v="true" > <set v="yes"/> </if>
218 <if v="public" > <set v="yes"/> </if>
219 <if v="official" > <set v="yes"/> </if>
220
221 <if v="destination" > <set v="no"/> </if>
222 <if v="permit" > <set v="no"/> </if>
223 <if v="customer" > <set v="no"/> </if>
224 <if v="customers" > <set v="no"/> </if>
225 <if v="delivery" > <set v="no"/> </if>
226 <if v="residents" > <set v="no"/> </if>
227 <if v="private" > <set v="no"/> </if>
228
229 <if v="unknown" > <set v="no"/> </if>
230 <if v="construction"> <set v="no"/> </if>
231 <if v="unsuitable" > <set v="no"/> </if>
232 <if v="limited" > <set v="no"/> </if>
233 <if v="restricted" > <set v="no"/> </if>
234 <if v="agricultural"> <set v="no"/> </if>
235 <if v="forestry" > <set v="no"/> </if>
236 <if v="emergency" > <set v="no"/> </if>
237
238 <!-- Generic access permissions for all transport types (to override defaults) -->
239
240 <if k="access">
241
242 <ifnot k="access" v="yes">
243 <output k="foot" v="no"/>
244 <output k="horse" v="no"/>
245 <output k="wheelchair" v="no"/>
246 <output k="bicycle" v="no"/>
247 <output k="moped" v="no"/>
248 <output k="motorcycle" v="no"/>
249 <output k="motorcar" v="no"/>
250 <output k="goods" v="no"/>
251 <output k="hgv" v="no"/>
252 <output k="psv" v="no"/>
253
254 <if k="access" v="foot">
255 <set k="foot" v="yes"/>
256 <logerror k="access" message="using 'access' = 'no' ; 'foot' = 'yes'"/>
257 <set k="access" v="no"/>
258 </if>
259
260 <ifnot k="access" v="no">
261 <logerror k="access" message="using 'no'"/>
262 </ifnot>
263
264 </ifnot>
265
266 </if> <!-- k="access" -->
267
268 <!-- Generic access permissions for classes of transport types -->
269
270 <if k="vehicle">
271
272 <ifnot k="vehicle" v="yes">
273 <output k="bicycle" v="no"/>
274 <output k="moped" v="no"/>
275 <output k="motorcycle" v="no"/>
276 <output k="motorcar" v="no"/>
277 <output k="goods" v="no"/>
278 <output k="hgv" v="no"/>
279 <output k="psv" v="no"/>
280
281 <ifnot k="vehicle" v="no">
282 <logerror k="vehicle" message="using 'no'"/>
283 </ifnot>
284 </ifnot>
285
286 </if> <!-- k="vehicle" -->
287
288 <if k="motor_vehicle">
289
290 <ifnot k="motor_vehicle" v="yes">
291 <output k="moped" v="no"/>
292 <output k="motorcycle" v="no"/>
293 <output k="motorcar" v="no"/>
294 <output k="goods" v="no"/>
295 <output k="hgv" v="no"/>
296 <output k="psv" v="no"/>
297
298 <ifnot k="motor_vehicle" v="no">
299 <logerror k="motor_vehicle" message="using 'no'"/>
300 </ifnot>
301 </ifnot>
302
303 </if> <!-- k="motor_vehicle" -->
304
305 <!-- Specific access rules (to override the generic ones) -->
306
307 <if k="foot" > <output/> </if>
308 <if k="horse" > <output/> </if>
309 <if k="wheelchair"> <output/> </if>
310 <if k="bicycle" > <output/> </if>
311 <if k="moped" > <output/> </if>
312 <if k="motorcycle"> <output/> </if>
313 <if k="motorcar" > <output/> </if>
314 <if k="goods" > <output/> </if>
315 <if k="hgv" > <output/> </if>
316 <if k="psv" > <output/> </if>
317
318 </if> <!-- k="barrier" -->
319
320 <!-- Mini-roundabouts -->
321
322 <if k="highway" v="mini_roundabout">
323 <output k="roundabout" v="yes"/>
324 </if>
325
326 <if k="junction" v="roundabout">
327 <output k="roundabout" v="yes"/>
328 </if>
329
330 </node>
331
332 <!-- - - - - - - - - - - Way rules - - - - - - - - - - -->
333
334 <way>
335
336 <!-- Note: The default is that no transport type is allowed on any highway;
337 access must be specified to allow each transport type. -->
338
339 <ifnot k="highway">
340
341 <if k="route" v="ferry">
342 <set k="highway" v="ferry"/>
343 </if>
344
345 <if k="public_transport" v="platform">
346 <set k="highway" v="platform"/>
347 </if>
348
349 <if k="railway" v="platform">
350 <set k="highway" v="platform"/>
351 </if>
352
353 </ifnot>
354
355 <if k="highway">
356
357 <!-- Not useful highway types (future highways) -->
358
359 <if k="highway" v="construction"> <unset/> </if>
360 <if k="highway" v="planned" > <unset/> </if>
361 <if k="highway" v="proposed" > <unset/> </if>
362
363 <!-- Not useful highway types (previous highways) -->
364
365 <if k="highway" v="no" > <unset/> </if>
366 <if k="highway" v="abandoned" > <unset/> </if>
367 <if k="highway" v="disused" > <unset/> </if>
368
369 <!-- Not useful highway types (limited use highways) -->
370
371 <if k="highway" v="raceway" > <unset/> </if>
372
373 <!-- Motorway types (includes default access and default properties) -->
374
375 <if k="highway" v="motorway_link">
376 <set v="motorway"/>
377 </if>
378
379 <if k="highway" v="motorway">
380 <output k="highway"/>
381
382 <output k="motorcycle" v="yes"/>
383 <output k="motorcar" v="yes"/>
384 <output k="goods" v="yes"/>
385 <output k="hgv" v="yes"/>
386 <output k="psv" v="yes"/>
387
388 <output k="paved" v="yes"/>
389 <output k="multilane" v="yes"/>
390 <output k="oneway" v="yes"/>
391
392 <unset k="highway"/>
393 </if>
394
395 <!-- Trunk road types (includes default access and default properties) -->
396
397 <if k="highway" v="trunk_link">
398 <set v="trunk"/>
399 </if>
400
401 <if k="highway" v="trunk">
402 <output k="highway"/>
403
404 <output k="bicycle" v="yes"/>
405 <output k="moped" v="yes"/>
406 <output k="motorcycle" v="yes"/>
407 <output k="motorcar" v="yes"/>
408 <output k="goods" v="yes"/>
409 <output k="hgv" v="yes"/>
410 <output k="psv" v="yes"/>
411
412 <output k="paved" v="yes"/>
413
414 <unset k="highway"/>
415 </if>
416
417 <!-- Primary road types (includes default access and default properties) -->
418
419 <if k="highway" v="primary_link">
420 <set v="primary"/>
421 </if>
422
423 <if k="highway" v="primary">
424 <output k="highway"/>
425
426 <output k="foot" v="yes"/>
427 <output k="horse" v="yes"/>
428 <output k="wheelchair" v="no" />
429 <output k="bicycle" v="yes"/>
430 <output k="moped" v="yes"/>
431 <output k="motorcycle" v="yes"/>
432 <output k="motorcar" v="yes"/>
433 <output k="goods" v="yes"/>
434 <output k="hgv" v="yes"/>
435 <output k="psv" v="yes"/>
436
437 <output k="paved" v="yes"/>
438
439 <unset k="highway"/>
440 </if>
441
442 <!-- Secondary road types (includes default access and default properties) -->
443
444 <if k="highway" v="secondary_link">
445 <set v="secondary"/>
446 </if>
447
448 <if k="highway" v="secondary">
449 <output k="highway"/>
450
451 <output k="foot" v="yes"/>
452 <output k="horse" v="yes"/>
453 <output k="wheelchair" v="yes"/>
454 <output k="bicycle" v="yes"/>
455 <output k="moped" v="yes"/>
456 <output k="motorcycle" v="yes"/>
457 <output k="motorcar" v="yes"/>
458 <output k="goods" v="yes"/>
459 <output k="hgv" v="yes"/>
460 <output k="psv" v="yes"/>
461
462 <output k="paved" v="yes"/>
463
464 <unset k="highway"/>
465 </if>
466
467 <!-- Tertiary road types (includes default access and default properties) -->
468
469 <if k="highway" v="tertiary_link">
470 <set v="tertiary"/>
471 </if>
472
473 <if k="highway" v="tertiary">
474 <output k="highway"/>
475
476 <output k="foot" v="yes"/>
477 <output k="horse" v="yes"/>
478 <output k="wheelchair" v="yes"/>
479 <output k="bicycle" v="yes"/>
480 <output k="moped" v="yes"/>
481 <output k="motorcycle" v="yes"/>
482 <output k="motorcar" v="yes"/>
483 <output k="goods" v="yes"/>
484 <output k="hgv" v="yes"/>
485 <output k="psv" v="yes"/>
486
487 <output k="paved" v="yes"/>
488
489 <unset k="highway"/>
490 </if>
491
492 <!-- Unclassified road types (includes default access and default properties) -->
493
494 <if k="highway" v="minor">
495 <set k="highway" v="unclassified"/>
496 </if>
497
498 <if k="highway" v="road">
499 <set k="highway" v="unclassified"/>
500 </if>
501
502 <if k="highway" v="unclassified">
503 <output k="highway"/>
504
505 <output k="foot" v="yes"/>
506 <output k="horse" v="yes"/>
507 <output k="wheelchair" v="yes"/>
508 <output k="bicycle" v="yes"/>
509 <output k="moped" v="yes"/>
510 <output k="motorcycle" v="yes"/>
511 <output k="motorcar" v="yes"/>
512 <output k="goods" v="yes"/>
513 <output k="hgv" v="yes"/>
514 <output k="psv" v="yes"/>
515
516 <output k="paved" v="yes"/>
517
518 <unset k="highway"/>
519 </if>
520
521 <!-- Residential road types (includes default access and default properties) -->
522
523 <if k="highway" v="living_street">
524 <set k="highway" v="residential"/>
525 </if>
526
527 <if k="highway" v="residential">
528 <output k="highway"/>
529
530 <output k="foot" v="yes"/>
531 <output k="horse" v="yes"/>
532 <output k="wheelchair" v="yes"/>
533 <output k="bicycle" v="yes"/>
534 <output k="moped" v="yes"/>
535 <output k="motorcycle" v="yes"/>
536 <output k="motorcar" v="yes"/>
537 <output k="goods" v="yes"/>
538 <output k="hgv" v="yes"/>
539 <output k="psv" v="yes"/>
540
541 <output k="paved" v="yes"/>
542
543 <unset k="highway"/>
544 </if>
545
546 <!-- Service road types (includes default access and default properties) -->
547
548 <if k="highway" v="access">
549 <set k="highway" v="service"/>
550 </if>
551
552 <if k="highway" v="services">
553 <set k="highway" v="service"/>
554 </if>
555
556 <if k="highway" v="rest_area">
557 <set k="highway" v="service"/>
558 </if>
559
560 <if k="highway" v="layby">
561 <set k="highway" v="service"/>
562 </if>
563
564 <if k="highway" v="service">
565 <output k="highway"/>
566
567 <output k="foot" v="yes"/>
568 <output k="horse" v="yes"/>
569 <output k="wheelchair" v="yes"/>
570 <output k="bicycle" v="yes"/>
571 <output k="moped" v="yes"/>
572 <output k="motorcycle" v="yes"/>
573 <output k="motorcar" v="yes"/>
574 <output k="goods" v="yes"/>
575 <output k="hgv" v="yes"/>
576 <output k="psv" v="yes"/>
577
578 <output k="paved" v="yes"/>
579
580 <unset k="highway"/>
581 </if>
582
583 <!-- Busway types (includes default access and default properties) -->
584
585 <if k="highway" v="bus_guideway">
586 <set k="highway" v="busway"/>
587 </if>
588
589 <if k="highway" v="bus_stop">
590 <set k="highway" v="busway"/>
591 </if>
592
593 <if k="highway" v="busway">
594 <output k="highway" v="service"/>
595
596 <output k="psv" v="yes"/>
597
598 <output k="paved" v="yes"/>
599
600 <unset k="highway"/>
601 </if>
602
603 <!-- Track types (includes default access and default properties) -->
604
605 <if k="highway" v="byway">
606 <set k="highway" v="track"/>
607 </if>
608
609 <if k="highway" v="unsurfaced">
610 <set k="highway" v="track"/>
611 </if>
612
613 <if k="highway" v="unpaved">
614 <set k="highway" v="track"/>
615 </if>
616
617 <if k="highway" v="track">
618 <output k="highway"/>
619
620 <output k="foot" v="yes"/>
621 <output k="horse" v="yes"/>
622 <output k="bicycle" v="yes"/>
623
624 <unset k="highway"/>
625 </if>
626
627 <if k="tracktype" v="grade1">
628 <output k="paved" v="yes"/>
629 </if>
630
631 <!-- Cycleway types (includes default access and default properties) -->
632
633 <if k="highway" v="cycleway">
634 <output k="highway"/>
635
636 <output k="foot" v="yes"/>
637 <output k="wheelchair" v="yes"/>
638 <output k="bicycle" v="yes"/>
639
640 <output k="paved" v="yes"/>
641
642 <unset k="highway"/>
643 </if>
644
645 <!-- Path types (includes default access and default properties) -->
646
647 <if k="highway" v="footway">
648 <set k="highway" v="path"/>
649 </if>
650
651 <if k="highway" v="platform">
652 <set k="highway" v="path"/>
653 </if>
654
655 <if k="highway" v="bridleway">
656 <set k="highway" v="path"/>
657
658 <output k="horse" v="yes"/>
659 <output k="bicycle" v="yes"/>
660 </if>
661
662 <if k="highway" v="pedestrian">
663 <set k="highway" v="path"/>
664
665 <output k="paved" v="yes"/>
666 </if>
667
668 <if k="highway" v="walkway">
669 <set k="highway" v="path"/>
670
671 <output k="paved" v="yes"/>
672 </if>
673
674 <if k="highway" v="trail">
675 <set k="highway" v="path"/>
676
677 <output k="paved" v="no"/>
678 </if>
679
680 <if k="highway" v="path">
681 <output k="highway"/>
682
683 <output k="foot" v="yes"/>
684 <output k="wheelchair" v="yes"/>
685
686 <unset k="highway"/>
687 </if>
688
689 <!-- Steps types (includes default access and default properties) -->
690
691 <if k="highway" v="steps">
692 <output k="highway"/>
693
694 <output k="foot" v="yes"/>
695
696 <unset k="highway"/>
697 </if>
698
699 <!-- Ferries -->
700
701 <if k="highway" v="ferry">
702 <output k="highway"/>
703
704 <!-- Heuristics for ferries - only a common vehicle type within its category -->
705
706 <if k="foot" v="yes">
707 <output k="wheelchair" v="yes"/>
708 </if>
709
710 <if k="bicycle" v="yes">
711 <output k="foot" v="yes"/>
712 <output k="wheelchair" v="yes"/>
713 </if>
714
715 <if k="motorcycle" v="yes">
716 <output k="moped" v="yes"/>
717 </if>
718
719 <if k="motorcar" v="yes">
720 <output k="moped" v="yes"/>
721 <output k="motorcycle" v="yes"/>
722 </if>
723
724 <if k="goods" v="yes">
725 <output k="moped" v="yes"/>
726 <output k="motorcycle" v="yes"/>
727 <output k="motorcar" v="yes"/>
728 </if>
729
730 <if k="psv" v="yes">
731 <output k="moped" v="yes"/>
732 <output k="motorcycle" v="yes"/>
733 <output k="motorcar" v="yes"/>
734 <output k="goods" v="yes"/>
735 </if>
736
737 <if k="hgv" v="yes">
738 <output k="moped" v="yes"/>
739 <output k="motorcycle" v="yes"/>
740 <output k="motorcar" v="yes"/>
741 <output k="goods" v="yes"/>
742 <output k="psv" v="yes"/>
743 </if>
744
745 <!-- Heuristics for ferries - tag groups instead of individual vehicle types -->
746
747 <if k="access" v="yes">
748 <output k="foot" v="yes"/>
749 <output k="horse" v="yes"/>
750 <output k="wheelchair" v="yes"/>
751
752 <set k="vehicle" v="yes"/>
753 </if>
754
755 <if k="vehicle" v="yes">
756 <output k="bicycle" v="yes"/>
757
758 <set k="motor_vehicle" v="yes"/>
759 </if>
760
761 <if k="motor_vehicle" v="yes">
762 <output k="moped" v="yes"/>
763 <output k="motorcycle" v="yes"/>
764 <output k="motorcar" v="yes"/>
765 <output k="goods" v="yes"/>
766 <output k="hgv" v="yes"/>
767 <output k="psv" v="yes"/>
768 </if>
769
770 <unset k="highway"/>
771 </if>
772
773 <!-- Unrecognised highway type -->
774
775 <if k="highway">
776 <logerror k="highway" message="ignoring it"/>
777 </if>
778
779 <!-- Normalisation of access tag keys -->
780
781 <ifnot k="foot" > <if k="access:foot" > <set k="foot" /> </if> </ifnot>
782 <ifnot k="horse" > <if k="access:horse" > <set k="horse" /> </if> </ifnot>
783 <ifnot k="wheelchair"> <if k="access:wheelchair"> <set k="wheelchair"/> </if> </ifnot>
784 <ifnot k="bicycle" > <if k="access:bicycle" > <set k="bicycle" /> </if> </ifnot>
785 <ifnot k="moped" > <if k="access:moped" > <set k="moped" /> </if> </ifnot>
786 <ifnot k="motorcycle"> <if k="access:motorcycle"> <set k="motorcycle"/> </if> </ifnot>
787 <ifnot k="motorcar" > <if k="access:motorcar" > <set k="motorcar" /> </if> </ifnot>
788 <ifnot k="goods" > <if k="access:goods" > <set k="goods" /> </if> </ifnot>
789 <ifnot k="hgv" > <if k="access:hgv" > <set k="hgv" /> </if> </ifnot>
790 <ifnot k="psv" > <if k="access:psv" > <set k="psv" /> </if> </ifnot>
791
792 <!-- Normalisation of access tag values -->
793
794 <if v="designated" > <set v="yes"/> </if>
795 <if v="permissive" > <set v="yes"/> </if>
796 <if v="true" > <set v="yes"/> </if>
797 <if v="public" > <set v="yes"/> </if>
798 <if v="official" > <set v="yes"/> </if>
799
800 <if v="destination" > <set v="no"/> </if>
801 <if v="permit" > <set v="no"/> </if>
802 <if v="customer" > <set v="no"/> </if>
803 <if v="customers" > <set v="no"/> </if>
804 <if v="delivery" > <set v="no"/> </if>
805 <if v="residents" > <set v="no"/> </if>
806 <if v="private" > <set v="no"/> </if>
807
808 <if v="unknown" > <set v="no"/> </if>
809 <if v="construction"> <set v="no"/> </if>
810 <if v="unsuitable" > <set v="no"/> </if>
811 <if v="discouraged" > <set v="no"/> </if>
812 <if v="limited" > <set v="no"/> </if>
813 <if v="restricted" > <set v="no"/> </if>
814 <if v="agricultural"> <set v="no"/> </if>
815 <if v="forestry" > <set v="no"/> </if>
816 <if v="emergency" > <set v="no"/> </if>
817
818 <!-- Generic access restrictions for all transport types (to subtract from highway specific defaults) -->
819
820 <if k="access">
821
822 <ifnot k="access" v="yes">
823 <output k="foot" v="no"/>
824 <output k="horse" v="no"/>
825 <output k="wheelchair" v="no"/>
826 <output k="bicycle" v="no"/>
827 <output k="moped" v="no"/>
828 <output k="motorcycle" v="no"/>
829 <output k="motorcar" v="no"/>
830 <output k="goods" v="no"/>
831 <output k="hgv" v="no"/>
832 <output k="psv" v="no"/>
833
834 <if k="access" v="foot">
835 <set k="foot" v="yes"/>
836 <logerror k="access" message="using 'access' = 'no' ; 'foot' = 'yes'"/>
837 <set k="access" v="no"/>
838 </if>
839
840 <if k="access" v="wheelchair">
841 <set k="wheelchair" v="yes"/>
842 <logerror k="access" message="using 'access' = 'no' ; 'wheelchair' = 'yes'"/>
843 <set k="access" v="no"/>
844 </if>
845
846 <if k="access" v="motor_vehicle">
847 <set k="motor_vehicle" v="yes"/>
848 <logerror k="access" message="using 'access' = 'no' ; 'motor_vehicle' = 'yes'"/>
849 <set k="access" v="no"/>
850 </if>
851
852 <if k="access" v="hgv">
853 <set k="hgv" v="yes"/>
854 <logerror k="access" message="using 'access' = 'no' ; 'hgv' = 'yes'"/>
855 <set k="access" v="no"/>
856 </if>
857
858 <if k="access" v="bus">
859 <set v="psv" />
860 </if>
861
862 <if k="access" v="psv">
863 <set k="psv" v="yes"/>
864 <logerror k="access" message="using 'access' = 'no' ; 'psv' = 'yes'"/>
865 <set k="access" v="no"/>
866 </if>
867
868 <ifnot k="access" v="no">
869 <logerror k="access" message="using 'no'"/>
870 </ifnot>
871 </ifnot>
872
873 </if> <!-- k="access" -->
874
875 <!-- Other access permissions (to add to highway specific defaults with generic restrictions) -->
876
877 <if k="designation">
878
879 <if k="designation" v="restricted_byway">
880 <output k="foot" v="yes"/>
881 <output k="horse" v="yes"/>
882 <output k="wheelchair" v="yes"/>
883 <output k="bicycle" v="yes"/>
884
885 <unset k="designation"/>
886 </if>
887
888 <if k="designation" v="public_highway">
889 <set v="byway_open_to_all_traffic"/>
890 </if>
891
892 <if k="designation" v="public_byway">
893 <set v="byway_open_to_all_traffic"/>
894 </if>
895
896 <if k="designation" v="byway">
897 <set v="byway_open_to_all_traffic"/>
898 </if>
899
900 <if k="designation" v="byway_open_to_all_traffic">
901 <output k="foot" v="yes"/>
902 <output k="horse" v="yes"/>
903 <output k="wheelchair" v="yes"/>
904 <output k="bicycle" v="yes"/>
905 <output k="moped" v="yes"/>
906 <output k="motorcycle" v="yes"/>
907 <output k="motorcar" v="yes"/>
908
909 <unset k="designation"/>
910 </if>
911
912 <if k="designation" v="permissive_bridleway">
913 <set v="bridleway"/>
914 </if>
915
916 <if k="designation" v="public_bridleway">
917 <set v="bridleway"/>
918 </if>
919
920 <if k="designation" v="bridleway">
921 <output k="foot" v="yes"/>
922 <output k="horse" v="yes"/>
923 <output k="wheelchair" v="yes"/>
924 <output k="bicycle" v="yes"/>
925
926 <unset k="designation"/>
927 </if>
928
929 <if k="designation" v="public_cycleway">
930 <output k="foot" v="yes"/>
931 <output k="wheelchair" v="yes"/>
932 <output k="bicycle" v="yes"/>
933
934 <unset k="designation"/>
935 </if>
936
937 <if k="designation" v="permissive_footpath">
938 <set v="footpath"/>
939 </if>
940
941 <if k="designation" v="public_footpath">
942 <set v="footpath"/>
943 </if>
944
945 <if k="designation" v="footpath">
946 <output k="foot" v="yes"/>
947 <output k="wheelchair" v="yes"/>
948
949 <unset k="designation"/>
950 </if>
951
952 <if k="designation">
953 <logerror k="designation" message="ignoring it"/>
954 </if>
955
956 </if> <!-- k="designation" -->
957
958 <!-- Motorroad derived access rules (to override the generic ones) -->
959
960 <if k="motorroad" v="yes">
961 <output k="foot" v="no"/>
962 <output k="horse" v="no"/>
963 <output k="wheelchair" v="no"/>
964 <output k="bicycle" v="no"/>
965 <output k="moped" v="no"/>
966 </if>
967
968 <!-- Footway/sidewalk derived access rules (to override the generic ones) -->
969
970 <if k="footway" v="use_sidepath">
971 <output k="foot" v="no"/>
972 </if>
973
974 <if k="footway">
975 <if k="footway" v="sidewalk"> <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
976 <if k="footway" v="both" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
977 <if k="footway" v="left" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
978 <if k="footway" v="right" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
979 <if k="footway" v="yes" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
980
981 <if k="footway" v="crossing"> <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
982 </if>
983
984 <if k="sidewalk">
985 <if k="sidewalk" v="both" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
986 <if k="sidewalk" v="left" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
987 <if k="sidewalk" v="right" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
988 <if k="sidewalk" v="yes" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
989 </if>
990
991 <if k="sidewalk:both" v="yes" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
992 <if k="sidewalk:left" v="yes" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
993 <if k="sidewalk:right" v="yes" > <output k="foot" v="yes"/> <output k="wheelchair" v="yes"/> </if>
994
995 <!-- Bicycle/cycleway derived access rules (to override the generic ones) -->
996
997 <if k="bicycle" v="use_sidepath">
998 <output k="bicycle" v="no"/>
999 </if>
1000
1001 <if k="cycleway">
1002
1003 <if k="cycleway" v="lane" > <output k="bicycle" v="yes"/> </if>
1004 <if k="cycleway" v="track" > <output k="bicycle" v="yes"/> </if>
1005 <if k="cycleway" v="shared_lane"> <output k="bicycle" v="yes"/> </if>
1006 <if k="cycleway" v="opposite" > <output k="bicycle" v="yes"/> </if>
1007 <if k="cycleway" v="crossing" > <output k="bicycle" v="yes"/> </if>
1008 <if k="cycleway" v="yes" > <output k="bicycle" v="yes"/> </if>
1009
1010 <if k="cycleway" v="opposite_lane">
1011 <output k="bicycle" v="yes"/>
1012 <output k="cyclebothways" v="yes"/>
1013 </if>
1014
1015 <if k="cycleway" v="opposite_track">
1016 <output k="bicycle" v="yes"/>
1017 <output k="cyclebothways" v="yes"/>
1018 </if>
1019
1020 <if k="cycleway" v="opposite">
1021 <output k="bicycle" v="yes"/>
1022 <output k="cyclebothways" v="yes"/>
1023 </if>
1024
1025 </if> <!-- k="cycleway" -->
1026
1027 <if k="oneway:bicycle" v="no">
1028 <output k="bicycle" v="yes"/>
1029 <output k="cyclebothways" v="yes"/>
1030 </if>
1031
1032 <!-- Access restrictions for classes of transport types (to subtract from highway specific defaults and other access permissions) -->
1033
1034 <if k="vehicle">
1035
1036 <ifnot k="vehicle" v="yes">
1037 <output k="bicycle" v="no"/>
1038 <output k="moped" v="no"/>
1039 <output k="motorcycle" v="no"/>
1040 <output k="motorcar" v="no"/>
1041 <output k="goods" v="no"/>
1042 <output k="hgv" v="no"/>
1043 <output k="psv" v="no"/>
1044
1045 <ifnot k="vehicle" v="no">
1046 <logerror k="vehicle" message="using 'no'"/>
1047 </ifnot>
1048 </ifnot>
1049
1050 </if> <!-- k="vehicle" -->
1051
1052 <if k="motor_vehicle">
1053
1054 <ifnot k="motor_vehicle" v="yes">
1055 <output k="moped" v="no"/>
1056 <output k="motorcycle" v="no"/>
1057 <output k="motorcar" v="no"/>
1058 <output k="goods" v="no"/>
1059 <output k="hgv" v="no"/>
1060 <output k="psv" v="no"/>
1061
1062 <ifnot k="motor_vehicle" v="no">
1063 <logerror k="motor_vehicle" message="using 'no'"/>
1064 </ifnot>
1065 </ifnot>
1066
1067 </if> <!-- k="motor_vehicle" -->
1068
1069 <!-- Specific access rules (to override the generic ones) -->
1070
1071 <if k="foot" > <output/> </if>
1072 <if k="horse" > <output/> </if>
1073 <if k="wheelchair"> <output/> </if>
1074 <if k="bicycle" > <output/> </if>
1075 <if k="moped" > <output/> </if>
1076 <if k="motorcycle"> <output/> </if>
1077 <if k="motorcar" > <output/> </if>
1078 <if k="goods" > <output/> </if>
1079 <if k="hgv" > <output/> </if>
1080 <if k="psv" > <output/> </if>
1081
1082 <!-- Normalisation of property tags -->
1083
1084 <if k="surface">
1085
1086 <!-- Tags from http://wiki.openstreetmap.org/wiki/Key:surface on 2023-08-29 -->
1087
1088 <if k="surface" v="paved"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1089 <if k="surface" v="asphalt"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1090 <if k="surface" v="chipseal"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1091 <if k="surface" v="concrete"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1092 <if k="surface" v="concrete:lanes"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1093 <if k="surface" v="concrete:plates"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1094 <if k="surface" v="paving_stones"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1095 <if k="surface" v="sett"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1096 <if k="surface" v="unhewn_cobblestone"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1097 <if k="surface" v="cobblestone"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1098 <if k="surface" v="brick"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1099 <if k="surface" v="metal"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1100 <if k="surface" v="wood"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1101 <if k="surface" v="rubber"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1102
1103 <if k="surface" v="unpaved"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1104 <if k="surface" v="compacted"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1105 <if k="surface" v="fine_gravel"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1106 <if k="surface" v="gravel"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1107 <if k="surface" v="shells"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1108 <if k="surface" v="rock"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1109 <if k="surface" v="pebblestone"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1110 <if k="surface" v="ground"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1111 <if k="surface" v="dirt"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1112 <if k="surface" v="earth"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1113 <if k="surface" v="grass"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1114 <if k="surface" v="grass_paver"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1115 <if k="surface" v="metal_grid"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1116 <if k="surface" v="mud"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1117 <if k="surface" v="sand"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1118 <if k="surface" v="woodchips"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1119 <if k="surface" v="snow"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1120 <if k="surface" v="ice"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1121 <if k="surface" v="salt"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1122
1123 <!-- Other tags -->
1124
1125 <if k="surface" v="bitmac"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1126 <if k="surface" v="chipseal"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1127 <if k="surface" v="tarmac"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1128 <if k="surface" v="bricks"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1129 <if k="surface" v="brick_weave"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1130 <if k="surface" v="slabs"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1131 <if k="surface" v="boardwalk"> <set k="paved" v="yes"/> <unset k="surface"/> </if>
1132
1133 <if k="surface" v="soil"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1134 <if k="surface" v="stones"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1135 <if k="surface" v="stone"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1136 <if k="surface" v="shingle"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1137 <if k="surface" v="pebbles"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1138 <if k="surface" v="hardcore"> <set k="paved" v="no"/> <unset k="surface"/> </if>
1139
1140 <if k="surface">
1141 <logerror k="surface" message="ignoring it"/>
1142 </if>
1143
1144 </if> <!-- k="surface" -->
1145
1146 <!-- Bridges -->
1147
1148 <if k="bridge">
1149 <ifnot k="bridge" v="no">
1150 <set k="bridge" v="yes"/>
1151 </ifnot>
1152 </if>
1153
1154 <!-- Tunnels -->
1155
1156 <if k="tunnel">
1157 <ifnot k="tunnel" v="no">
1158 <set k="tunnel" v="yes"/>
1159 </ifnot>
1160 </if>
1161
1162 <!-- Roundabouts -->
1163
1164 <if k="junction" v="circular">
1165 <output k="oneway" v="yes"/>
1166 <output k="roundabout" v="yes"/>
1167 </if>
1168
1169 <if k="junction" v="roundabout">
1170 <output k="oneway" v="yes"/>
1171 <output k="roundabout" v="yes"/>
1172 </if>
1173
1174 <!-- Specific property rules (to override the default ones) -->
1175
1176 <if k="paved"> <output/> </if>
1177
1178 <if k="lanes"> <output/> </if>
1179
1180 <if k="bridge"> <output/> </if>
1181
1182 <if k="tunnel"> <output/> </if>
1183
1184 <!-- Output the restriction tags -->
1185
1186 <if k="oneway"> <output/> </if>
1187
1188 <if k="maxspeed"> <output/> </if>
1189
1190 <if k="maxweight"> <output/> </if>
1191 <if k="maxheight"> <output/> </if>
1192 <if k="maxwidth" > <output/> </if>
1193 <if k="maxlength"> <output/> </if>
1194
1195 <!-- Output the name and reference tags -->
1196
1197 <if k="name"> <output/> </if>
1198 <if k="ref" > <output/> </if>
1199 <ifnot k="ref" > <if k="prow_ref" > <output k="ref"/> </if> </ifnot>
1200
1201 <!-- Output the area tag -->
1202
1203 <if k="area"> <output/> </if>
1204
1205 </if> <!-- k="highway" -->
1206
1207 </way>
1208
1209 <!-- - - - - - - - - - - Relation rules - - - - - - - - - - -->
1210
1211 <relation>
1212
1213 <if k="type">
1214 <output/>
1215 </if>
1216
1217 <!-- Copy route relations -->
1218
1219 <if k="route">
1220
1221 <if k="route" v="foot">
1222 <output k="footroute" v="yes"/>
1223 </if>
1224
1225 <if k="route" v="walking">
1226 <output k="footroute" v="yes"/>
1227 </if>
1228
1229 <if k="route" v="hiking">
1230 <output k="footroute" v="yes"/>
1231 </if>
1232
1233 <if k="route" v="foot;bicycle">
1234 <output k="footroute" v="yes"/>
1235 <output k="bicycleroute" v="yes"/>
1236 </if>
1237
1238 <if k="route" v="bicycle;foot">
1239 <output k="footroute" v="yes"/>
1240 <output k="bicycleroute" v="yes"/>
1241 </if>
1242
1243 <if k="route" v="bicycle">
1244 <output k="bicycleroute" v="yes"/>
1245 </if>
1246
1247 </if> <!-- k="route" -->
1248
1249 <!-- Pass through turn relations -->
1250
1251 <if k="restriction">
1252 <output/>
1253 </if>
1254
1255 <if k="except">
1256
1257 <if k="except" v="bus"> <set v="psv"/> </if>
1258
1259 <if k="except">
1260 <output/>
1261 </if>
1262
1263 </if>
1264
1265 </relation>
1266
1267 </routino-tagging>

Properties

Name Value
cvs:description Default version of the Routino tag transformation rules.