/school-catchment-plugin

QGIS plugin for displaying GraphHopper isochrones

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

QGIS Catchment plugin

tests codecov.io release GPLv3 license Code style: black Imports: isort pre-commit Checked with mypy

How to get started

This QGIS plugin has been created for educational planning professionals to analyse school accessibility, by calculating travel time and travel distance based on OpenStreetMap route data. The plugin has been developed together by IIEP-UNESCO and GISPO LTD.

Isochrones in QGIS

A paper is under production, to be published under the citation IIEP-UNESCO and GISPO LTD. Forthcoming 2021. Isochrone-based catchment areas for educational planning. Paris: IIEP-UNESCO. www.iiep.unesco.org/geo

Designations employed and the presentation of the materials resulting from the use of this code do not imply the expression of any opinion whatsoever from the UN, UNESCO, or IIEP-UNESCO concerning the legal status of any country, territory, city, area, authorities, concerning the delimitation of frontiers or boundaries.

This material has been partly funded by UK aid from the UK government; however it does not necessarily reflect the UK government’s official policies.


How to get started

Currently, the plugin calculates catchment areas (isochrones) for a specified layer of schools with a selected mode of transport (walking/hiking, cycling, driving) and a selected distance in metres or duration in minutes (e.g. 1500 metres, 30 minutes of transit).

The plugin employs the Graphhopper routing backend. Therefore, the user must have a Graphhopper instance running, or they may use a commercial Graphhopper service. The plugin assumes that the Graphhopper config contains at least the following routing profiles:

  profiles:
    - name: hike
      vehicle: hike
      weighting: shortest
    - name: bike
      vehicle: bike
      weighting: fastest
    - name: car
      vehicle: car
      weighting: fastest

See the graphhopper-docker repository for simple instructions on how to set up GraphHopper using Docker. The setup and config stored in that repository works directly with the tool.

Settings panel

  1. Once you know your Graphhopper address, start the plugin and select the Settings tab. Fill in the address in Graphhopper URL field.
  2. If your Graphhopper subscription requires an API key, fill in the API key field.
  3. If you wish to save the result layers automatically, select the checkbox and pick the directory you want to save the results into. Otherwise, the layer stays only in memory.

Catchment area panel

  1. Select any point layer currently open in your QGIS project.
  2. If you have filtered or selected points in the layer, you may only use selected points. Otherwise, all points will be used in the calculation.
  3. Select the distance you want to travel in minutes or meters. You may calculate multiple isochrones per point ("buckets") at the same time by setting the number of distance divisions. They will be exact divisions of the total distance, and each distance will be saved in the isochrone_distance field of the resulting isochrones. Calculating multiple isochrones per point will increase the processing time.
  4. Select the mode of transit. Walking is the default and uses all OpenStreetMap paths.
  5. Calculation time estimate is shown based on the currently selected settings. It will warn you if the run is going to take too long.
  6. Press Run to start calculating.

You may continue working in QGIS while the isochrones are fetched in the background, and you may close the dialog. The QGIS progress bar (bottom of QGIS screen) will display the process. You may cancel the calculation there. You may also start multiple calculations with different settings at the same time by pressing Run again. By opening the Log Messages Panel, you will be able to see which isochrones were not possible to calculate.

Development

Refer to development for developing this QGIS3 plugin.

Was this tool helpful? Let us know how you used it by contacting us at development@iiep.unesco.orgg

License

This plugin is licensed with GNU General Public License, version 3. See LICENSE for more information.