This page explains the steps for building a road network model for active transport simulation models such as MATSim, including active transportation related infrastructure and attributes.
- Jafari, A., Both, A., Singh, D., Gunn, L., & Giles-Corti, B. (2022). Building the road network for city-scale active transport simulation models. Simulation Modelling Practice and Theory, 114, 102398 ( Pre-print version )
- GDAL
- R 4.2+
Network generation code is written primarily in R programming language,therefore a working knowledge of R is expected.
All required R packages must be installed before running the algorithm. renv
will take of that for you and you just need to run the following in R to install the packages:
install.packages("renv")
renv::restore()
Before running the algorithm, adjust the parameters and input/output file names for your scenario in NetworkGenerator.R
.
Adjustable parameters are listed under the Parameters sub-heading.
Running the algorithm requires an input parameter 'city', and adjustable parameters must be completed for that city, specifying locations of relevant input files and the applicable CRS. If running for a location for which 'city' parameters have not already been defined, then these must be added, using existing city parameters as a template.
The city parameters are as follows.
Parameter | Parameter type | Requirements |
---|---|---|
region | .sqlite file | Required if OSM extract is to be downloaded, or destinations (see below) are to be extracted. This must be the location of a file in sqlite format which defines the boundary of the area for which the OSM extract is required. |
outputCrs | CRS | Specify the appropriate EPSG coordinate reference system number for the region. |
osmGpkg | .gpkg file | The location to which an OSM extract in .gpkg format will be saved, or where an existing .gpkg file is stored if already held. |
unconfiguredSqlite | .sqlite file | The location to which an unconfigured network in .sqlite format will be saved, or where an existing unconfigured network is stored if already held. |
cropAreaPoly | area location | An optional parameter for cropping the OSM extract to a smaller test area. See https://github.com/JamesChevalier/cities/tree/master/australia/victoria for available locations. |
demFile | .tif file | Required if 'addElevation' is set to 'T'. This must be the location of a digital elevation model raster file in the same CRS as the the network. |
ndviFile | .tif file | Required if 'addNDVI' is set to 'T'. This must be the location of a raster file with NDVI values in the same CRS as the network. |
gtfs_feed | gtfs .zip file | Required if 'addGtfs' or 'addDestinationLayer' is set to 'T'. This must be the location of a zip file containing GTFS data. |
The parameters assume that the region file and (if used) the demFile, ndviFile and gtfs_feed are stored in the 'data' subdirectory. See data/README.md
for more detail on obtaining the data files.
The algorithm will do the following:
- if 'downloadOsm' is set to 'T', download an OSM extract for the selected 'region' and save it as a .gpkg file.
- if 'networkFromOsm' is set to 'T', process the downloaded OSM extract to an unconfigured network in the form of an .sqlite file with layers of nodes, edges and osm tags ('osm_metadata').
- simplify the network, producing an output network in .sqlite format (with options to select .shp and .xml formats as well).
- if 'addDestination' is set to 'T', include a layer of destination points of interest for use in accessibility analysis, such as as supermarkets, doctors and schools, drawn from OSM and GTFS layers.
To run the network generation algorithm from the terminal, you need to run something like below, specifying your city and your desired output folder name as the arguments for makeNetwork()
:
Rscript -e 'source("NetworkGenerator.R"); makeNetwork(, "Melbourne", "example")'
SF package in R requires a few dependencies, see https://r-spatial.github.io/sf/ for more details.
If running R from a homebrew install, be sure to unlink suite-sparse before installing iGraph
brew unlink suite-sparse
The sf library requires the following to run
brew install gdal
brew install udunits