osmgraphing 0.9.0

Playing around with graphs created via parsing OpenStreetMap data
Documentation

osmgraphing

Build Status master

Tag Crates.io Docs

Changelog Last commit

License

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 length 670 km takes around 6 seconds with bidirectional A*. This could be improved by removing intermediate nodes (like b in a->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.