Proposed features/Access restrictions

From OpenStreetMap Wiki
Jump to: navigation, search
Access restrictions
Status: Draft (under way)
Proposed by: Eimai
Tagging: <key>=<value>
Applies to: node/way/area
Definition: <definition>
Rendered as: <appearance>
Draft start:
RFC start: *
Vote start: *
Vote end: *

Add things to this page as you wish, this page is in "brainstorming mode".

Contents

Rationale

The current way of creating access restrictions does not allow for more complex restrictions. Since the scheme is not easily extendable, we need to completely rethink this. A first effort was made with the access name space, however it's not good enough to tag more complex restrictions.

Applies to

Working method

I'm not writing down a proposed tagging scheme yet. We first need to investigate current problems, possible solutions and things to keep in mind.

I understand that this will not be an easy task, and I'd like to see a lot of input while creating a tagging scheme, so that at the end of this, we can have a clean and unambiguous tagging scheme that can really apply practically everywhere.

We might need to split up the proposals for new tagging schemes to keep things manageable for voting etc. I see this division: (first one being most important one, the others could be split to separate proposals).

Since we need to keep the last items in mind to come up with a good tagging scheme, we keep it on this page for now.

Issues

Issues with proposed access namespace

hgv=destination + hgv:maxweight:3.5=yes or
hgv=no + hgv:minweight:3.5=destination
access:weekday:friday=destination
Both last are IMHO a very bad solution, putting data in the keys to make it bi-dimmensionnal is suicide, we almost won't be able to compute statistics, or make research on a database. At the extrem limit, I will find something like access:hgv:minweight=friday,destination a litter better, but hardly. I'm on the talk page, time for logic (A AND B OR C) AND K Sletuffe 17:30, 22 November 2008 (UTC)


For different directions: access=destination + access:backward=no
(For different lanes not yet.)

Problems we face

Possible solutions we need to look into

I don't see that happening. Sure, it could solve some things, but it's common to only separate roads when they're also separated in real life (i.e. dual carriageways for example). Also, not all roads have lanes, so restrictions in one way can still apply even though there are no lanes painted on the road, so different ways for each lane doesn't solve that. Different ways for each lane would also introduce more problems, like routing issues. --Eimai 14:15, 8 July 2008 (UTC)

Some thoughts on Relations

Aren't relations basicially to define (as the name says) relations between several objects, rather than just use them to group tags together logically? There would be other possibilities to do this (apart from a api change), like inventing a special syntax for the grouping of tags. For example: access[1]=destination, access[1]:maxweight=3.5 that restricts vehicles that weight more than 3.5t to enter, unless their destination is there.

But let's say we use relations. How many objects should be able to be a member of a single access-relation? Just one connected part that has the access-restriction or maybe several in the same area, to save the effort of creating more relations? Theoretically we could have one relation for all "3.5t except destination" cases, but that might not be very easy to manage.

Relations might be a solution to more complex access-restrictions since they can nicely group tags together. Though other possible solutions should also be considered. Also if relations are more widely used, editors might provide presets for certain cases to make adding relations easier than it is now. --Driver2 23:54, 22 September 2008 (UTC)

The big advantage relations have IMHO is that if the restriction applies to many ways you don't need the same list of tags on all the ways (you can easily make errors with that). However, your access[] looks alright, but I think it might have issues when it gets translated to things like OSM_Mobile_Binary_Protocol. It also adds a layer of error possibilities when you have the numbering wrong, and in effect does the same as the relation: grouping tags together, except you can't share them over more than one way without duplicating. Relations basically shouldn't be seen as "this complex thing" IMHO, as many seem to think. We just need some good editor support. --Eimai 15:15, 23 September 2008 (UTC)
I think relations are seen as complicated because of a lack of well organized documentation. It's the same with many other topics. There are lots of pages concernig the same or similiar topic, but often containing contradictory or old information. Many pages are well done, but in a whole it's not easy to find something on the wiki, even if you've seen it once before. --Driver2 19:37, 23 September 2008 (UTC)

Mixture of solutions

I don't think it is practical to change the current tag structure, since people are already used to it. So the way to go would be a mixture of solutions (as you already mentioned in some way I think):

(I hope I don't annoy you by filling your page with crap, but I find this topic pretty important.) --Driver2 23:36, 23 September 2008 (UTC)

I've always said we need to keep the tags we have (although we need to formally define them somehow as they leave way too much room for ambiguities right now). Then we may need a not-too-complicated way of doing things like my bicycle:oneway=no, and then relations for something which can't be done with simpler methods, or for when the access rule spans several ways. --Eimai 12:10, 24 September 2008 (UTC)
Your bicycle:oneway=no tag is a good idea, but we should think about how to get easy parse-able tags. A routing tool interested in access restrictions should do a simple search-request on "access" and than parse the structured results. I think some thing like access=general:horse:no; oneway:yes; oneway:bicycle:no could be a better solution. The current api would us allow to store these three values in three seperate access tags, but it is planed to remove this feature. See API v0.6#Related_database_improvements! If a user simply tags oneway=yes a database-fixbot, the api or the mapping-software could replace it by a access=oneway:yes --Phobie 04:52, 28 November 2008 (UTC)
You here speak about a broader problem, which will persist as long as we don't tag highway=cyclelane seperately from the highway=street. bicycle:oneway|no or a similar key is definitely needed as long as cyclelanes are tagged on the same polyline as other highways. The same question will come up for turning restrictions (often a bicycle user might decide to take the footwalk to cross the street, where cars are not allowed to turn left (on european, not english streets). While I can implement this into mkgmap, it is impossible to parse this with mkgmap access=general:horse:no; oneway:yes; oneway:bicycle:no. Any routing tool interested in bicyclerouting, will have to be setup having a look at much more pecularities. I think any additional value will be one more line in the rendering rules, and it doesn't really matter what the name is, as long as it is included to rendering rules.--Extremecarver 10:11, 28 November 2008 (UTC)

Types of access restrictions

...

specifically for parkings:

Vehicle types

...

We perhaps need subsets of vehicle types: psv={bus,taxi,tram}, all_vehicles, motorized_vehicles... Countries need to have freedom creating their own vehicle types or discarding some depending on their own traffic law (e.g. "hgv" as a synonym for "goods", or different moped types).

Agreed. I composed the following list based on the German list of vehicle types. Descriptions and hierarchy might be different in other countries, depending on the local law. At the moment, the DE:Key:access page (as well as Key:access) only provides a plane list, that doesn't represent the type subsets or groups that are necessary and also already in use in some way or another (access for general permission, motorcar for all multi-track vehicles). More specific rules should always override generic rules (e.g. vehicle=no, bicycle=yes naturally allows bicycles). --Driver2 12:44, 12 October 2008 (UTC)
Currently your example should be tagged as access=no, bicycle=yes! I would propose something like access=default:no;bicycle:yes. --Phobie 07:01, 28 November 2008 (UTC)
No. vehicle=no only forbids vehicles, while access=no forbids everything. --Driver2 15:10, 28 November 2008 (UTC)
We definitely need grouping, see my Proposed features/Any moving thing grouping system and also Eimai's Talk:Vehicle_types#Vehicles_as_defined_by_Belgian_law or else we will definitely be drawn under hundreds of tags, and we will also remove some "unclarity" Sletuffe 17:23, 22 November 2008 (UTC)


Brainstorming

What's needed in an access restriction?

Issues

Importance numbers

I'm getting confused on a proper importance number for the oneway=yes vs the tags like bicycle=*. Should oneway=yes be more important? Then we cannot get bicycles allowed in two directions on a road without using relations to specify a bigger importance number.

On the other hand, we could make bicycle=* more important. In that case a oneway road that allows bicycles in two directions would be: oneway=yes; bicycle=yes.

We could special case the bicycle=twoway of course, but that's ugly...

Doesn't bicycle=yes just mean that bicycles are allowed on a street? It doesn't have to do anything with oneway? --Driver2 19:43, 23 September 2008 (UTC)
Depends on how you define the tags. Right now it isn't defined so everyone's interpretation is right. --Eimai 20:09, 23 September 2008 (UTC)

I've now started using bicycle:oneway=no on a oneway street. --Eimai 20:09, 23 September 2008 (UTC)

Why not oneway:bicycle=no? The 'no' refers to the 'oneway', does it not? In that case to go conform with already used tags like name:en=* the right way would be to set 'oneway' to 'no' for the parameter 'bicycle' (the same as in setting the 'name' to something for the parameter 'en'). Unless I understand something wrong of course. I find this stuff quite complicated. --Driver2 23:06, 23 September 2008 (UTC)
I switched from oneway:bicycle=no to bicycle:oneway=no after tagging two streets with the first one: somehow it felt more natural that I was defining access rules for bicycles, that the important one should be in front. But yes, it depends on how you look at it. --Eimai 12:12, 24 September 2008 (UTC)

Concerning importance: I think the more specified rule should always override the generic ones. For example access=no restricts access for all types, but is overwritten to allow bicycles by bicycle=yes. Since maxweight=* also applies to alle types (unless we use something like maxweight:type=*), it should also be possible to override it with more specific rules, but only of the same restriction-type. For example maxweight=3.5, motorcar=yes would not allow motorcars to pass whatever weight they have, but still disallow all vehicles weighting more than 3.5 tons. To disable weight restrictions for motorcars, one would have to use maxweight:motorcar=no. Since it depends on the properties of the types whether maxweight=* applies to them, it is hard to define a fixed position in the hierarchy of types (unlike access=* that always applies to all types). --Driver2 16:30, 6 October 2008 (UTC)

Country specific rules

It's naive to think the whole world can use the same set of access rules. We need a way to let each country define specific access rules, to solve things like:

In practice, this needs:

Are you excluding pedestrians completely? You always talk about vehicle types. --Driver2 23:12, 23 September 2008 (UTC)

Here is my thought about country specific rules Sletuffe 18:59, 22 November 2008 (UTC)

Trying to map existing tags to the list above

access=destination

bicycle=yes

oneway=yes

maxweight=3.5 tons

maxspeed=50


More complex

No entry for goods vehicles over 3.5 tons except destination traffic

Only buses of company X allowed access=no plus:

A path where pedestrians and bicycles are allowed, but bicycles aren't allowed on Sunday. highway=cycleway plus:

Oneway road where buses can go both ways (depends on the exact definition of oneway=yes) oneway=yes plus:

(we could add a new restriction value access=twoway perhaps, so it becomes oneway=yes, bus=twoway)

No parking allowed for vehicles with maximum allowed weight over 3.5 tons alongside a road

Low emission zone


Maximum speed in right lane on a three lane road is 50 instead of default speed

Maximum speed in all lanes 130km/h, minimum speed in outside lane 110km/h, maximum speed in poor conditions 80km/h, maximum speed for HGVs/PSV/vehicles with trailers 100km/h

School zone: Maximum speed 30km/h, monday to friday, 7:00 to 9:00, 11:00 to 14:00, 16:00 to 19:00 for next 200m

for the time period i would use opening_hours a tag wich was intended for POIs, but voted ok to apply to ways. i think time restrictions are best aproached with the syntax of that tag as is more flexible, does not make it complex when case is not. and can solve most, if not all: month-monthday-weekday-hour-minute restrictions. If every one agrees i would use that even if some modification of the tag opening_hours is needed.--Sergionaranja 16:45, 1 July 2008 (UTC)
we can borrow the syntax indeed for a new tag in the relation scheme, and keep opening_hours tag on ways for easy situations. --Eimai 17:07, 1 July 2008 (UTC)

Cycleway access allowed for cycles, other vehicles must give way to cycles and can only enter the cycleway for access to adjacent buildings vehicle type: non-cycles restriction: access only, must give way

Deriving a good syntax...

A access restriction could have these tags: (tags and syntax should be defined for each) (obviously most access relations will have very few of these tags)

To list the vehicles to which it applies (default = all vehicles)

What is maximum_allowed_weight=+3.5tons supposed to mean? It sounds more like a restriction, than a property of a vehicle. Wouldn't it be better to either have maxweight=* and minweight=* (could confuse people since they are also shortcuts for restrictions) or weight=* with ">" and "<" or "+" and "-" to define wheather the vehicle weighs more or less than the given value (maybe that's what you meant by "+"?). weight=* is probably easier to understand. The same could be used for height, length and weight per axle (as already in the list, if it was meant that way). --Driver2 13:07, 12 October 2008 (UTC)
As I wrote it there it'd mean that the access restriction (say for example: no access except for loading and unloading) only applies to vehicles that have a maximum allowed weight over 3.5 tons (note that it's a different concept than the weight tag above). I agree the syntax is confusing with other tags like maxweight, but in at least Belgian traffic rules some weight restrictions (no access over 3.5 tons) apply to vehicles that have a total weight over 3.5 tons at that specific time, while others (no parking over 3.5 tons) apply to how much the vehicle is allowed to weigh (i.e. the weight it would have on full load). I couldn't find a better wording for the latter than "maximum allowed weight" (which is a direct translation of how it's described in Belgian traffic law). --Eimai 13:32, 12 October 2008 (UTC)
Now that you say it, I think we have a similiar rule in Germany, here it's called "maximales zulässiges Gesamtgewicht" (your maximum allowed weight) and "tatsächliches Gewicht". maximum_allowed_weight=+3.5tons is usually represented by hgv=* here. So if I understand it correctly, you did mean "3.5 tons and above" by using "+"? --Driver2 13:56, 12 October 2008 (UTC)
Yes, the "+" meant "anything above", could be a ">" perhaps. As said, I don't find the syntax for it optimal but I don't know an easy solution. Representing it with "hgv" isn't exactly an option since the maximum weight can vary a lot. --Eimai 15:49, 12 October 2008 (UTC)

The restriction:

The exact lane(s) or direction where it applies: (default: everywhere on the piece of road with this relation)

The period when it applies: (default: all the time)

Importance of this rule (to override rules of lower importance) (default would be 0)

Group restrictions

Unless I've missed it up above (which is quite possible), access restrictions need to be grouped. I have two suggestions on how to do it. These are done using an XML syntax.

  1. Nesting
<access=yes>
<restrictions appear here&lt
</access>
<access=no>
<restrictions appear here&lt
</access>
  1. Numbered
access=bicycle,foot
access_1=no
date_on_1=****-04-01
date_off_1=***-09-01
note_1=No motorized traffic 1 Apr - 1 Sep

The advantage of the first one is that it doesn't require numbering, but it is unconventional and would require redesigning some of the editors. The second one would require more work by the editors (but that's what we're doing anyway), but would not require redesigning. Either way, as soon as there is a restrictive access tag, it is assumed that anything not listed in any of the access tags is not allowed. If the other things are allowed, then some sort of date_on/off is used. I maybe the "access_1=no" should be "access_1=yes" What do you think? — Val42 17:57, 27 September 2008 (UTC)

One of the possible solutions to group access-restrictions was to use relations. Relations have the advantage of properly seperating the restriction group and the rest of the tags. They also make it possible to add several ways to one access-restriction, instead of adding the tags to every way separately. --Driver2 19:10, 27 September 2008 (UTC)

Roads closed in winter

In French mountains, there are roads that are closed in winter, but at dates that depend on the weather. Basically, once it snows too much the authorities stop ploughing the road.

Proposed:

access:winter=no

Maybe we should have indications of the closure dates to be expected? This should prevent, for instance, routing a car through a pass that's always closed in January. How about expected_winter_start=... and expected_winter_end=... ?

Some of these roads are converted into ski tracks during the winter. Proposal:

ski:winter=permissive

Submarine 12:44, 19 January 2011 (UTC)

See Key:winter_road

Personal tools
Namespaces
Variants
Actions
site
Toolbox