Hi there,

on 
http://wiki.openstreetmap.org/wiki/Proposed_features/Value_separator#Comment, 
we’ve been discussing a bit about how to tag different things that co-exist in 
one node, way or area. As I’m rather new to the mailing-list, I was wondering 
if there was already a proposed solution for this, at least I haven’t found 
anything on the Wiki so far.

The problem I am seeing is that there seems to be no way to define a 
relationship between single tags of a way or a node. Here are some examples 
that I have recently experienced problems with:

1. Different things in one node or area have different opening hours. For 
example, there are multiple shops with different opening hours on different 
floors of a building. Or an ATM in the entrance hall of a bank, the ATM being 
opened at different hours than the bank itself. Or a recycling container where 
you are allowed to put in paper and glass, but glass only at certain hours to 
avoid being too loud. At the moment, you have to create two different nodes 
next to each other, which does not always represent the real situation.

2. A restriction only applies for a specified class of vehicles. At the moment, 
only access restrictions are taggable, but there are also streets where speed 
limits apply only to HGVs for example, or agricultural vehicles are excepted 
from a weight limit.

3. A restriction only applies in one direction of the way. At the moment, only 
access restrictions (one-way road) and the exception of bicycles are taggable. 
Very often though, a speed limit applies for only one direction. Or a way is 
only a designated cyclepath in one direction. Or a weight limit only applies 
when entering a road from one direction, on the other side the sign is missing.

4. A combination of the above. For example a speed limit that is different 
depending on the vehicle and on the time. On the Autobahn 8, there is a segment 
with a speed limit of 120 km/h from 6 o’clock until 20 o’clock. From 22 o’clock 
to 6 o’clock though, there is a limit of 100 km/h for all vehicles and a limit 
of 60 km/h for HGVs. Currently, the hour_on and hour_off tags are very 
inflexible, so this complicated speed-limit is untaggable at the moment.

5. A road has a pavement on both sides, but the pavements have different 
surfaces. Although I think in this case relations for the sidewalks would be an 
even better solution, connecting tags could at least avoid weird tag-namespace 
combinations such as “footway:left:surface” where nobody can be sure in which 
order these colon-separated tags should be used.

My suggestion to solve these problems would include three main changes:

1. Use “tag arrays”. Tags with the same index are connected to each other, for 
example an ATM with different opening hours than the bank:
* amenity[0]=bank
* opening_hours[0]=Mo-Fr 09:00-16:00
* amenity[1]=atm
* opening_hours[1]=Mo-Su 06:00-22:00
* name=Deutsche Bank
It could either be defined that tags with no index are connected to all array 
indexes (so both the ATM and the bank are called “Deutsche Bank”) or they get 
the index 0 automatically (so in this case only the bank would be called 
“Deutsche Bank”). Both would not influence the current tagging practice.
Of course the syntax could look different, for example “amenity:0” instead of 
“amenity[0]” or something else.

2. Introduce a new tag called “for” or different. It defines to which types of 
vehicles the other tags of the array index apply. The example from the Autobahn 
8 from above:
* maxspeed[0]=120
* hour_on[0]=6
* hour_off[0]=20
* maxspeed[1]=100
* hour_on[1]=22
* hour_off[1]=6
* maxspeed[2]=60
* hour_on[2]=22
* hour_off[2]=6
* for[2]=hgv
This would (could) deprecate the whole set of access restriction tags that 
exist at the moment, a road that is not to be accessed by HGVs would be tagged 
as:
* access[0]=no
* for[0]=hgv
Or a cyclepath could be:
* access[0]=designated
* for[0]=bicycle
* access[1]=yes
* for[1]=foot
* access[2]=no
* for[2]=motor_vehicle

3. Introduce a tag called “direction” or similar. The direction tag should 
define that the tags with its array index should apply only in one direction. 
Different speed limits in different directions could look this way:
* maxspeed[0]=100
* direction[0]=1
* maxspeed[1]=70
* direction[1]=-1
A one-way road with both-way access to cyclists would be tagged this way (which 
could make the oneway tag and any additional bicycle exception tags obsolete):
* vehicle[0]=no
* for[0]=motor_vehicle
* direction[0]=1
This could possibly also be used for roads that have different names in 
different directions, but in that case I would suggest using relations, as 
things can get complicated when you combine different names of a road with 
different restrictions.
As “vehicle=no,direction=1” tagging could confuse users, I would suggest 
keeping the oneway tag as a more readable alternative for simple one-way roads.


I think this could solve a whole bunch of problems, in fact it is the only way 
I can think of that can solve some of the cases I mentioned above. Has anything 
like this already been discussed anywhere? Can anyone think of a case where my 
proposal could not be used to tag the relation between tags?


-- 
Candid Dauth
Rotbachstr. 9
88433 Schemmerhofen-Ingerkingen
Germany

http://cdauth.de/
mailto:[email protected]

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
talk mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/talk

Reply via email to