King County Metro Route 8 | NFI XDE60 | Madison St @ MLK Jr Way” by Han Zheng is licensed under CC BY-SA 2.0.

Transit access is frequently depicted with isochrone maps. Given a starting point, time of day, and time budget, determine all the places that can be reached within that budget using transit and walking. These maps are not a new concept, with examples dating to the late 1800s. This site’s glossary depicts one of Melbourne, Australia from the 1910s as an example. Public transit consultant Jarrett Walker uses them aptly to explain the idea of access as a “wall around your life”. The bounds of the isochrone form this wall. Improvements to transit networks expand the area inside of it. It’s a compelling, understandable image.

Even simple isochrone maps are useful. Rather than precisely determining what can be reached by walking, a map may simply use the time budget remaining after reaching a stop to draw a circle with an appropriate radius around it. An alternative approach to using actual transit schedules, and fixing the map at a specific time of day, is to approximate the transit times between stops, and estimate how long a transferring rider will wait. This gives a rough idea of what is reachable on average. Once the isochrone has been computed, it’s possible to sum up the resources available within it. A measurement of access to opportunity may total jobs or schools, for example. Several tools exist to do this; the one I see transit agencies use most is the Remix sketch planning platform’s Jane feature. When agencies are in the initial stages of proposing route modifications, and want to spot-check some important areas, this is a useful comparative tool.

Composing multiple isochrones enhances the precision of access measurement. For a single location, an isochrone can be generated at several times of day. Typically this is done at some periodic sampling rate over a time span. Conveyal’s transit planning platform does this. Once every isochrone is computed, it allows the user to select a percentile. A destination is considered reachable only if that percentage of the isochrones indicate that it can be reached. That way, the user is still presented with a single “wall,” and there can still be a whole-number total of resources within it. My single-point access maps take a different tack. A color scale is used to show how many times of day a destination is reachable from the origin point. The map shows many percentiles at once, limited by the number of gradations in the color scale. This provides more information, at the cost of weakening the wall metaphor1.

Isochrones centered at a single point give only a glimpse into the overall access that a transit network provides. Therefore, it’s preferable to compose isochrones over space, along with time. Typically, this is done by creating isochrones from all points on a uniform grid. Remix’s Network Jane exemplifies this. Conveyal’s analyses use this strategy too, though the grid is not explicitly drawn, and varies based on a user-selected zoom level. My network access maps more closely resemble Remix’s, but with a visible square grid instead of a hexagonal one. Despite varied implementations, the principle of spacing out isochrones regularly across an area underlies all three.

The maps that I’ve made up to this point, Conveyal’s maps, and Remix’s maps all look a little different, but there is not a huge mechanical difference between them. The software behind them generates isochrones and overlays them to create a visual representation of where a public transit network succeeds and fails at accomplishing some goal. They allow a user to compare current and hypothetical transit service as they contemplate how to redesign a network to better serve riders. Their differences only come from minor variations that reflect the preferences of the intended audience. In this post, I want to introduce a style of access map that I believe is entirely original. It is derived from the information underlying a traditional isochrone-based access map, but breaks with tradition in its presentation. It looks quite different, and targets a different aspect of the network redesign process.

The Need for Something Different

As I have worked on redesigning King County Metro’s bus network in Seattle, the workflow that I have used has felt inefficient. I encode changes to King County Metro’s existing service in a modification language that I’ve previously described. Once I’ve assembled a batch of changes, I create a new network and compute the network-wide access with it in effect. Each computation costs money and time.

There is a monetary incentive to know which changes will most effectively improve access, but identifying them feels like guesswork. The network access map of the existing service only helps so much. It does make it easy to see which areas are presently well-served by transit and which ones are not. I can select a point in an area with exceptional access and see all isochrones centered at that location. By observing which areas are easiest to reach, I can make deductions about which routes are contributing most to access there. But that’s only one point; a route not contributing there may be significant elsewhere. I’m forced to use heuristics to make choices, and try them out. I’m looking at quality of access at locations, but making changes to routes; the network access map feels far removed from the work that I’m doing.

I wanted to take a cue from tools that visualize ridership or on-time performance by using color to overlay information directly on transit routes. Access isn’t a natural fit for this style of map because it is not solely a property of transit service. It also depends on how the natural and built environment impact walking. Nevertheless, it is still possible to identify the access contribution that each part of the transit network makes, and this serves as a way to gauge effectiveness across and within routes.

How It’s Made

Repeatedly computing isochrones generates a lot of data. For the Seattle maps that I build, I estimate it is on the order of a terabyte over the life of the computation. Displaying an access map only requires tracking how many times of the day each destination could be reached from each origin. All the information about the series of walks and transit trips that made this possible can be discarded.

Retaining some descriptive data, but not all of it, is possible too. I previously broke down access contribution by route. When computing isochrones, I summed how often each route appeared across all completed journeys—combinations of origin, destination, and time of day that correspond to a trip that can be made within the time budget. Dividing each route’s sum by its amount of in-service hours reveals a route’s access contribution, relative to the level of investment in it. These figures provide some clues into which routes should be scrutinized during the redesign process.

I still found this insufficient. A transit route isn’t necessarily one sequence of stops. Some of King County Metro’s routes have shortened variants—sometimes a few at both of their ends. Routes can also be quite long, and varied along their path. A route that efficiently contributes to network-wide access along part of its course, but fails to do so elsewhere, could end up looking entirely mediocre overall.

To mitigate these problems, I aggregated the data in a different way. My pathfinding software already groups transit trips based on their routing. Two trips are of the same routing if they have the exact same sequence of stops2. For every routing, each pair of consecutive stops is designated as a segment. I created a new aggregation mode to track how often every routing segment appears in a completed journey. Appearing more often indicates a greater contribution to the ability to move throughout Seattle. The end result is a segment journeys map that uses the same information as a traditional isochrone-based one, but looks very different—emphasizing the parts of routings that contribute most and least.

What It Looks Like

As an example, I created a segment journeys map for a typical weekday in Seattle, with a 30 minute time budget, using King County Metro and Sound Transit service. (This map does not show the Link, but it is still being accounted for in the access calculation. Displaying its segments on the map is planned in the future3.) I have embedded this map below, though it benefits from being open in a separate window.

There are several options for how the routing segments can be colored. Each option divides the number of segment journeys by a different value.

  • When not dividing the number of journeys by anything—showing the raw number of journeys of which the segment is a part—the value is biased toward routes with the highest frequency. If the user has a sense of which routes have similar frequencies, this can identify wether routes generate good or poor access relative to peers with similar investment.
  • By default, the map shows the number of journeys divided by the number of trips that contain the routing segment. This is my preferred measurement. If I’m judging the value of a transit route because I’m considering modifying or eliminating it, I want to analyze it divorced from its frequency.
  • I initially gravitated toward dividing the segment’s number of journeys by the total in-service time allocated just to that segment across all trips. In practice, I’ve found this to have limited value. The amount of time between stops dominates the measurement. This is rarely relevant, because trips usually involve riding multiple stops.
  • A routing that is longer, and runs more frequently, is likely to provide more access on the basis of its greater investment alone. Dividing the number of journeys by the total in-service time of the routing attempts to isolate how valuable the segment itself is, controlling for the total investment in the routing. I don’t find this as useful as dividing by the number of trips, since a rider may not be able to take advantage of the full length of the trip they are on, given their time budget.

These measurements are selectable using the control to the left of the scale at the bottom. (This control gets cut off in the embedded map.)

Hovering over a segment reveals its measurements, and those of other segments that are covered by it. Clicking on a segment allows the user the option to expand one of the segments under the cursor. Expansion reveals which sectors are the origins and destinations of journeys involving the segment.

How I’m Using It

To achieve 15-minute or better frequencies, 24 hours per day, seven days per week, and not increase the budget of in-service hours spend in Seattle, my previous network redesign necessitated that I remove transit service from some corridors where it exists today. I did this by guessing which parts of routes seemed to be redundant, based on observations of Metro’s network and a network-wide access map, and then testing the change in overall access. I expect that a segment journeys map can add some structure to this guesswork, resulting in fewer expensive network access computations and faster identification of areas of the network with the most redundancy.

In that restructure, one corridor that I guessed as having minimal impact was the stretch of route 8 on Martin Luther King Jr. Way between East Madison Street and the Mount Baker Transit Center. Service on route 48 parallels it a few streets over to the west, and from South Jackson Street to the Transit Center, route 14 is not far to the east. The segment journeys map instead reveals that for both routes, these stretches have significantly above average segment journeys per trip, and thus are significant contributors to overall access relative to other routes. Despite their proximity, they are each allowing journeys that the other is not, rather than competing for them. While this isn’t evidence that route 48 couldn’t absorb the loss of route 8 without severe impact to riders, it suggests that revising other routes merits consideration before expending the resources to test that hypothetical.

On the other hand, the map would have given me confidence in the changes that I proposed in Queen Anne, which eliminated multiple routes and revised others. None of the routes presently serving Queen Anne excel in segment journeys per trip. This suggests that they may be competing for the same journeys, and riders would still be able to reach their destinations, with minimal impact, if some of them were eliminated. This can’t be known definitively without re-running the access analysis with this change in place, but the segment journeys map supports targeting this area for experimentation.

The deep red line on 3rd Avenue in Downtown Seattle warrants some examination. The routing segments corresponding to the northbound E Line score considerably higher than other routes’ segments on this street. It’s not a matter of those routes being universally bad; many of them have segments elsewhere in the city that are more valuable than theirs on 3rd. This would have helped corroborate my working theory that when many routes combine into a single corridor, there are diminishing access returns. The path of route 49 north of Capitol Hill Station exemplifies this too. Segments on the same routing provide more access value when not part of a funnel of service into downtown.

Transit advocates celebrated when King County Metro restored transit service to Capitol Hill’s Summit neighborhood by extending route 3. Unfortunately, this service is among the worst in the city at connecting people to destinations given the number of trips run, at least for a 30-minute time budget. This is not a problem with route 3 on the whole. The route is never spectacular as it goes through the Central District, but this portion is not as bad as the Summit section. Connecting Summit to downtown, when other routes within a short (but steep) walk do the same, is not effective in efficiently expanding the number of destinations that can be reached. This does not necessarily mean service that should be eliminated again. Looking to the future, it does highlight an area where rethought service could pay dividends.

I’m still thinking over how to maximize the utility of this kind of map. The division of routes into routings is sometimes clunky rather than illuminating. Some routes have multiple routings that only vary in whether the bus lays over at one of two stops at opposite ends of the same block. Separating the segments of these routings into separate categories doesn’t accomplish anything. More importantly, this map doesn’t perfectly highlight areas that are best for removing service for reallocation elsewhere. Rather than knowing which routing segments generate the most access, I’d prefer to know which ones cause the least overall access loss when removed. This is a far more expensive computation. For now, the most reasonable proxy that I can think of is to display each routing segment’s journeys per trip, and look out for places where multiple routes in the same area score badly. I anticipate that for future network redesign efforts, just having that visual available will be useful.

Traditional access maps, formed from composed isochrones, reveal the implications of network changes in a useful, comprehensible way. To actually do the work of getting between the present network and the proposed one, they aren’t that helpful. Luckily, what is largely the same source data can be presented in an entirely different way, to bring a focus onto the transit routings themselves—the actual thing that a planner is modifying. I hope this new style of map fills that wider need. Personally, I’m looking forward to using them in my own future redesign projects.


  1. I’m comfortable abandoning this metaphor because I’m measuring unweighted access. I’m not measuring the number of resources contained within an area; the resource that I am measuring is the count of origin, destination, start time combinations that can be completed within the time budget. Therefore it’s not important for me to present a single view of what is considered reachable, and I can instead show how what can be reached varies. ↩︎

  2. Routings and routes, in theory, have a many-to-many relationship. Most often, though, there is at least one routing for a single route, and routings are rarely shared between routes. There are exceptions. In a previous service revision, some of King County Metro’s trips between Downtown Seattle and Seattle Pacific University had the exact same stop sequence, but some were labeled as route 3, while others were designated route 4. ↩︎

  3. Sound Transit’s GTFS does not include shape_dist_traveled in its shapes.txt, which makes it difficult to cut the Link’s route into displayable segments. ↩︎