The end of your holiday break didn’t slow down work on KDE Itinerary, so we have a lot of news again since the last summary blog two month ago!

New Features

The most visible new feature is the realtime status for elevators and escalators in the train station map view. I have previously written about why this is useful and where we get the data from, and meanwhile this has been fully integrated into the app.

Screenshot of KDE Itinerary's train station map showing working elevators and green and those currently out of service in red.
KDE Itinerary's train station map showing realtime status information for elevators.

Technically this requires that we match external information about elevators/escalators with OSM data, not unlike what we already have to do for railway platforms for example. This has the nice side-effect that it allows us to automatically correct common data issues on the way.

For elevators one such issue is that each floor level has its independent OSM element, rather than there being one element that spans multiple floors. We now detect that and merge this into a single elevator element, which makes the floor level navigation in our map view work in this case as well.

Another new feature in the train station map is its ability to evaluate OSM opening hours expressions.

Opening hours information for a selected element on the map presented both in textual and visual form.
Textual description of the current opening state and visual overview of the current week.

With the library for this, KOpeningHours, also being used by the Osmose OSM validation tool, a lot of work has gone into the precision and tolerance of the opening hours parser and evaluator, all also benefiting the use in KDE Itinerary.

OSM contains about 500k distinct opening hours expressions (about 1.8M total), about 16k of those are rejected as invalid by KOpeningHours (and largely for good reasons), and another 137k are considered to be not strictly valid but understood thanks to the improved parser tolerance nevertheless. This results in even values like Du Mardi au Vendredi 11h00-13h30 Le samedi 10h-19h being interpreted now that are much closer to human language than the technically correct machine readable form for this (Tu-Fr 11:00-13:30; Sa 10:00-19:00).

Infrastructure Work

The Transport APIs Repository initiative is gaining momentum, and KPublicTransport has seen a number of changes to consume this data. The Transport API Repository is a collaboration with a number of other public transport client implementors to share machine-readable descriptions of the various API endpoints, their respective protocols and parameters as well as metadata (such as the covered regions).

KPublicTransport (and thus its consumers Itinerary and KTrip) will directly benefit from this by sharing maintenance load with more people, and gaining support for more transport operators. The improved coverage metadata might also allow us to implement a much more efficient way of doing a global name-based location search.

Another thing we did to support data improvements benefiting our applications are the nightly Flatpak and Android builds of the standalone KOSMIndoorMap demo app, which should help with reviewing OSM indoor map data.

Fixes & Improvements

There’s plenty of smaller but still noteworthy changes too of course, all over the place.

Travel document extractor

  • Improved or new extractor scripts for Accor and Agoda hotel reservations, as well as some SNCF TER ticket variants.
  • Migrated to a new barcode reader API in collaboration with the ZXing developers. This simplifies our code as it provides proper support for input from “pure” sources (e.g. perfect black/white graphics rather than say blurry camera images), and gives us better performance.

Train station maps

  • Distinguish between dock-based and floating rental bikes.
  • Fix rendering of multi-polygons with multiple adjacent outer polygons. This previously resulted in bizarre glitches in complex buildings like the Frankfurt airport railway station or some of Paris Charles de Gaulle’s terminals.
  • Fix railway platform edges and airport taxiways being misrendered when having certain unnecessary OSM tags.
  • Make the element information dialog accessible for interactive elements like stairs, elevators or escalators as well via a long-press action.

Itinerary app

  • Fixed a large number of layouting and resizing glitches all over the place.
  • Fixed a few page routing issues impacting desktop users.
  • Allow to open an external map application from within the indoor map view, in case you want to see the surrounding area too.
  • Fixed timeline display for events without an associated location.
  • Network status monitoring now also works within a Flatpak, fixing automatic map download there.
  • Fixed timelines entries being wrongly calculated when occurring close toa day boundary.
  • Fixed a rounding error in the sun position math in KF5::Holidays that would result in the sun not rising if you found yourself in the wrong place at the wrong time.
  • Fixed determining of arrival/departure platforms for multi-section transfers.
  • Fixed opening the indoor map view for timeline elements that aren’t location changes (such as accommodation or events).

Contribute

While field testing and collecting travel document samples remains difficult in many parts of the world, 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, or meet us next week at FOSDEM 2021!