osmgraphing
Welcome to the osmgraphing
-repo! :)
Goal of this repo is parsing openstreetmap-data to calculate traffic-routes and different related use-cases on it.
This repo deals with analyzing selfish routing and learning metrics for balancing load in street-networks.
All calculations should be done effectively on a single desktop instead of an expensive cluster.
Setup and usage
cargo
is the build-tool of Rust and can be used to run everything except scripts in scripts/
.
cargo run
will give you help, e.g. it tells you to use cargo run --example
.
Running this command will print names of runnable examples.
Further, refer to the examples for more details, or to cargo-docs to get details about the repo's setup and implementation.
Downloaded osm-data is provided in xml (osm
) or binary (pbf
), where nodes are related to location in latitude and longitude.
Problems will be the size-limit when downloading from openstreetmap, but there are other osm data providers like geofabrik for instance.
For testing, some simple text-based format fmi
is used.
Since they are created manually for certain tasks, parsing them - generally speaking - is unstable.
Tools creating fmi
-files are pbfextractor and multi-ch-constructor (working with contraction-hierarchies).
Requirements for large maps
In general, the requirements depend on the size of the parsed map and your machine.
Following numbers base on an 8-core-CPU and the pbf
-map Germany
running on archlinux
.
- Parsing
Germany
needs around 13 GB of RAM. - Preprocessing
Germany
(including parsing) needs less than 8 minutes. This highly depends on the number of cores. - A routing query on
Germany
of length670 km
takes around 6 seconds withbidirectional A*
. This could be improved by removing intermediate nodes (likeb
ina->b->c
), but they are kept for now.
Memory-usage and performance have been better, but now, the graph supports multiple metrics.
Small maps like Isle of Man
run on every machine and are parsed in less than a second.
Credits
The project started in the mid of 2019 as a student project. This page honors the workers and helpers of this project, sorted by their last names.
Florian B.
is the supervisor of the project since beginning and is always helping immediately with his experience and advice.
Dominic Parga Cacheiro
has been part of the project's first weeks when project-planning and learning Rust was on the scope.
He continues the work and is writing and improving the simulation.
Jena Satkunarajan
has been part of the project's first weeks when project-planning and learning Rust was on the scope.
He has implemented the first (and running) approach of the A*
-algorithm.