Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mborne/graph-experiments

[DEV]Graph processing experiments based on boost::graph and GDAL / OGR to load data.
https://github.com/mborne/graph-experiments

boost-graph cxx dijkstra-shortest-path experiment gdal graph-algorithms isochrones multi-indexing

Last synced: 26 days ago
JSON representation

[DEV]Graph processing experiments based on boost::graph and GDAL / OGR to load data.

Awesome Lists containing this project

README

        

# graph-experiments

## Description

Graph processing experiments based on **boost::graph** and **GDAL / OGR** to load data.

## Motivation

**This project is not maintained.** It has been created in 2019 to prepare work about tour planning at [IGNF](https://github.com/IGNF).

## Key Features

* [src/egraph/routing/PathTree.h](src/egraph/routing/PathTree.h) is using [Boost Multi-Index](https://www.boost.org/doc/libs/1_63_0/libs/multi_index/doc/index.html) to index `(visited,cost)` to optimize **Dijkstra path finding**.
* [src/egraph/FeatureGraph.h](src/egraph/FeatureGraph.h) is providing a [Boost graph](https://www.boost.org/doc/libs/1_75_0/libs/graph/doc/index.html) where vertex and edges are [OGRFeature](https://gdal.org/doxygen/classOGRFeature.html) from [GDAL](https://gdal.org/doxygen/index.html)

## Build

* [CMake - Building on debian or ubuntu](docs/build-debian.md)
* [CMake - Building with docker](docs/build-docker.md)
* [CMake - Building on windows with Microsoft Visual Studio (nmake) and miniconda](docs/build-windows.md)

## Examples

* [example/demo-boost.cpp](example/demo-boost.cpp) : Getting started with `boost::graph`
* [example/demo-dijkstra.cpp](example/demo-dijkstra.cpp) : Shortest path computation
* [example/demo-ogr.cpp](example/demo-ogr.cpp) : Load `FeatureGraph` using GDAL/OGR and compute some `ShortestPathTree`

```bash
example/demo-ogr "PG:dbname=gis" "graph.vertex" "graph.edge"
# or
example/demo-ogr "PG:dbname=gis" "graph.vertex" "graph.edge_distance_weighted"
```

![Dijkstra shortest path tree](img/path-tree-1.png)

## Performance debug

```bash
valgrind --tool=callgrind example/demo-ogr 'PG:dbname=gis' 'graph.vertex' 'graph.edge_distance_weighted'
kcachegrind $(ls -tr callgrind.out.* | tail -1)
```

## License

[MIT](LICENSE)