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 installRunning 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.pyThe 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/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:
- Add vector data to the case study geopackage in the
data/examplesfolder. - Adding a new entry to
mcda_presets.pyaccording to the pydantic modelRasterPresetCriteria. - Adding a new class to the
utility_route_planner/mcda/vector_preprocessingfolder. - Implementing the
specific_preprocessmethod. This commonly consists out reclassifying a dominant attribute.
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, CONTRIBUTING and PROJECT GOVERNANCE for details on the process for submitting pull requests to us.
This project is licensed under the Apache-2.0 - see LICENSE for details.
This project is largely dependent on data. Data is incorporated in the example folder and is licensed under their own respective Open-Source licenses:
- 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.
