Hi all,
The values of highway=*
have always been a big debate subject all around the world. Every country has its own classification or interpretation and oftentimes there are edit wars or endless discussions about what to base the value of highway=*
on.
To me, it seems like it’s all been caused by the ambiguity of the tags’ names, e.g. I feel like almost only English-speakers could understand what ‘trunk’ means in the context of roads and don’t even get me started on highway=unclassified
.
It’s clear that a rework is much needed but we’ve gone too far and every renderer or router relies heavily on the highway=*
key and its values.
What’s interesting to me is that railways have not followed the same path and instead managed to be their own thing with the value of railway=*
actually being dependent on the type of rail (yes, it’s not perfect, but better in every way compared to highway=*
).
To still have the information about the importance of the railway, some countries like France started using the proposed importance=*
key.
This made me think: “what if highways worked similar to railways?” and eventually I made a conceptual table listing how I would change every interpretation of specific highway=*
values. (Ignore the Paths section, I know it’s far from perfect and it’s not related to this discussion.)
Because I tried to make them like railways, highway=road
is used, modeled after railway=rail
combined with the wide usage of service=*
that no longer requires highway=service
.
The other main point of focus is of course the importance=*
to replace the current values of highway=*
which have obviously diverged far from the original intention.
However, there are some problems with the importance=*
key which include:
importance=international
works quite well in Europe but e.g. in the US, it’s probably not appropriate to call an East-West road of international importance, so the meaning would have to be adjusted- the values signifying lesser importance, e.g. on country or municipality level, are hard to have one value to be consistent among all countries and continents when local governments are called by different names. I tried to make it follow the values of
place=*
but today these are rarely used andadmin_level
has taken their place.
One major usage of the highway=*
values is the fact that routers treat it as a replacement to tags like smoothness
or maxspeed
when they haven’t been specified. If still not enough roads have had these tags filled in, importance=*
should take that place. If that still would lead to some problems, I though that something along the lines of grade=*
, inspired by tracktype=*
could be used, if absolutely necessary.
To explain other stuff in the table:
motorway=yes
would replacehighway=motorway
, as defined locally.expressway=yes
would replace what some countries tag ashighway=trunk
to describe roads of high quality, often access-controlled.- I’ve seen some people say
highway=unclassified
is just likehighway=residential
but not in residential areas and others say it’s anotherhighway=*
value of importance betweentertiary
andresidential
. I’m not here to argue which interpretation is correct but to propose an alternative:abutters=*
should be used to describe the surroundings and a dedicatedimportance=*
value is created. - Highway
_link
s are being replaced by a dedicatedservice=*
value, similar to how it is with railways. In the table, I proposed two separate values being=ramp
and=slip
(or=sliproad
). Now, I know Wikipedia treats them as one and the same, just one is used in America and the other in the UK, but I believe there is a difference and it would be useful to keep the distinction. I view ramps as being part of grade-separated junctions and slip lanes are usually 90-degree turns that avoid an at-grade junction. - The other thing about highway
_link
s is that currently we use the value of the road that’s higher in the hierarchy. Personally, I never understood that because it then doesn’t give information about the importance of the ramp. With the use ofimportance=*
, it does mean that usually the lower importance is used. - With the exception of
living_street
and path-related features, all otherhighway=*
values that describe roads are replaced withservice=*
. I thought about the best treatment for each of these but in the end all of them got moved to theservice=*
key. - The current
highway=service
needs to find new, specific values ofservice=*
for each of the uses.
Now, realistically this has a zero chance of being implemented. Simply because of the sheer scale of the proposal which causes never-ending opposition because of some details and, of course, because every software app works on these tags and would break entirely if all roads got tagged as highway=road
.
Instead, I want to ask if, once the quirks get fixed up, could we start double-tagging importance=*
on roads? My proposition does use highway=road
for every road but adding the other keys wouldn’t break anything. This means that there could be local semi-automated edits everywhere across the globe where e.g. all highway=primary
roads in a certain country or region get the importance=national
tag, to accurately represent current classification. Then, renderers that like to be up to date, could render roads based the importance=*
key and if that key is missing, then it should render it from the highway=*
key as normal. Ideally, the usage spreads all across the world and, in many many years, if enough roads have this tag and software adapts, we could finally ditch the weird values of highway=*
and turn them all into highway=road
instead. After that happens, validators in OSM editors should point out as an error when roads have neither have an importance=*
nor a service=*
tag to avoid making “bland” roads too easily.
I invite everyone to discussion about the proposition from the last paragraph, the desirable values for importance=*
and perhaps about the table.