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.]
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.
To install the utility-route-designer package, use Python 3.12 with Poetry:
poetry install
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:
poetry run python -m pytest tests/
Expanding criteria included in the mcda_presets.py
can be done by:
- Adding a new class to the
criteria
folder. - Implementing the
get_suitability
method. - Adding the new class to the
mcda_presets.py
file. Set the group and weight of the new class.
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.
This project manages bug and enhancement using the GitHub issue tracker.
Please read CODE_OF_CONDUCT and CONTRIBUTING, for details on the process for submitting pull requests to us.
The lead developer is responsible for reviewing contributions from the community and general direction of development. When the community has grown to a size where it would be helpful, the project will set up independent community governance.
The lead developer is Jelmar Versleijen.
utility-route-designer is under: Apache License Version 2.0
The software is largely dependent on data. Data is incorporated in the example folder and is licensed separately from the repo:
- BGT: CC PDM 1.0 downloaded from PDOK
- Natura2000: CC PDM 1.0 downloaded from PDOK
- Alliander asset information: CC BY 4.0 downloaded from ArcGIS Online: gas, electricity
t.b.d.