Time for another update on what has happened around KDE Itinerary recently. Similar as in the last report the reduced global travel activity resulted in a focus on features related to mapping and navigation around large transportation hubs. KDE Akademy also fell into that time, with a number of relevant topics for this being discussed there.

New Features

Something that nicely shows what is possible by putting the building blocks we already have together is the support for rental bikes or scooters. It turned out KPublicTransport, which was originally meant to provide access to real-time data for trains and busses, only needed a few small extensions to access information about shared vehicles from OpenTripPlanner or GBFS services. Similarly, our station map only needed a small adaptor to visualize this in the right spots.

Map showing colored and labeled indicators for how many shared bikes are available at a rental bike dock.
Real-time availability of shared bikes at rental bike docking stations.

This already works in 200+ cities all over the world, but there is of course a lot more to be done to integrate shared vehicle workflows properly, and to further extend the coverage.

Another improvement in our station maps are the now interactive stairs, escalators and elevators. Clicking or tapping on them switches the current floor to the floor stairs or escalators lead to, or in case of elevators let you select the destination floor.

Map showing stairs between two train station floors.
Stairs and escalators rendered with the correct width, and interactive to change floors.

This makes for a much more intuitive inter-floor navigation. Behind the scenes this is one small step towards building up a full navigation graph of the station or airport on the map, and it helps to identify topology errors in the OSM data used for this.

Another such step is the identification and highlighting of arrival and departure gates at airports.

Map showing an airport terminal with a highlighted departure gate.
Departure gate highlighted on the airport map.

Similar support for railway platforms is still being worked on. Railway platforms are more complicated in this context though, due to their much larger spatial extend (a few hundred meters along a possibly curved path, while a boarding gate is essentially just a door), their organization in different sections, and the much greater variety of modeling in OSM that needs to be considered.

Infrastructure Work

Behind the scenes the most effort went into the maps.kde.org upgrade to provide up-to-date and improved OSM raw data tiles. This involved further fixes to the tile generator, work on static builds to ease deployment, and full-scale performance tests on different types of storage hardware.

But there’s more of course:

  • KPublicTransport now offers additional query parameters to constrain location and journey searches, and now models different types of locations and vehicles to supported bike or scooter sharing operators.
  • Public transport coverage got extended to Estonia and broken/changed backend services in Switzerland, Luxembourg, Vorarlberg/Austria and Rheinland-Pfalz/Germany were fixed. This has been supported by improved QA tools for the backend services.
  • Public transport backend services with broken certificate setups can now enable TLS nevertheless, due to support for shipping the missing CA certificates manually. This brings transport security to Belgium, Estonia and Nordrhein-Westphalen/Germany providers.
  • The Android builds were upgraded to Qt 5.15.1. This fixes a Qt issue in 5.15.0 preventing KDE Itinerary from opening files successfully.
  • While there are still few travel document samples for improving the KItinerary extraction engine, there were a few for (virtual) event tickets. So we now support the Indico conference management system, which is used for Linux App Summit for example.

Fixes & Improvements

There’s plenty of smaller but still noteworthy changes too of course, such as the calendar import for KDE Itinerary on Android having been fixed with newer DavDroid versions which changed encoding of custom iCal proeprties. Most of those changes however also are related to the train station maps:

  • KDE Itinerary now selects the right platform when showing the map for an intermediate stop.
  • Multi-gauge railway tracks, or those using unusual metrics no longer cause bizarre rendering glitches.
  • OSM input data filtering is now also done declaratively using MapCSS. This removes a number of cases of irrelevant floor levels being shown, which e.g. only contained roof elements or underground water canals.
  • The map renderer supports Breeze-like SVG icon coloring, and has a large part of OSM’s Carto icon set integrated now.
  • A number of issues with geometry reassembly have been fixed, both client-side and in the tile generator.
  • As you can see in the above screenshots, countless details in the map styling have been improved, such as the wide use of icons, marking of non-public amenities, correct stair width rendering and many more.
  • The map renderer got an infrastructure for showing overlays provided by non-OSM sources, which you can see in action above as well.
  • MapCSS evaluation time was cut in half, which more than makes up for the increased complexity of the default map style.
  • Labels following way paths (such as on streets) now overlap a lot less.
  • The information box for a selected map element now can also show plug and authentication details for electrical charging stations.
  • A more compact memory layout of OSM data structures reduces the RAM cost for a typical train station by about 10%.
  • Buildings spanning multiple floor levels are now seen on all levels even if they aren’t modelled with floor-level detail in OSM.

Besides all the work in our code, there’s also ongoing work to fix floor level topology errors in the OSM data.


While field testing and collecting training samples of travel documents is still difficult, there’s plenty of other things that can be done. The KDE Itinerary workboard or the more specialized indoor map workboard show what’s on the todo list, and are a good place for collecting new ideas. For questions and suggestions, please feel free to join us on the KDE PIM mailing list or in the #kontact channel on Matrix or Freenode.