Skip to content

Travel distance proxy

Jip Claassens edited this page Jul 30, 2026 · 1 revision

The travel distance proxy estimates how much people travel and where that traffic ends up on the road network. It is a spatial interaction model run over the 1 km population grid, and it produces both origin based indicators and modelled flows per road link. The link flows, sampled to a fine grid and split by road class, are the product delivered for emission modelling work such as EDGAR.

The configuration is Analyses/ComputeProxy.

Origins and destinations

Origins and destinations are the same population grid cells, taken from the destination domain of the continental network. A cell qualifies when it has population above zero and is attached to the network.

Destinations are taken country wide. Origins are taken per run zone. For most countries the run zone is the country itself, so origins and destinations coincide. For China, India and the United States the country does not fit in memory in one run, and the origins are cut into functional areas instead, listed in use_fas_for_origins. Destinations stay country wide in that case, so a run for one functional area still sees the whole country as possible destinations.

The interaction model

The core is a single call to impedance_matrix_od64 with the interaction option, which does the routing and the interaction model in one pass and never materialises the full matrix. Its arguments are the link impedance, the from and to nodes, the direction flag, the origin nodes, the destination nodes, a cut off of 60 minutes, the link length as an alternative impedance, and the origin and destination populations as masses.

The model is singly constrained: the origin side is inelastic, so the trips leaving an origin are fixed by its population, while the destination side competes for them. Trips from origin i to destination j are

Tij = (1 / Di) times vi times wj times f(tij)

where vi and wj are the populations, f is the distance decay function, and Di is the potential accessibility of the origin, that is the decay weighted sum of all destination populations within reach.

A cell is also a destination for itself. Since a travel time of zero would break the decay function, the model uses a self distance of 0.23 km, the theoretical mean distance to a random destination inside a 1 km cell, converted to a travel time at the low default speed.

Distance decay

Six decay functions are configured. Three are log logistic, three are simple power functions:

Name Form
Geurs_VanEck_2003_general log logistic, alpha -6.899, beta 2.326
logistic_steep log logistic, alpha -4, beta 2.338
logistic_slight log logistic, alpha -8, beta 2.338
Power_m10 t-1
Power_m15 t-1.5
Power_m20 t-2

Geurs_VanEck_2003_general is the default used for the delivered results, set in main_dd_func. Its parameters come from the Dutch national accessibility work by Geurs and van Eck.

Results per origin

For every origin cell the model reports:

Indicator Meaning
D_i potential accessibility, the decay weighted destination population within reach
avnetdi average network distance travelled per inhabitant
aveucdi average straight line distance travelled per inhabitant
avtimei average travel time per inhabitant

These are written as GeoTIFF on the population raster in World Mollweide, per run zone.

Flows on the network

The interaction model also assigns the modelled trips to the network, giving a flow per link of the compressed link set. Those flows are of limited use on a compressed network, since one final link can stand for a long chain of original OSM segments.

The change tracker built during Network construction is what fixes this. It maps every link of the original link set to the final link that absorbed it, so the flow of a final link can be pushed back onto all the original segments it represents. Artificial origin and destination connection links are excluded, since they carry no real traffic.

The original segments are then sampled: each segment is walked at a fixed step of one tenth of the output cell size, each sample point is assigned to a grid cell, and each sample carries the flow of its segment multiplied by the segment length and divided by the number of samples. Summing the samples per cell gives flow times kilometres per cell. The same is done separately per main road class, which yields grids for Main, Secondary and Tertiary.

The output grid is snapraster_edgar, a WGS84 raster at 100 metre resolution.

Output

Per run zone, to %LocalDataProjDir%/Distances_Travelled_Proxy/<population version>/<decay function>/<continent>/<zone>/:

  • pot_ai.tif, potential accessibility per origin cell;
  • av_di.tif, average network distance per origin cell;
  • pop.tif, population per origin cell;
  • 100m/flow.tif, total flow per output cell;
  • flow_Main.tif, flow_Secondary.tif, flow_Tertiary.tif, flow split by road class;
  • finallinkset_flows.fss, the raw link flows on the compressed network.

export_results sums these over all zones into global mosaics, including netdi_pc.tif, the average network distance per capita.

Running it

Two store buttons split the work, since the flow grids are much more expensive than the origin indicators:

GeoDmsRun.exe cfg\main.dms /Analyses/ComputeProxy/Per_Continent/<continent>/country_proxy/<zone>/Results_per_distdecay/Geurs_VanEck_2003_general/store1

store1 writes the link flows and the origin grids, store2 writes the flow grids, and store_only_all_flows writes the total flow grid alone. batch/compute_proxy.cmd loops these over the country lists.

Every zone also exposes an all_stored flag that checks whether its output files already exist, which is how a run can be resumed after a crash without recomputing what is already on disk.

Clone this wiki locally