User:Tordanik/Conditions in values
|This proposal has been obsoleted by Proposed features/Conditional restrictions.|
This proposal lets mappers add tags that have multiple values, each of which only applies under certain conditions. Something like this is necessary to describe many traffic restrictions encountered in reality.
The proposal is an alternative to Extended conditions for access tags. It avoids special characters in keys, and only a finite number of new keys.
<basekey>:conditional = <value1> [conditionA][conditionB]; <value2> [conditionC] ...
Conditional tags use the ":conditional" suffix in the key.
The value is a semicolon-separated list of the possible values, followed by the relevant conditions (in brackets). All conditions listed for a value must be valid for this value to apply.
- hgv - heavy goods vehicles
- motorcycle - motorbikes
- (many others...)
Any vehicle category (as listed on Key:access) is a possible condition. The access tag is then only valid for vehicles from that category.
- wet - access tag is only valid when the road is wet
- forward - access tag is only valid in way direction
- backward - access tag is only valid against way direction
(Note that this is different from lane-specific information: There are ways with direction-dependent restrictions that do not have multiple lanes. There also can be multiple lanes for each direction.)
The following operators are used:
- > greater than
- < less than
The comparison values are given in the same way as values for maxweight, maxaxleload etc. Therefore, numeric values default to SI units (metres for lengths, tonnes for weights).
An access tag can be restricted to certain time intervals by using a time interval string as defined for opening_hours. The time syntax itself is not part of this proposal - it is considered desirable to use the same syntax as existing tags.
As times often contain colons (to separate hours from minutes), they will often require round brackets around the time condition.
group of users
Each group of users as listed on Key:access#Values is a possible condition.
|maxspeed = 100
maxspeed:conditional = 60 [hgv]
|Maxspeed is 100 km/h for most vehicles, but 60 km/h for hgv traffic.|
|maxspeed = 120
maxspeed:conditional = 80 [wet]
|Maxspeed is 120 km/h under normal conditions, but 80 km/h when the road is wet.|
|bicycle = yes
bicycle:conditional = no [10:00-18:00]
|Bicycles are permitted to use this street outside 10AM-6PM.|
|access:conditional = destination [weight>5.5]||Vehicles over 5.5t are only allowed for destination traffic.|
|maxspeed:conditional = 120 [hgv]; 80 [hgv][Sa,Su]||Maxspeed for hgv is limited to 80 on weekends, but 120 otherwise.|
|maxspeed = 50
maxspeed:conditional = 30 [Mo-Fr 07:00-17:00]
|Maxspeed limited to 30 on 7AM-5PM weekdays, but 50 otherwise.|
Usage and evaluation details
- More specific information overrides more general information. In particular,
- conditional values with matching conditions always override the default value, and
- conditional values with more specific matching conditions override less specific ones.
- If there are conflicting values without a "specificness" hierarchy, the most restrictive rule (e.g. lowest maxspeed) is to be chosen.