When to use maxspeed:type, zone:maxspeed or source:maxspeed?

I’m just wondering when to use which key?

Aren’t they extremely redundant?

I see the difference of zone:traffic: It is not saying anything about maxspeed. But the others?

edit. add no of use

1 Like

maxspeed:type == source:maxspeed
In general those are indeed used to represent the same. It indicates how the maxspeed is determined. E.g. by a sign, or because it is the default speed limit of a rural road. I personally prefer source:maxspeed. Although I generally don’t use this tag.

zone:maxspeed
Can be used to indicate maxspeed zones. I don’t see the benefit, as that can be indicated by source:maxspeed as well.

zone:traffic
Used to indicate certain traffic zones, e.g. built-up area (zone:traffic=*:urban). As in a lot of countries different rules apply to these kind of zones (speed limits being one of them), tagging this can be beneficial.

So you are quite right, except the last and maybe one of the first two, they are pretty redundant (imo).

2 Likes

I guess the difference between maxspeed:type and source:maxspeed is:
source:maxspeed is meta data and explains the source of the maxspeed value
while maxspeed:type should be used instead of a numerical maxspeed value.

maxspeed:type=DE:rural is intended to be automaticaly looked up as
maxspeed=100, source:maxspeed=DE:rural

and

maxspeed=RO:urban should be better written as maxspeed:type=RO:urban

4 Likes
If maxspeed:type = DE:rural + oneway = yes OR maxspeed:type = DE:rural + lanes >= 4:

maxspeed:advisory = 130
maxspeed:conditional = 80 @ (trailer)
maxspeed:conditional = 80 @ (maxweightrating>3.5)
maxspeed:conditional = 60 @ (maxweightrating>7.5)
maxspeed:motorhome:advisory = 130
maxspeed:motorhome:conditional = 80 @ (trailer)
maxspeed:motorhome:conditional = 60 @ (maxweightrating>7.5)
maxspeed:bus = 80
maxspeed:bus:conditional = 60 @ (maxweightrating>7.5)
maxspeed:hgv = 80
maxspeed:hgv:conditional = 60 @ (maxweightrating>7.5)

Else:

maxspeed = 100
maxspeed:conditional = 80 @ (trailer)
maxspeed:conditional = 80 @ (maxweightrating>3.5)
maxspeed:conditional = 60 @ (maxweightrating>7.5)
maxspeed:motorhome = 100
maxspeed:motorhome:conditional = 80 @ (trailer)
maxspeed:motorhome:conditional = 60 @ (maxweightrating>7.5)
maxspeed:bus = 80
maxspeed:bus:conditional = 60 @ (maxweightrating>7.5)
maxspeed:hgv = 80
maxspeed:hgv:conditional = 60 @ (maxweightrating>7.5)

https://wiki.openstreetmap.org/wiki/Default_speed_limits

2 Likes

In this video, @westnordost also addresses the different tags:

1 Like

zone:maxspeed=DE:30 implies much more than just maxspeed=30. It also implies, for example, that there are no cycleways (which must be used) and that the right-of-way rule “right before left” applies. And it implies traffic:zone=DE:urban.

1 Like

The point was, you can also tag maxspeed:type=DE:zone30.

and also source:maxspeed = DE:zone30 and these all mean the same.

and also source:maxspeed = DE:zone30 and these all mean the same.

yes, basically we introduced source:maxspeed in 2009 and since then some people thought it would be helpful to use the same system with different keys, this is why we now have 2-3 “standards”

1 Like

Let’s have an example (e.g. Germany):
These are the default values in Germany for normal cars:
DE:motorway = nolimit
DE:rural = 100
DE:urban = 50
DE:zone30 = 30

What is the best way to tag these road types?

motorway (no limit):
highway=motorway (no explizit maxspeed and traffic zone needed)

rural street (no signs):
maxspeed:type=DE:rural (this may include zone:traffic=DE:rural)

rural street (sign 70):
maxspeed=70
source:maxspeed=sign (same as maxspeed:type=sign)
zone:traffic=DE:rural

urban street (no Signs):
maxspeed:type=DE:urban (this may include zone:traffic=DE:urban)

urban street (30 sign):
maxspeed=30
source:maxspeed=sign (same as maxspeed:type=sign)
zone:traffic=DE:urban

urban street (zone30):
maxspeed:type=DE:zone30 (this may include maxspeed=30, zone:maxspeed=DE:30 and zone:traffic:DE:rural)

living_street:
highway=living_street (no explizit maxspeed and traffic zone needed)

1 Like

No need to link that old forum topic. This page contains the newest data and it is linkable. E.g. German motorways:

https://westnordost.github.io/osm-legal-default-speeds/#tags=highway%3Dmotorway&cc=DE

In particular, I think specifically the post from me you cited is actually incorrect. I read the German legislation again and (either it was changed or) it looks like I misread it the first time around: For the famous “no speed limit” to apply, it actually needs to be classified as a motorway.

2 Likes

Looks fine to me.

source:maxspeed=DE:motorway may look superfluous but as there is no other tag to denote that there is simply no sign (e.g. maxspeed:signed=no has miniscule usage), this is the way to go currently.

2 Likes

Hm… I found some errors in there already:
source:maxspeed=DE:urban does not imply maxspeed=50. At least not for bicycles, pedestrians or horses. This should be maxspeed:motor_vehicle=50, but I guess that’s not a widely known fact and highly irrelevant most of the time anyway :laughing:

Please dont - I dont see ANY of those as a replacement for maxspeed= … The issue with replacing maxspeed itself is that you put the burdon of determining the correct maxspeed down to the data consumers which is VERY hard anyway already. And every now and then a mapper invents a new value and breaks hundrets of data consumers. Make it easy for everyone.
So a sign-posted speed limit should be in maxspeed and the type/source/origin of legal limit should be in additional tags - whatever you call it.

Data validators then may use the possible redundancy in the information to make a guess how trustworthy the information is.

So maxspeed:type=DE:urban and maxspeed=30 seems obviously wrong.

Flo
PS: And dont confuse the signposted maxspeed with any vehicle type limitations e.g. trailer, lorry, bus whatever. Those are a completely different issues.

2 Likes

This is completely missleading. There is no seperate sign posting for Busses, Lorrys, Trailers e.g. So we shouldnt map it. Whereas an Urban maxspeed is signposted on entry like a Zone 30 or something is signposted.

I know that there are people who try to drag in this extra complexity in EVERY maxspeed discussion but these are VEHICLE type induced maxspeeds, not ones signposted.

As we map ground truth and not vehicle registration based law these should possibly exist in Data Consumers/Navigational devices, but have no reason to exist in map data unless explicitly signposted.

Flo

1 Like

O.k. now I see, it is allowed to put non numerical values into maxspeed. Then my example looks like this and I do not need zone:maxspeed and maxspeed:type at all.

rural street (no signs):
maxspeed=DE:rural (this may include zone:traffic=DE:rural)

rural street (sign 70):
maxspeed=70
source:maxspeed=sign
zone:traffic=DE:rural

urban street (no Signs):
maxspeed=DE:urban (this may include zone:traffic=DE:urban)

urban street (30 sign):
maxspeed=30
source:maxspeed=sign
zone:traffic=DE:urban

urban street (zone30):
maxspeed=DE:zone30 (this may include maxspeed=30, zone:traffic:DE:rural)

@flohoff I’m not sure what you wanted to express? I should always give the numerical value or I should not leave maxspeed empty?

Maxspeed should ALWAYS be numerical (Possibly with unit like kph mph). Everyone can deal with that without having ANY knowledge about the legal system, zones whatever issue in that country, county or state is.

The issue is - when you rely on :type source: or zone: :zone needs to be parsed EVERY data consumer needs to implement the legal system of every country/state/county worldwide in code. That is very prone
to errors.

Flo

6 Likes

I’d say go with the numeric ones, although, as already mentioned, most people will just put maxspeed=50 to DE urban areas, when it’s, in fact, maxspeed:motor_vehicle=50. I’d find numeric value, plus a source reference easiest to deal with and fix later on.

That the StVO mentions “Kraftfahrtzeuge” instead of “Fahrzeuge” is IMHO just an oversight of the Authors as they assumed that Bicycles would not be able to go that fast.

So nitpicking on that repeatly is not helping.

Flo