-
Notifications
You must be signed in to change notification settings - Fork 14
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
How many jobs are accessible by bike from certain neighborhoods in 45 minutes? #7
Comments
My forked repo for OTP is here: https://github.com/thcrock/cta-otp |
I've been playing around with this a bunch. I can confirm that using 'quick and 'safe for bike triangle optimization produces different results, so while we may want to look more closely into how the various bike lanes are graded it is at least making some difference. One thing that came to mind is: Maybe the value with useful information here is specifically the difference in jobs access between the 'quick routing and the 'safe routing for a particular location. The raw amount of jobs available is highly dependent on distance from various job centers, and bike lanes can't do anything to fix that. However, the difference between the 'quick' routing and the 'safe' routing represents the gap that bike lanes can help close. If a location has a small gap in jobs available between the two routing options, that could be an argument for the bike infrastructure for that location doing the best it can for economic opportunity; a large gap means that the people there are being held back by poor infrastructure. I have to modify my script a bit more, but tonight I should be able to produce GeoJSON with two values for each Census Block centroid: jobs accessible by biking some amount of time (issue header says 45 minutes, so I'll use that) using quick routing, and jobs accessible using safe routing. OTP uses 11 mph as the average speed; should we take it down a bit due to the fact that we're trying to be attentive to newer riders? |
@thcrock I think it's pretty fabulous that we'll be able to showcase 'quick and 'safe routing choices. Lowering the average speed is definitely a good idea. I would say 8-9 MPH should be the minimum. I believe that when the first #DivvyData challenge happened several people were able to compare users' trip durations with the distance of the Google Maps-suggested route and came up with an average. Let's go with 9! |
Yesterday I started looking into how good the quick vs. safe data is. A lot of the numbers were the same, which leads me to believe: (1) The basic 'SAFE' routing might not penalize roads without bike lanes as much as we want. However, the bike triangle is fully configurable, so we don't have to use the 'SAFE' defaults. I don't have specific values in mind that I think we should use, but we can experiment. For anyone interested in what the 'bike triangle' means, read this: https://github.com/opentripplanner/OpenTripPlanner/wiki/Bike-Triangle It's old and wonky, but it at least gives an introduction to what we're talking about. And you can see the bike triangle configuration I have available to me here: The variables in question are 'triangleSafetyFactor', 'triangleSlopeFactor', and 'triangleTimeFactor'. (2) The OSM data that I auto-imported probably doesn't have enough features set. As far as I know, the graph builder takes directly from OpenStreetMap (unless you point it at local OSM files), and when I head over to the OSM cycle map, I only see trails like the Lake Front Trail marked. So we may have to do some work to map out bike lanes on OSM in order to do make good use of this. |
As discussed on Tuesday, I was able to rebuild my OTP Graph.obj to properly take into account bike lanes. Using this, I calculated 'quick' and 'safe' routing and cross-referenced it with jobs data to get two jobs values, accessible within a 25 minute bike ride at 9mph. The resulting GeoJSON file is 5MB, so click at your own risk: I'm going to try out a visualization in Leaflet, and also redo it for each census tract (instead of each census block) to make the result more manageable. |
The tract-wise GeoJSON file is much smaller, so I put it on Dropbox. It's in gis_original_data/jobs_by_tract.geojson I tried a sample visualization; what is the difference between the 'safely' accessible jobs and the 'quickly' accessible jobs? I treated the percentage difference between the two routing options as a gap that could be lessened by more bike infrastructure, and overlaid circles based on the size of the gap (big circle=big gap): It's probably not a great visualization; maybe color the tract boundaries instead? Regardless, we'll want to audit this data quite a bit (like what bike lanes are being used, and how are the different types of bike lanes being scored?), and plus I used 25 minutes as a bikable time for speed purposes. I'll update with a 45 minute bikable time later. |
So, to more heavily debug how OTP does bike routing, I made a visualization that forgets about jobs and just looks at reach. The idea was to see how calibrating the bike triangle would change how OTP routed. For quick routing (colored in red), I used 1 for quick and 0 for safety and slope. As you can tell from the picture below, the graph doesn't take bike lanes into account as much as we probably want. The good news is that there are also a million ways to configure the Graph.obj as its being built, so I can rebuild one that has a more drastic difference between poor and good bike infrastructure. |
What profile configuration does your OTP instance use? I'm familiar with how OSRM (OpenStreetMap Routing Machine) works, using .lua profiles. When you know how to set a custom configuration for OpenTripPlanner, try out these bike lane weightings.
All others receive a 0.0. And, yes, I am suggesting that a shared lane (shadow) is just 0.1 point better than a street without it. After @thcrock brought up penalizing turns as a way to overcome problem of routing bicyclists on Ashland Avenue for a large portion of a sample route, @MMenninger suggested reducing the speed on highway=primary as an alternative way to penalize using a street like Ashland Avenue. (You can now begin to understand the difficulty of designing a routing application.) |
Regarding bike lane data for Chicago...I've been the primary caretaker of these, and I'm several months behind. That means that I haven't edited OpenStreetMap to include bike lanes built in the summer through winter 2014. The solution is to finish editing this, based on the "bike routes" data published by CDOT that's already uploaded in our repo. One shouldn't rely on the OpenCycleMap as an indication of the extent of bike lane-editing because it has an odd visualization that takes some getting used to. OCM emphasizes trails and "relations", which are those routes that have a known name or route number (most don't). |
@stevevance I've recently upgraded to the newest version of OpenTripPlanner, and have been looking into its configuration. I'm actually adding the ability to configure the routing profiles (more specifically, a WayPropertySet) through the new JSON-based config system. I just created an Issue on OTP to track my progress: opentripplanner/OpenTripPlanner#1787 I won't be able to make it to the festivities tonight, but that's what I'm working on. |
@thcrock I don't think I agree with your danger ratings on that profile/config you put in that issue, but it's something we can deal with once OTP developers accept your proposal. |
@stevevance Those ratings are just the defaults that are already in OpenTripPlanner, the intention is to create our own config file once it's possible to use a config file. |
@thcrock What's the status on this? |
Tristan has an instance of OpenTripPlanner that can calculate distance between homes and jobs and incorporate the locations of bike lanes to understand the bike-ability of that route.
We want to come up with a "quick hit" headline of one stat that attracts people's attention, more minds, more critical thinking on how to develop a model that tests our hypothesis.
The text was updated successfully, but these errors were encountered: