We are still working at improving Tempus, our multimodal route planner.
We recently published a new major version, that has been funded by Cerema, DRIEA and IFSTTAR, and we would like to share the recent changes that have been made to the project.
Isochrone computation
The core engine is now able to compute multimodal isochrone requests. Isochrones are used to compute locations reachable for certain transport modes after a given amount of time. We reused here the multimodal capabilities of the engine so that we can compute isochrones where the resulting itineraries may involve multiple transport mode changes, including public transits, shared bikes or cars.
Handling of historical traffic data has also been enhanced and can now be used in regular multimodal requests as well as in isochrone computations.
Improvements to the loader
Tempus relies on a PostgreSQL database as its main input data source and provides a loader that is able to convert from multiple input sources to this database schema.
The OpenStreetMap handling has been entirely rewritten, mainly for better performance and has given rise to a new project called osm2tempus.
It is aimed at importing raw .pbf files in a PostgreSQL database. The tempus format is the default one, but it could be extended to other formats. With this new module, we are not limited anymore to data that only span the area of a small region.
The public transport import part has also been reworked. We decided to rely on a dedicated Python library, gtfslib, to deal with GTFS files.
The tempus public transport format is compatible with gtfslib tools and we can then benefit from existing features, like the export of a given database back to a GTFS .zip file.
The loader is now able to import networks exported from PTV Visum. This will help bridge with the transportation modeling community.
Python API
Most of the Tempus core API is now available in Python! This greatly helps scripting of route planning requests and allowed us to improve the integration and regression tests. It has also eased the development of a web API and a PostgreSQL API (see below for further explanations)
Have a look at the Python API documentation and the Gitlab repository for more information.
PostgreSQL extension: pgtempus
Based on the aforementioned Python API, we developed a PostgreSQL extension that allows to launch route planning queries directly in SQL!
The API is inspired by PgRouting, with the significant difference that with Tempus, graphs are computed once and can stay in memory between queries, whereas with PgRouting, a graph is recomputed on each query.
Have a look at the repository for instructions and documentation.
Web API
We also developed a small Web API for Tempus, based on our Python API and Flask. It is able to answer route planning requests and will deliver (Geo)JSON in response.
For more information, have a look at the GeoJSON server repository. We also provide Ansible scripts and a small web front-end for demonstration purpose, you can find more instructions on the corresponding repository.
QGIS plugin
Since the very beginning of Tempus’ life, a QGIS plugin has existed to help debug and visualise route planning itineraries. The plugin is still there and in good shape, and it has been ported to Python 3.x / QT 5 so that it can run under QGIS 3.x as well as QGIS 2.x. The plugin is available from the main QGIS plugins repository.
Binaries for Windows
Compiling and installing all the required components of Tempus are tedious tasks.
By moving all the components to gitlab.com, instead of Github, we were able to plug them to our own Windows virtual machines that can be used both for continuous integration and for the preparation of binary packages.
The whole Tempus project is then available on our OSGeo4W distribution. As mentioned in the main documentation, we offer different ways to install Tempus under Windows, the easiest one should be to use the network installer which is based on the OSGeo4W installer.
Do not hesitate to contact us if you have interest about the Tempus project or more generally about route planning or transportation modeling algorithms and software.