Skip to content
plus-mobilitylabPublic

Repository files navigation

NetAScore - Network Assessment Score Toolbox for Sustainable Mobility

Shows the NetAScore logo, either with light or dark background depending on the Users settings.

NetAScore provides a toolset and automated workflow for computing bikeability, walkability and related indicators from publicly available network data sets. Currently, we provide common presets for assessing infrastructure suitability for cycling (bikeability) and walking (walkability). By editing settings files and mode profiles, additional modes or custom preferences can easily be modeled.

For global coverage, we support OpenStreetMap data as input. Additionally, Austrian authoritative data, the 'GIP' (OGD export including the new GIP 2.0), can be used if you work on an area of interest within Austria.

For citing NetAScore, please refer to following paper which introduces the software, its objectives, as well as the data and methods used: Werner, C., Wendel, R., Kaziyeva, D., Stutz, P., van der Meer, L., Effertz, L., Zagel, B., & Loidl, M. (2025). NetAScore: An open and extendible software for segment-scale bikeability and walkability. Environment and Planning B: Urban Analytics and City Science, 52(1), 265-274. https://doi.org/10.1177/23998083241293177. In case you want to refer to a specific version of the software implementation, you may add the respective Zenodo reference doi.org/10.5281/zenodo.7695369

Details regarding the bikeability assessment method as well as results of an evaluation study are provided in the following scientific publication, which is openly available via doi.org/10.1016/j.jcmr.2024.100040: Werner, C., van der Meer, L., Kaziyeva, D., Stutz, P., Wendel, R., & Loidl, M. (2024). Bikeability of road segments: An open, adjustable and extendible model. Journal of Cycling and Micromobility Research, 2, 100040.

Details on the walkability index together with results from a large evaluation study are published Open Access: doi.org/10.3390/su17083634: Stutz, P., Kaziyeva, D., Traun, C., Werner, C. & Loidl, M. (2025). Walkability at Street Level: An Indicator-Based Assessment Model. Sustainability, 17(8), 3634.

Note on versions: The publications above refer to NetAScore version 1.x. Version 2.0 changes parts of the processing workflow for better usability and indicator derivation (to reflect relevant changes in OSM/GIP input data). While tested for plausibility, results may differ. The changes are listed in the CHANGELOG.

Examples: You find example output files of NetAScore at doi.org/10.5281/zenodo.10886961.

More information can be found in the documentation:

How to get started?

To get a better impression of what this toolset and workflow provides, you can quickly start with processing a sample area.

Easy quickstart: ready-made Docker image

The easiest way to get started is running the ready-made Docker image. All you need for this to succeed is a Docker installation, running Docker Desktop (macOS / Windows) or Docker Engine (Linux) and internet connection. Then, follow these two steps:

  • download the docker-compose.yml file from the examples (use the button "Download raw file" on the GitHub page) to an empty directory
  • from within this directory, execute the following command from a terminal: docker compose run netascore

Docker will download the NetAScore image and PostgreSQL database image, setup the environment for you and finally execute the workflow for Salzburg, Austria as an example case.

What it does (example case):

NetAScore first loads an area of interest by place name from the Overpass API, then downloads the respective OpenStreetMap data and afterwards imports, processes and exports the final dataset. A new subdirectory named data will be present after successful execution. Within this folder, the assessed network is stored in netascore_salzburg.gpkg. It includes the layer edge with bikeability in columns index_bike_ft and index_bike_tf and walkability in index_walk_ft and index_walk_tf. The extensions ft and tf refer to the direction along an edge: from-to or to-from node. These values represent the assessed suitability of a segment for cycling (bikeability) and walking (walkability).

What the results look like:

NetAScore does not come with a built-in visualization module. However, you can easily visualize the bikeability and walkability index by loading the resulting geopackage in QGIS. Simply drag and drop the geopackage into a new QGIS project and select the edge layer. It opens with a predefined style showing the index of the first mode profile (higher value of both directions). Styles for the other mode profiles are available by right-clicking the edge layer (Styles > index_<profile_name>, e.g. index_walk). An index value of 0 refers to unsuitable infrastructure, whereas 1 represents well suited infrastructure.

This is an exemplary visualization of bikeability for Salzburg, Austria:

Bikeability result for Salzburg, Austria

How to proceed?

Most likely, you want to execute an analysis for a specific area of your interest - please have a look at the documentation for how to achieve this with just a few changes in the settings file. If you need more detailed instructions or want to know more about the project, please consult the documentation.

Running NetAScore locally (without Docker)

For running NetAScore without Docker you need a PostgreSQL database with PostGIS extension and several software packages and Python libraries on your machine. You find all details in the section "Run NetAScore manually with Python".

NetAScore uses the following technologies:

  • Python 3.9 or newer (tested with 3.13) and several Python libraries
  • PostgreSQL with PostGIS extension (database)
  • osm2pgsql (1.9 or newer) and osmium - for OSM imports
  • GDAL tools (ogr2ogr, gdal_translate) incl. the PostgreSQL driver
  • psql (PostgreSQL client)
  • raster2pgsql (part of PostGIS) - for importing a DEM (optional dataset dem)
  • git (optional) - to record the code state of NetAScore in the output metadata
  • Docker (optional) - see above

Recommended installation: conda environment. environment.yml includes all of the above except the database and raster2pgsql:

conda env create -f environment.yml
conda activate netascore

raster2pgsql is only needed for DEM imports. On Linux and macOS you can add it to the environment with conda install -n netascore -c conda-forge postgis. On Windows (where PostGIS is not available via conda), use raster2pgsql of your PostGIS installation (e.g. installed with the Stack Builder of PostgreSQL) - add its directory (the bin directory of PostgreSQL, e.g. C:\Program Files\PostgreSQL\18\bin) to the PATH environment variable.

Alternative: system packages and pip. Install osm2pgsql, osmium, GDAL (incl. Python bindings), and the PostgreSQL / PostGIS client tools with the package manager of your system (or individual installers), then the Python libraries with pip install -r requirements.txt (this is how the Docker image is built). Note: the Python package gdal needs to match the GDAL version installed on your system (e.g. pip install gdal==$(gdal-config --version)).