Networks and accessibility

How long does it take to reach a hospital, a job or a school, and for whom? Accessibility questions look simple until you compute them properly: over real networks, for millions of origins and destinations, with modes and time windows that matter.

This is a growing part of our work. Our network calculations run directly on the GeoDMS engine, which is what makes national and continental analyses feasible at fine resolution rather than on aggregated zones.

What we build

  • Dijkstra-based routing at scale: origin-destination matrices, travel-time isochrones, catchment areas and impedance tables over very large networks.
  • Public transport from timetables: turning GTFS data into a routable network, including waiting, transfers, fares and the walk to the stop.
  • All modes in one model: car, bicycle, walking and public transport, so that a comparison between them rests on one method rather than four.
  • Where facilities should be, not only how far away they are: optimisation over the same network, coupled to the routing rather than run beside it.
  • African corridors: accessibility analysis along transport corridors.

We work with the Dutch national road register (NWB) and with OpenStreetMap, and combine network routing with spatial interaction models where behaviour, not just distance, decides what counts as reachable.

The Dutch network model

For PBL we build and maintain a national network model that computes accessibility for car, bicycle, walking and public transport. The documentation is public.

Public transport, where most of the work went

Simulating a public transport journey is a fundamentally different problem from routing a car. Departure time matters: there is a third dimension on top of the two spatial ones. You cannot board a bus that has already left, waiting costs time, and a journey is a chain of legs with transfers in between rather than a single path.

We represent the timetable as a time-expanded graph, in which a node is not a stop but a combination of time, stop and route. Because the nodes are ordered in time, the routing naturally moves forward only, and a traveller can never board a vehicle before it has arrived.

A time-expanded public transport graph

A journey is a chain rather than a path: a bus leg, a transfer on foot, waiting, then a train. The faded arc is a bus that left too early to catch. Each leg is priced on its own, and repriced when the legs are joined.

The harder problem is price. The Dutch fare system is not linear in distance, so a single routing pass over one mixed network cannot produce correct fares. Our answer is to split the network by operator, compute single-operator origin-destination matrices for regional transport and for the trains separately, and then chain those legs together while recomputing the fare at every join. That handles the boarding fee and the distance component separately, and it handles through-pricing across a multi-leg train journey, which a naive sum of leg prices gets wrong. Fares themselves come from a hierarchical lookup that falls back from mode, operator, concession area and line down to mode and operator alone.

Around that core sit the parts that decide whether a result is usable: transfers generated for every operator combination within a maximum walking distance, chains assembled in parallel blocks because the combinatorics are large, and Pareto filtering so that what survives is the set of genuinely non-dominated options on price and time rather than one arbitrary "best" journey. The whole thing is then evaluated per departure moment, with the walking or cycling leg to the first stop and from the last one joined on, and with direct cycling or walking kept as a competing alternative.

That architecture was arrived at independently, and it shares its central ideas with the RAPTOR algorithm described later in the literature.

Car, bicycle and walking

The same model routes private modes with Dijkstra over the road network: OpenStreetMap for cycling and walking, and the TomTom network for car travel. Congestion is not simulated but observed: TomTom historical speed profiles give the network different speeds for the morning peak, midday and late evening, and for the type of day being analysed. An earlier gravity-based congestion model that estimated flows is still in the code, but empirical profiles turned out to describe reality better.

The details are where realism is won or lost. OpenStreetMap speed limits are frequently missing or implausible, so they are corrected against the ninetieth percentile for that road type. Crossing a junction costs time, scaled to how complex the junction is. Motorways are excluded as connection points, because you cannot join the network in the middle of one.

A routable network for the whole world

Our global network model builds a routable car network for the entire planet from OpenStreetMap, connects it to the global population grid and settlement layers, and derives a family of accessibility products from it. Everything runs on open data and on one consistent method, so a result for one country can be compared with any other, including catchments and flows that cross a border.

Getting that to run at all is largely a question of discipline about size. Network construction happens per continent and the analyses per country, because a routable global network does not fit in memory in one piece. The graph is compressed by repeatedly removing nodes that are not junctions and collapsing the chains between them, which drops a large share of the links without changing a single travel time. The largest countries still have to be split.

What comes out of it:

  • Settlement hierarchies. For each of 25 travel-time thresholds from 0 to 120 minutes, the model asks whether a settlement is the most populous one reachable within that threshold. The highest threshold at which it still dominates becomes its rank. That gives a hierarchy from local centre to national centre derived from the network, not from administrative status.
  • Catchments and functional rural areas. Every populated cell is assigned to the centre it can reach fastest, islands and exclaves included, and the result is dissolved into polygons and aggregated into functional rural areas under population and travel-time constraints. The OECD definition of a functional urban area serves as the exclusion mask, so that what is left over is genuinely rural territory rather than everything outside a city boundary.
  • Accessibility indicators: travel time and network distance from every populated cell to the nearest settlement of each type and to the nearest centre of each rank.
  • A travel distance proxy: a spatial interaction model over all origins and destinations within an hour of each other, reporting potential accessibility, average travel distance and time, and the modelled traffic flow on each road link. Those link flows are sampled back onto a fine grid and split by road class, which is the form emission modelling needs.

The same products feed CRISP. How peripheral a location is, and what can be reached from it, are properties of a network rather than of a raster, and they are exactly what a suitability model for future built-up development needs. Because both run on the same one-kilometre grid, the two line up cell for cell without resampling.

Which facilities should stay open

Measuring accessibility answers how long it takes to reach a school. It does not answer the question a ministry actually has, which is which schools there should be. The European network model does both, for service accessibility across European countries. It was set up at the Joint Research Centre and now carries most of our work for the OECD, which is European in scope where CRISP and the global network model are worldwide.

It works in three steps, and the middle one is not ours. GeoDMS computes travel times between population grid cells and every candidate location and writes them out as an origin-destination matrix. A solver in Julia then chooses which facilities to keep open, weighing the total travel time of everyone against the cost of running a school that too few children attend. GeoDMS reads those decisions back and produces the accessibility indicators on the one-kilometre grid, for the network that was chosen rather than the one that exists.

Two things about that are worth saying plainly. Closing a school always improves one number and worsens another, so the interesting output is not the optimum but the trade-off curve between them, and a model that hands over a single answer is hiding the decision rather than supporting it. And the coupling with Julia runs over files in a documented columnar format rather than through a script wedged into the middle of a calculation, which is why the accessibility result can still be traced back to the network it came from.

Applications

For PBL we contributed to Beter bereikbaar? (2024) and Toegang voor iedereen? (2022), which examine how accessibility to jobs and amenities is distributed across the population, and we computed the accessibility indicators for the Planmonitor NOVI. The PC4 travel-time matrix for the Netherlands, built for Nederland van Boven, is a further example of the underlying machinery.

Methods are documented in the accessibility modelling wiki and in the network model documentation at geodms.nl/networkmodel_pbl.