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:
- About NetAScore
- Quickstart-guide
- The Workflow
- How to run the Project...
- Attributes & Indicators
- Configuration of the Settings
- Adapting the Mode profiles
- Implementation details & how to contribute
- Advanced docker customisations
- Requirements and Limitations
- Credits and License
To get a better impression of what this toolset and workflow provides, you can quickly start with processing a sample area.
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.ymlfile from theexamples(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.
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).
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:
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.
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)).
