a-b-street/abstreet

LTN: option to make segment more car friendly

XioNoX opened this issue · 4 comments

A bit similar to #1029 but it's not actually a bug,

In my city there is a transit road that have a small "living street" section: https://www.openstreetmap.org/way/462948349

Screenshot from 2023-08-22 21-21-16

Because of that, routing skips it fully and offload traffic to another street further away, which is not what local drivers do.

Screenshot from 2023-08-22 21-31-20
Screenshot from 2023-08-22 21-37-27

Not sure what the best way to improve it is, but maybe add a button like "speed limits" to temporarily make it "car friendly" so simulations are more accurate.
More complex fix might be to ignore such usecase when a stretch of "living street" is alone on a larger road.

Thanks

Hmm, this might be a tricky one. living_street is currently interpreted to set access restrictions:

} else if self.osm_tags.is(osm::HIGHWAY, "living_street") {

This causes a small little Zone to get created around this chunk of street.
That in turn gets heavily penalized in the pathfinding:
/// Heavily penalize crossing into an access-restricted zone that doesn't allow this mode.

The motivation is that pathfinding to this street should be possible, but heavily penalized, so that only trips starting/ending there do it, and there's no through-traffic. All of this pathfinding logic predates the LTN tool and was designed for the traffic simulation and modelling gated / access-only communities. I'm not sure it makes sense in the context of the LTN tool, since understanding / modifying through-traffic patterns is the whole point.

One idea is to create a new modal filter type to represent this case. When OSM has something marked as a living street or private, an icon is shown on that road and by default no traffic can cross, but the user can choose to remove it to correctly model reality.
Screenshot from 2023-08-22 21-29-39

How does this idea sound? And CC @andrewphilipsmith, who's working more on the LTN tool these days -- any thoughts?

That sounds great to me, thanks!

I think there are two possible questions here; are we handling living_streets appropriately and how should we enable users to add their own local knowledge?

How should the living_street tag be interpreted?

As Dustin points out, currently living streets are so heavily penalised that the routing algorithm will not direct traffic there unless there is no other option. This treats it like a LTN, which is not the reality.

The meaning of the term "living street" seems to vary a lot both in expectations and legally and
between locales and jurisdictions. Judging by what I can see on Google Streetview, the road appears to be designed to allow through traffic, at low speed, and with preference given to pedestrians.

A different compromise could be to interpret living_street as having a de-facto speed-limit of walking speed. This would still penalise it in the routing algorithm whilst allowing some through traffic. Would it help in this case?

(Of course, this still leaves open the option that if anyone wants to propose that there should be no through traffic, they can add a modal filter.)

I'm unfamiliar with this part of the code, so I don't know how easy (or not) it would be to implement.

Manual overrides for the routing algorithm

Dustin and I have informally discussed ideas for enabling users to manually override the potential routes, adding their local knowledge to the impact predictions.

My inclination is that the shortcuts/paths (as highlighted using the Shortcut button in the LTN tool) are the natural unit that people think about. However, for larger neighbourhoods, there can be a very large number of potential shortcuts, making this impractical for users to individually annotate. The idea of a virtual modal filter is promising. I've not yet thought through the details required to make this work, though I'd be interested to hear any ideas.

Thanks for your thorough comment!

This would still penalise it in the routing algorithm whilst allowing some through traffic. Would it help in this case?

I"m not familiar enough with ABstreet but that seems like it would solve my immediate issue of LTN refusing cars on that stretch.

From https://wiki.openstreetmap.org/wiki/Tag:highway%3Dliving_street

The implicit speed limits set in legislation vary from "walking speed" up to 20 km/h

Without wanting to bikeshed, maybe 15km/h is a more accurate average worldwide.
As a side effect, this could also help bring to light living street that on the path of arterial roads.

Manual override seems like a good 2nd step, probably more complex to implement and maybe it wouldn't be too much needed if the default behavior is good enough. And re-prioritize it if the question comes back.