██▒ █▓ ▄▄▄ ██▓ ██░ ██ ▄▄▄ ██▓ ██▓ ▄▄▄
▓██░ █▒▒████▄ ▓██▒ ▓██░ ██▒▒████▄ ▓██▒ ▓██▒ ▒████▄
▓██ █▒░▒██ ▀█▄ ▒██░ ▒██▀▀██░▒██ ▀█▄ ▒██░ ▒██░ ▒██ ▀█▄
▒██ █░░░██▄▄▄▄██ ▒██░ ░▓█ ░██ ░██▄▄▄▄██ ▒██░ ▒██░ ░██▄▄▄▄██
▒▀█░ ▓█ ▓██▒░██████▒░▓█▒░██▓ ▓█ ▓██▒░██████▒░██████▒▓█ ▓██▒
░ ▐░ ▒▒ ▓▒█░░ ▒░▓ ░ ▒ ░░▒░▒ ▒▒ ▓▒█░░ ▒░▓ ░░ ▒░▓ ░▒▒ ▓▒█░
░ ░░ ▒ ▒▒ ░░ ░ ▒ ░ ▒ ░▒░ ░ ▒ ▒▒ ░░ ░ ▒ ░░ ░ ▒ ░ ▒ ▒▒ ░
░░ ░ ▒ ░ ░ ░ ░░ ░ ░ ▒ ░ ░ ░ ░ ░ ▒
░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
░
Valhalla is an open source routing engine and accompanying libraries for use with OpenStreetMap data. Valhalla also includes tools like time+distance matrix computation, isochrones, elevation sampling, map matching and tour optimization (Travelling Salesman).
Valhalla, and all of the projects under the Valhalla organization, use the MIT License. Avatar/logo by Jordan.
OpenStreetMap data in the ./test/data
is licensed under ODbL and copyrighted by OSM contributors. Additional information on licenses and other requirements concerning the data sources most frequently used by Valhalla can be found in the docs.
There are several key features that we hope can differentiate the Valhalla project from other routing and network analysis engines. They are:
FOSSGIS e.V. hosts a demo server which is open to the public and includes a full planet graph with an open-source web app on https://valhalla.openstreetmap.de. The HTTP API is accessible on a slightly different subdomain, e.g. https://valhalla1.openstreetmap.de/isochrone. Usage of the demo server follows the usual fair-usage policy as OSRM & Nominatim demo servers (somewhat enforced by rate limits).
Valhalla is fully functional on many Linux and Mac OS distributions, and is also used on iOS and Android devices.
For Windows, not all functionality is fully supported yet. Building the Valhalla library works flawlessly, as well as the following application modules:
TOOLS
: utilities to query and benchmark various componentsDATA_TOOLS
: utilities to build input data and handle transitPYTHON_BINDINGS
: use all actions (route, isochrones, matrix etc) via the Valhalla Python library (needs a full (i.e. development) Python distribution in the PATH
)The Valhalla organization is comprised of several library modules each responsible for a different function. The layout of the various modules is as follows:
loki
and thor
.mjolnir
or as a standalone service.thor
.odin
.tyr
.odin
and support json (and eventually protocol buffer) output.Documentation is stored in the docs/
folder in this GitHub repository. It can be viewed at valhalla.github.io/valhalla.
For more information on binaries, see Command Line Tools section below and the docs.
If you want to build Valhalla from source, follow the documentation.
To run Valhalla locally or your own server, we recommend using our Docker image. Checkout our docker image here: https://github.com/orgs/valhalla/packages. Also, there's a community Docker image with more "magic" than the native one.
We publish our (very) high-level Python bindings to PyPI:
pyvalhalla
: follows Github releasespyvalhalla-weekly
: follows Github master branchNote
The below is only valid for linux-x86_x64
so far.
The Python packages don't only contain the Python bindings, they also provide access to the C++ executables, e.g. in the form of python -m valhalla valhalla_build_tiles -h
. For more details, see the Python README.
To install the native C++ executables one doesn't even need to have root permissions or even have Python installed. Simply download the desired wheel from PyPI, extract it with e.g. unzip
and run the included valhalla/bin/<binary>
directly.
We ❤️ contributions to Valhalla. They could be non-technical, e.g. translations into other languages via Transifex or documentation improvements, or technical ones like bug fixes or feature implementations. It's important to open an issue before setting out to work on a PR.
Ideally, get familiar with our Contribution guidelines first.
Valhalla includes several microbenchmarks which you can build and run using:
make benchmarks
make run-benchmarks
They are enabled by the -DENABLE_BENCHMARKS=On
CMake flag and are currently only available for Linux and MacOS.
Tip
Easily install various Valhalla command line tools like valhalla_build_tiles
with the Python bindings, e.g. via PyPI. This currently only works for linux-x64
.
valhalla_service
aka one-shot mode
If you can't (e.g. Windows Server) or don't want to have the full-fledged HTTP API running, you can have the (almost) exact same behavior with the 'valhalla_service' executable in so-called "one-shot" mode. It's simple, just pass the config file, the action (route, isochrone, matrix etc) and the stringified JSON request (or alternatively a file containing the request to circumvent shell command length issues):
valhalla_service valhalla.json isochrone '{"locations":[{"lat":42.552448,"lon":1.564865}],"costing":"auto","contours":[{"time":10,"color":"ff0000"}], "show_locations":true}'
# Alternatively you can pass a file with the same contents
valhalla_service valhalla.json isochrone isochrone_request.txt
It's important to note that all Valhalla logs for one-shot mode are piped to stderr
while the actual JSON response will be in stdout
. To completely silence the logs, pass type: ""
to midgard.logging
in the config file.
The following projects are open-source and built with the intention to make it easier to use Valhalla and its features:
mjolnir.default_speeds_config
config option.docker-compose.yml
to get a full-featured Valhalla instance.RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4