Skip to content

alliander-opensource/utility-route-planner

Utility Route Planner

This repository shares research on software for automatic placement of electricity cables using a combination of geo-information and graph theory.

The utility network needs to be expanded due to the energy transition. Finding a location for new infrastructure is no easy feat considering the amount of involved design criteria. This research includes the creation of a software package for automatic placement of utility network using a combination of geo-information and graph theory.

This research is being carried out at Alliander, a Dutch DSO, as part of Jelmar Versleijen's PhD with Wagening University. Read more about research at Alliander.

Details on methodology can be found in publication: [Link to be added.]

Goals for sharing

Our goal for sharing this software is to encourage research on utility route planning for distribution system operators. Researchers or education can use the real-life use cases presented in this repository to test their own algorithms. The software is not intended for production use.

Remaining challenges solve are:

  • Constraining the route to a maximum length.
  • Giving alternative routes which are similar in costs (like seen in modern navigation systems).
  • Realistic road crossings. Road crossings are typically done at a 90 degree angle through a process called pipe ramming.
  • Alignment to existing infrastructure, resulting in a more "human-like" route.

Installation

To install the utility-route-designer package, use Python 3.12 with Poetry:

poetry install

Usage

Running the main file will create utility routes for the five included cases in the data/examples folder. Optionally edit the configuration file mcda_presets.py to change the weights of the environmental criteria.

poetry run python main.py

The results are placed in the data/processed folder:

  • mcda_output.gpkg: contains the environmental criteria as vectors used in creating the suitability raster
  • benchmark_suitability_raster.vrt: the suitability raster / cost-surface used for the least-cost path analysis
  • lcpa_results.gpkg: contains the generated route as linestring

View them in QGIS or similar GIS GUI:

benchmark_results_overview.png Run tests using pytest:

poetry run python -m pytest tests/

For quick experimentation, weights of existing criteria can be changed. This can be done by editing the mcda_presets.py file.

Adding new criteria can be done by:

  1. Add vector data to the case study geopackage in the data/examples folder.
  2. Adding a new entry to mcda_presets.py according to the pydantic model RasterPresetCriteria.
  3. Adding a new class to the utility_route_planner/mcda/vector_preprocessing folder.
  4. Implementing the specific_preprocess method. This commonly consists out reclassifying a dominant attribute.

Support

If you have trouble installing, building, or using utility-route-planner, but you don't think you've encountered a genuine bug, you can ask a question in the Issues tab of the repository. If you have an idea for a new feature or a recommendation for existing features or documentation, you can also propose it in the Issues tab.

How to report a bug or a security vulnerability

This project manages bug and enhancement using the GitHub issue tracker.

Contributing

Please read CODE_OF_CONDUCT, CONTRIBUTING and PROJECT GOVERNANCE for details on the process for submitting pull requests to us.

License

This project is licensed under the Apache-2.0 - see LICENSE for details.

Licenses data

This project is largely dependent on data. Data is incorporated in the example folder and is licensed under their own respective Open-Source licenses:

Citing

t.b.d.

About

Research on software for automatic placement of electricity cables using a combination of geo-information and graph theory.

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages