Proposed features/Dynamic maxspeed

From OpenStreetMap Wiki
Jump to: navigation, search
Dynamic maxspeed
Status: Proposals without post-vote cleanup
Proposed by: Eckhart
Tagging: maxspeed:variable=[[Tag:maxspeed:variable=yes/no/<reason>|yes/no/<reason>]]
Applies to: Way
Definition: Indication that the speed of a way is not static (e.g. fixed signs) but dynamic (e.g. variable-message sign)
Rendered as:
Drafted on: 2012-10-20
RFC start: 2012-10-20
Vote start: 2015-08-25
Vote end: 2015-09-30


Dynamic speed limit

Historically, dynamic speed information has been indicated using maxspeed=signals. However, this method of tagging has its drawbacks:

  • Route calculation has no speed information to rely on, and therefore has to use road type specific defaults which may be completely wrong. E.g. in Berlin, the motorway A 100 has triprisms ( installed which are only capable of showing speeds up to 80 kmph, yet routers have to assume the German motorway default maxspeed "none".
  • For the same reason, navigation systems cannot warn the user if he is speeding (i.e. going faster than the maximum allowed speed, 80 in the case mentioned above).


key/value Description
maxspeed:variable=yes Indicates that the speed specified in maxspeed=* tagging represents a maximum speed limit and can be further reduced using dynamic speed indication.
This replaces maxspeed=signals.
maxspeed:variable=<reasons> Same meaning as above, but additionaly specifies one or more ";"-separated reasons for speed adjustment. See next section for possible values.
maxspeed:variable=no Default. Indicates that the speed specified in maxspeed=* tagging is a fixed limit.
Fixed limits can still vary depend on conditions, e.g. time of day.
Same meaning as above, however, these tags affect forward/backward direction only. If present, overrides maxspeed:variable=*

Values for <reason>

The value can provide additional information, why the speed limit is changed in the variable speed limit section. They should be observable by people frequently using the section with the variable speed limit. If the reason is not known, please use yes.

The values imply a hint about the frequency of a speed limit changes.

maxspeed:variable value Description Example
peak_traffic The speed limit is frequently lowered (from the given maxspeed) on high traffic loads during peak hours on many days of the year. Traffic management systems reduce the speed limit to optimize traffic thoughput by harmonizing the speed of the vehicles, to reduce the inflow traffic into a congested section and also for safety reasons to lower the speed before queues.

The value peak_traffic includes obstruction, adding obstruction to the value (separated by ';') is unnecessary.

Note: This value is not intended for sections with occasional traffic peaks (e.g. start of holidays, an annual concert), even if the variable speed limits is reduced in such situations too. Use obstruction instead.

M25 by Telegraph Hill - - 933597.jpg
Speed limit 40 because of dense traffic (rush hour)
weather This value indicates that the speed limit changes with the weather conditions. Most modern traffic management systems have sensors to detect wet road conditions, snow/ice or fog. The information can be used to reduce speed for increased safety.

Note: Only use maxspeed:variable=weather if the speed limit is affected by the weather, not if just warning signs are displayed.

Autobahn im Nebel 2 DSC 0010.jpg

Illustration only, variable speed limit not visible on this picture.

environment The speed limit can be reduced to protect the environment and/or nearby residents (e.g. to reduce emissions, smog or noise).

Note: This value (and maxspeed:variable in general) is not intended for permanent but e.g. time dependent speed reductions like Speedlimit120-timecondition.jpg even if they have been installed for environmental reasons (smog, noise). Use maxspeed:conditional=* instead.

A1 Feinstaub.JPG
Variable speed limit of 100, activated to reduce emissions (indicated by IG-L)
school_zone A lower speed limit is indicated due to children in nearby schools.

Note: This is not a generic tag for school zones. It only applies to school zones where the lower speed limit is changed or indicated externally (for example by switching on flashing lights or changing a digital display) and not just with static signs. For static signs with written conditions like "when children are present", "on school days" or fixed times or days (Mo-Fr, 8-16), please use maxspeed:conditional=* and do not tag it with maxspeed:variable.

Delaware S5-3-DE.svg or Speed limit sign operated from inside of school
obstruction The speed limit is lowered exceptionally in cases like accidents or breakdowns, on occasional traffic peaks (few days of year only, for example start or end of school holidays), road works or other traffic obstructions ahead.

Note: Variable speed limits in tunnels and at tunnel portals outside urban areas are candidates for maxspeed:variable=obstruction.


Here the tunnel has been completely closed due a car break down ("Panne"), the reduced variable speed limit would be 30.


  • maxspeed:variable=yes, maxspeed=80 – indicates that the maximum allowed speed is 80 kmph, however, this speed limit can be reduced further to accomodate traffic conditions
  • maxspeed:variable=yes, maxspeed=none – indicates that there is no maximum allowed speed (no legal limit!), however, the speed limit can be reduced if necessary. Normally only useful on German Autobahn.


But we already have Conditional Restrictions!

This proposal is orthogonal to Conditional restrictions. Conditional restrictions are used when the allowed speed can be calculated from inside the car, e.g. maxspeed depending on time of day, vehicle weight etc. Dynamic maxspeed can not be calculated from inside the car, it is given from outside.

Conditional restrictions and dynamic maxspeed can both apply to the same way, e.g.
maxspeed=none, maxspeed:conditional=120 @ (22:00-06:00), maxspeed:variable=yes

Current usage


Please use Talk:Proposed_features/Dynamic maxspeed for this.


  • I oppose this proposal I oppose this proposal. Not backward compatible, see talk page --HeikoE (talk) 07:24, 25 August 2015 (UTC)
  • I approve this proposal I approve this proposal. --Martinq (talk) 10:53, 25 August 2015 (UTC)
  • I approve this proposal I approve this proposal. -- Eckhart (talk) 16:26, 25 August 2015 (UTC)
  • I oppose this proposal I oppose this proposal. The proposed tags do not resolve the problems listed in the rationale. There's still no way to tag the set of speed limits, or the minimum/maximum/typical speed limit. Most supporters of this proposal use to point out that its main advantage is that we can specify reasons for variable maxspeed. But these reasons are variable as well, at least in Austria, and probably wherever variable maxspeeds exist. One user tagged myriads of Austrian motorways with maxspeed:variable=peak_traffic, but it turned out that all of them are wrong. Speed limits are reduced for numerous reasons, including not only peak traffic, but also rainfall, snow, ice, hail, fog, accidents, jams, construction sites, and wrong-way drivers. We could expand that list infinitely, so we'll end up with long semicolon-separated values that will never be complete, let alone verifyable. If we forget about reasons, this proposal offers nothing that can't already be done using standard keys. Say, maxspeed=<typical number> + either maxspeed:type=signals or source:maxspeed=signals. --Fkv (talk) 16:58, 25 August 2015 (UTC)
    • maxspeed:type=signals is not documented. I could take it to mean that the max speed is not variable. maxspeed:type has a status of "unspecified" ... not well established .. and I don't think much of its documentation. I would used maxspeed= to tag the maximum speed (at any time) and then maxspeed:variable=yes to say that it variable. If mappers want to add the main reason why the speed is variable then ok they can. To require that all possible max speeds be tagged might be an ideal .. but how is the information to be used? And rendered? Warin61 (talk) 03:33, 26 August 2015 (UTC)
You can either use maxspeed:type (which *is* well-established with 58716 uses) or source:maxspeed (602458 uses), they mean the same. I didn't say that this is the best solution, it just bears the same information using standard tags. A better solution would certainly include some variable_maximum=* (or dynamic_maximum=* as was already suggested on the talk page), variable_typical=* and variable_minimum=*. To answer your questions, this information can be used by routers (to calculate minimum, expected and maximum duration), and renderers of speed limit maps can display the speed limit range, and/or use a line color depending on the typical limit. Everything is possible. --Fkv (talk) 04:33, 26 August 2015 (UTC)
maxspeed:type is not well documented .. on the wiki other words I do not understand what it is! It appears to specify (from tag info) the source of the information used to specify the maxspeed value. It is NOT used to specify that the maxspeed is variable. I think that the maxspeed= should be the fastest speed available (thinking that good conditions may be more common than not) and that this tag be used to indicate that the maxspeed may be varied downwards to suit conditions. Warin61 (talk) 10:18, 23 September 2015 (UTC)
  • I approve this proposal I approve this proposal. --opani (talk) 17:27, 25 August 2015 (UTC)
  • I approve this proposal I approve this proposal. --Warin61 (talk) 03:33, 26 August 2015 (UTC)
  • I approve this proposal I approve this proposal. Already in common use and applies to an increasingly large number of situations the world over. I do agree that this proposal is slightly hamfisted in that there's not a way to indicate a range or a set for what possible maxspeeds are posted. This could also be potentially extended to other metrics, such as minspeed or maxweight, to paint the corners on some edge case situations. Paul Johnson (talk) 16:33, 26 August 2015 (UTC)
  • I approve this proposal I approve this proposal. --Klumbumbus (talk) 19:53, 26 August 2015 (UTC)
  • I approve this proposal I approve this proposal. -- Most tollways in Japan use this varible maxspeed with predictable values. Adding predictable values in some manner might be good. Javbw (talk) 09:49, 16 September 2015 (UTC)
  • I oppose this proposal I oppose this proposal. I support tagging variable speed limits, but not the "reasons". In schools zones near me the reason is obvious, but on our motorways speed limits may be lowered for all of the other reasons. —M!dgard [ talk ] 10:16, 16 September 2015 (UTC)
    • I would suggest to drop peak_traffic, weather and environment (and just use yes), or merge them (I don't have an idea for a value for that group though). —M!dgard [ talk ] 12:46, 16 September 2015 (UTC)
  • I approve this proposal I approve this proposal. --Sdoerr (talk) 10:27, 16 September 2015 (UTC)
  • I approve this proposal I approve this proposal. Even if we cannot document reasons for all cases, it helps to document the clear ones. --Polarbear w (talk) 11:42, 16 September 2015 (UTC)
  • I approve this proposal I approve this proposal. --Peter Mead (talk) 12:37, 16 September 2015 (UTC)
  • I approve this proposal I approve this proposal. --Penegal (talk) 06:13, 17 September 2015 (UTC)
  • I approve this proposal I approve this proposal. --Mueschel (talk) 15:34, 20 September 2015 (UTC)
  • I oppose this proposal I oppose this proposal. A driver obeying maxspeed=* should always be sure to be within legal limits. Maxspeed:variable is a trolltag in this respect. We need further development with the maxspeed prefix. --Jojo4u (talk) 08:14, 23 September 2015 (UTC)
Don't think it is possible to stay legal with the simple maxspeed=*. For example .. a variable speed limit might be 110 km/h in good conditions, but may reduce to 10 km/h in fog. If maxspeed=10 then probably illegal when the conditions are good and the variable speed limit is 110km/h. Warin61 (talk) 10:18, 23 September 2015 (UTC)
A driver must always look for signposting on the street in priority to anything the satnav shows him, e.g. when there is a temporary sign at a small construction site. Thus maxspeed=* gives the upper limit the road has, and maxspeed:variable=* helps to create additional awareness that there are frequently reduced legal limits displayed. --Polarbear w (talk) 10:37, 23 September 2015 (UTC)
Voting closed

Voting on this proposal has been closed.

It was approved with 12 votes for, 4 votes against and 0 abstentions.

More than required 74 % approval.