Replies: 2 comments 1 reply
-
The issue isn't really 'centreline', it's more that currently we are representing things that are spaces (namely roads etc) as lines. That inevitably leads to compromises. This issue is also discussed extensively in this talk I gave at State of the Map 2019:
I don't think we need any changes at all to the data model. The view I've come to is that the area approach should solve the problem pretty well. We need both vector lines for routing, and areas to associate those lines and provide benefits for cartography. All that's needed is to surround an existing junction with something like The Straßenraumkarte project shows what can be achieved with this approach: Having added areas around existing features, an ST_Intersects/similar -style query can then be used to pre-process data. For instance:
I think trying to associate things directly by using way ID references or relations, is doomed to failure, because it will be hard to maintain. Drawing an area does actually add additional information that we don't currently capture: highway boundaries. Highway lines represent flows, and the area represents the area in which those flows exist. This seems to me a very pure model, matching the real world well. There doesn't need to be a direct ID-based connection between the two, as ST_Intersects-based matches (well supported in databases/libraries), can achieve the same thing. The addition of areas is also backwards compatible - it needs no fundamental change to the OSM data model, and can be used immediately. It is the classic approach of 'start basic, enhance later'. I have drawn an example here. The tagging is experimental and needs to be decided on by the community, but the drawing hopefully shows the principle. You can see that all the junction features, whether highways, pavement/sidewalks, bits of concrete, trees, whatever, all of which a human sees as 'the junction', is surrounded with a simple polygon enclosing them but not formally joining them. I'm sure there will still be issues to work out like multiple levels, but I think these can be worked through. |
Beta Was this translation helpful? Give feedback.
-
SolutionsTagging
Object1,2,3. As mentioned by another above, a spatial relationship could be good enough at first. Crucially, it should be noted there's not necessarily a one-to-one area--linear correspondence. Eg a road paved with different materials across could be LanesWithout having anything to do with the application of this, I don't believe linear representation of lanes is a good idea. Lanes are in contact with each other (further requirement to relate them with each other spatially or explicitly), can cross wildly (resulting in a complex web of lines), are indicated by markings that can change or degrade easily (difficult to maintain and judge), and lead to the question of whether there will be sub-areas too. Using areas for lanes additionally (to the lane lines) or alternatively (inside the roadway area) is again very complicated, and overlaps with the roadway area (ie the question of sub-areas). Personally, I imagine drawing lane markings for to delineate lanes inside a roadway is best at first. |
Beta Was this translation helpful? Give feedback.
-
(As discussed briefly at SOTM 2022.)
OSM represents many real-world objects, particularly roads, as centrelines. This is simple, intuitive, and appropriate for most uses such as small/medium-scale cartography and routing/navigation. Usually, though, these objects exist in the real world as a significant area whose extent is not captured by a centreline.
Existing practice - areas
Rivers were the first object where the centreline/area split was tackled, very early in the history of OSM. The solution adopted was to have two objects: a centreline way (
waterway=river
) and an area way (originallywaterway=riverbank
, latterlynatural=water, water=river
). There is not usually any data linkage between the two other than that implied by geometry.In some places a similar approach has been taken for roads (e.g. Cornmarket Street, Oxford). This, however, is comparatively uncommon - in central London and Paris, for example, most roads are still bare centrelines. Highway areas are probably most commonly used for squares/piazzas and other permeable pedestrian spaces.
There is currently no widespread support for area routing nor any sign of movement towards it. Nor are the generalisation functions that would be needed to turn areas into single centrelines for small/medium-scale cartography widely available. So it looks likely that centrelines will continue to be part of the picture for years to come. Given that, in this discussion I'm aiming to identify the challenges with our centreline approach which need to be overcome.
Existing practice - "children" of centrelines
A centreline way may represent several (parallel) linear geometries. This started with attributes such as
cycleway=lane
orcycleway:left=track
, but has since evolved into distinct tagging languages such as the lanes syntax. This tagging inevitably becomes insanely complex.What's the problem?
A picture is worth a thousand words, etc.:
(location)
In reality:
Where the cycleway and the motor vehicle carriageway are physically separated, the mapper has used separate ways. This implies a diverging geometry (in this case modelled with 45° turns) that simply isn't there. In reality, the driver/cyclist simply carries on along their existing course. This is very misleading cartographically and challenging for routing.
Another extensively discussed example is "pencil-tip" intersections (see also community.osm.org).
Essentially, the centreline model breaks down at the interface between different centrelines within the same real-world object.
The "tag the children" approach tends towards the complex: as ever, difficult tagging/modelling in OSM is routinely ignored by the biggest consumers. It encourages long colon-separated tags which are complex for the mapper (particularly the newbie/casual mapper) and the consumer alike. It is inevitably limited in the fidelity of its geometries: you could potentially model that a cycleway was consistently 5m offset from a carriageway centreline with something like
cycleway:left:offset=5
, but not much more than that.Solutions
Well, if I knew the solution I wouldn't be here ;)
Is this a data model issue? It might be! Or it might not!
Certainly some of the issues could be ameliorated with tagging. For example, adding a tag such as
junction=diverge
at the diverge points in the first pictured example could be a hint to the router that this is not a real 45° turn as modelled in the geometry. I fear however that this may be piling kludge upon kludge.It could be possible to model the relationship between centreline(s) and their enclosing area. This could be done in several ways:
area
andcentreline
roles1<way id="12345" enclosed_by="56789">
, where way 12345 is the centreline (or one of several centrelines) and way 56789 is the enclosing areahighway=primary
) and identifying tags (e.g.name
andref
)A similar approach might apply to "child" centrelines, e.g. lanes within a road, allowing them to be mapped as discrete lane geometries rather than requiring a complex tagging language.
Or there might be other ideas!
Footnotes
I'm personally sceptical of this approach: relations are for metadata, not geometries. Multipolygon relations were a major error in the evolution of OSM I wouldn't like to repeat. But other opinions are available! ↩
Beta Was this translation helpful? Give feedback.
All reactions