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).
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
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.
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”
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)
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.
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.
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
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.
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.
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)
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.
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.