13.7 Prioritizing New Infrastructure

In transport planning we identify promising locations for investment in sustainable transport infrastructure.

This new dataset is created in the code chunk below which:

  1. filters out the cycleway entities from the bristol_ways object representing the transport network;
  2. ‘unions’ the individual LINESTRING entities of the cycleways into a single multilinestring object (for speed of buffering); and
  3. creates a 100 m buffer around them to create a polygon:
existing_cycleways_buffer <- bristol_ways |> 
  filter(highway == "cycleway") |>    # 1) filter out cycleways
  st_union() |>                       # 2) unite geometries
  st_buffer(dist = 100)               # 3) create buffer

The next stage is to create a dataset representing points on the network where there is high cycling potential but little provision for cycling:

waldo::compare(
  sf::st_crs(route_network_scenario),
  sf::st_crs(existing_cycleways_buffer)
)

route_network_no_infra = st_difference(
  # route_network_scenario,
  # Temporary workaround, see https://github.com/geocompx/geocompr/issues/863:
  route_network_scenario |> st_set_crs(st_crs(existing_cycleways_buffer)),
  existing_cycleways_buffer
)

qtm(route_network_no_infra, basemaps = leaflet::providers$Esri.WorldTopoMap,
    lines.lwd = 5)

The method has some limitations: in reality, people do not travel to zone centroids or always use the shortest route algorithm for a particular mode.