Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider transit stop access for in station transfers #4542

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

jthiard
Copy link

@jthiard jthiard commented Feb 1, 2024

⚠️ No test-case written so far, and there might be some side effects.

Try to fix in-station transfers in stops with GTFS wheelchair_boarding to false, when pedestrian costing use the wheelchair transport type.

Issue

#4540

Tasklist

  • Add tests
  • Add #fixes with the issue number that this PR addresses
  • Update the docs with any new request parameters or changes to behavior described
  • Update the changelog
  • If you made changes to the lua files, update the taginfo too.

Requirements / Relations

this will fix in-station transfers in stop
with `wheelchair_boarding` to false, when pedestrian
costing use the `wheelchair` transport type.
@@ -296,8 +296,6 @@ void ConnectToGraph(GraphTileBuilder& tilebuilder_local,
// Add the node and directed edges
nb.set_edge_index(edge_index);

// reset the access to defaults.
nb.set_access((kPedestrianAccess | kWheelchairAccess | kBicycleAccess));
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Keep the access mask inherited from the GTFS.

This should not break the multimodal costing which doesn't evaluate the node access, nor normal pedestrian routes since those nodes are connections between the transit graph and the pedestrian graph.

Comment on lines +397 to +399
if (!pc->Allowed(nodeinfo)) {
continue;
}
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If wheelchair_boarding was set to false and access mask keeped on the stop node, a normal pedestrian costing won't allow wheelchair users to "walk" (unboard and board) through this node.

@jthiard
Copy link
Author

jthiard commented Feb 1, 2024

What I understand from GTFS wheelchair handling in Valhalla:

  • GTFS trips wheelchair_accessible will be used to qualify transit edge, evaluated by transit costing. This works well to my knowledge
  • GTFS stops wheelchair_boarding will be used to qualify "transit connection" edges, ie edges created to connect the transit graph with the road network. Those edges will be evaluated by the pedestrian costing. This work well when starting or ending a route, or for transfers when changing stop through the road network).

During a in-station transfer (changing vehicle at the same stop), I propose to call the pedestrian costing on the transit stop node to evaluate accessibility and the ability to change vehicle.

@nilsnolde
Copy link
Member

Sounds good on first glance, thanks! Adding a test for this will be a bit of a challenge, transit costing is not really a first-class citizen in our testing framework, but it's of course possible. Let us know if you need some pointers.

@nilsnolde
Copy link
Member

I'm curious: how did you even find out our wheelchair support? AFAICT it's not really documented, but maybe it is somewhere. And IMO this is not so bad, other than multimodal transit our wheelchair support is still quite poor.

@jthiard
Copy link
Author

jthiard commented Feb 2, 2024

I'm curious: how did you even find out our wheelchair support?

Oh that's simple, diving into the code 😄
We work on fine pedestrian routing for "standard" pedestrians and for various kinds of disability profiles, at small scales (basically a city or an urban area). And Valhalla is an amazing code base for this.

There is no globally available data at this time so we have our own (highly unstable) data model and our own (highly volatiles) costings. Hopefully there will be standardized data one day, at least in Europe with ongoing work on NeTEx profiles for accessibility.

So TBH we don't rely on the standard pedestrian costing, this is why in my fix the multimodal algorithm don't check the node access mask, and instead rely on whatever costing has been given as the pedestrian costing.

Adding a test for this will be a bit of a challenge, transit costing is not really a first-class citizen in our testing framework, but it's of course possible.

I will give a try and let you know, thanks.

@nilsnolde
Copy link
Member

I have little idea (so far) what is really needed for proper wheelchair routing. I've been working in Heidelberg when they did their PoC at GIScience; I've not been involved but I remember they did a crazy effort to update OSM with sidewalks and curb info. AFAIK the wider OSM community seems to shift towards modeling sidewalks as separate entities (at least in Europe), which would help a lot in making wheelchair routing more proper. But there's also lots of people who very much don't like that, bcs it makes OSM maintenance so much harder, and I can kinda get the argument. If it's not somehow in OSM there's very little chance we'd ever be able to really support good wheelchair routing. Unless there's an ODbL-compliant derivative of OSM dedicated to that which is hard to imagine ever existing..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants