I’ve been thinking too much about pavements recently..
Has anyone proposed/implemented/attempted anything along the lines of a “complex way” or a “way array” in OpenStreetMap (or outside of it)? I’ll explain what I mean.
So currently we have nodes and ways. When we draw one road, we either give it one way (with tags), or we give it one way per carriageway and/or cycle track and/or “sidewalk”. The former is a very limited abstraction, but the latter does not have any context for how it is related to other nearby ways. So e.g. if you have two sidewalks alongside a carriageway, there is no inherent relationship between those ways.
Instead, imagine we created a single way along a road’s centre line, and then added 1-dimensional “ways” that are always positioned relative to the centre line. Something like this:
When you move the dotted centre line, the component ways move around with them - but otherwise the component ways act like normal ways and can be joined up to other normal ways. The important thing is that, to a router, it’s not on any of the component ways - instead it’s on a single, complex way, with a number indicating it’s position (in this case, -2 to +2). The tags that it respects are a combination of the way tags and the component way tags, and so long as those tags allow it, it can “jump” to another way.
Here’s a more complex example:
Here the lanes are mapped separately (something we don’t currently do, but here it’s easy) and the kerb is also mapped. The kerb would have a traversal tag, which defined who could cross (foot=yes, wheelchair=no, etc etc). And of course you’d tell a router that it can cross a kerb but not travel along it (although..). You could also add fences or even lane markers as ways that can (like kerbs) be given traversal rules.
Doing this in current OSM would probably require tag “overloading” e.g. 1:highway=trunk, 2:highway=footway, and wouldn’t be useful unless routers and renderers knew what the numbers at the beginning of the tags were
Anyway, this has been in my head for a while. Has anyone else proposed/tried something like this?


