[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1107942: unblock: kpublictransport/25.04.2-1



Package: release.debian.org
Severity: normal
X-Debbugs-Cc: kpublictransport@packages.debian.org, Debian Qt/KDE Maintainers <debian-qt-kde@lists.debian.org>
Control: affects -1 + src:kpublictransport
User: release.debian.org@packages.debian.org
Usertags: unblock

Dear Release Team,

please unblock package kpublictransport.

[ Reason ]
It contains the following changes:
* New upstream release (25.04.1).
  - Treat neither a positive nor a negative cache hit as missing backend.
  - Adapt test data to different storage format in 25.04.
  - Fix ÖBB onboard API journey data parsing and extract track information.
  - Add QML module dependency information.
  - Fix MOTIS v2 admin area parsing.
* New upstream release (25.04.2).
  - Fix OTP arrival platform parsing.
  - Fix parsing of EFA operator names.
  - Continue backend search until we find at least one that covers both
  sides.
  - Consider all higher coverage types as well for journey coverage checks.
  - Make line asset loading also work for stopovers without coordinates.
  - Retain trip identifiers in DB trip queries.
  - Add onboard API support for Ouigo ES.
  - Check type before reading a numeric JSON value.
  - Include Estonia in DB's coverage area. (kde#504042)
  - Make mode filters work on the bwegt EFA endpoint.

The complete debdiff includes a lot of json data and translations so I’m
attaching a simple diff trimmed down from these for your convenience:
    diff -ur --exclude=po --exclude=*.json --exclude=*.geojson kpublictransport-25.04.[02]

[ Tests ]
- Upstream test suite passes in sbuild.

[ Risks ]
Upstream point releases only contain targetted commits. Further fixes
can easily be backported or the changes reverted.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing


Thanks!


unblock kpublictransport/25.04.2-1
diff -Nru kpublictransport-25.04.0/autotests/data/motis2/location-addresses.in.json kpublictransport-25.04.2/autotests/data/motis2/location-addresses.in.json
--- kpublictransport-25.04.0/autotests/data/motis2/location-addresses.in.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/motis2/location-addresses.in.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1 @@
+[{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.15267522E1,"lon":5.0755676E0,"street":"Guido Gezellelaan","houseNumber":"106","areas":[{"name":"Netherlands","adminLevel":2E0,"matched":false,"default":false},{"name":"Netherlands","adminLevel":3E0,"matched":false,"default":false},{"name":"North Brabant","adminLevel":4E0,"matched":false,"default":false},{"name":"Goirle","adminLevel":8E0,"matched":false,"default":true},{"name":"Goirle","adminLevel":1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.09369449E1,"lon":3.1515325E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"8800","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"West Flanders","adminLevel":6E0,"matched":false,"default":false},{"name":"Roeselare","adminLevel":7E0,"matched":false,"default":false},{"name":"Roeselare","adminLevel":8E0,"matched":false,"default":true},{"name":"Rumbeke","adminLevel":9E0,"matched":false,"default":false},{"name":"8800","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.08029964E1,"lon":3.1099533E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"8930","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"West Flanders","adminLevel":6E0,"matched":false,"default":false},{"name":"Kortrijk","adminLevel":7E0,"matched":false,"default":false},{"name":"Menin","adminLevel":8E0,"matched":false,"default":true},{"name":"Menin","adminLevel":9E0,"matched":false,"default":false},{"name":"8930","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.11760485E1,"lon":4.4460617E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"2640","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"Antwerp","adminLevel":6E0,"matched":false,"default":false},{"name":"Antwerp","adminLevel":7E0,"matched":false,"default":false},{"name":"Mortsel","adminLevel":8E0,"matched":false,"default":true},{"name":"2640","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.08356444E1,"lon":3.2374619E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"8501","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"West Flanders","adminLevel":6E0,"matched":false,"default":false},{"name":"Kortrijk","adminLevel":7E0,"matched":false,"default":false},{"name":"Kortrijk","adminLevel":8E0,"matched":false,"default":true},{"name":"Heule","adminLevel":9E0,"matched":false,"default":false},{"name":"8501","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.10298863E1,"lon":5.2735448E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"3550","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"Limburg","adminLevel":6E0,"matched":false,"default":false},{"name":"Hasselt","adminLevel":7E0,"matched":false,"default":false},{"name":"Heusden-Zolder","adminLevel":8E0,"matched":false,"default":true},{"name":"Heusden","adminLevel":9E0,"matched":false,"default":false},{"name":"3550","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.23460099E1,"lon":5.6386994E0,"street":"Guido Gezellelaan","houseNumber":"106","areas":[{"name":"Netherlands","adminLevel":2E0,"matched":false,"default":false},{"name":"Netherlands","adminLevel":3E0,"matched":false,"default":false},{"name":"Gelderland","adminLevel":4E0,"matched":false,"default":false},{"name":"Harderwijk","adminLevel":8E0,"matched":false,"default":true},{"name":"Harderwijk","adminLevel":1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.22800496E1,"lon":4.5847613E0,"street":"Guido Gezellelaan","houseNumber":"106","areas":[{"name":"Netherlands","adminLevel":2E0,"matched":false,"default":false},{"name":"Netherlands","adminLevel":3E0,"matched":false,"default":false},{"name":"South Holland","adminLevel":4E0,"matched":false,"default":false},{"name":"Hillegom","adminLevel":8E0,"matched":false,"default":true},{"name":"Hillegom","adminLevel":1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.09813402E1,"lon":3.5336731E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"9800","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"East Flanders","adminLevel":6E0,"matched":false,"default":false},{"name":"Gent","adminLevel":7E0,"matched":false,"default":false},{"name":"Deinze","adminLevel":8E0,"matched":false,"default":true},{"name":"Deinze","adminLevel":9E0,"matched":false,"default":false},{"name":"9800","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0},{"type":"ADDRESS","tokens":[[0E0,5E0],[6E0,1.1E1],[1.8E1,3E0]],"name":"Guido Gezellelaan 106","id":"","lat":5.10741563E1,"lon":4.2911523E0,"street":"Guido Gezellelaan","houseNumber":"106","zip":"2870","areas":[{"name":"Belgium","adminLevel":2E0,"matched":false,"default":false},{"name":"Flanders","adminLevel":4E0,"matched":false,"default":false},{"name":"Antwerp","adminLevel":6E0,"matched":false,"default":false},{"name":"Mechelen","adminLevel":7E0,"matched":false,"default":false},{"name":"Puurs-Sint-Amands","adminLevel":8E0,"matched":false,"default":true},{"name":"Puurs","adminLevel":9E0,"matched":false,"default":false},{"name":"2870","adminLevel":1.1E1,"matched":false,"default":false}],"score":-7.5E0}]
diff -Nru kpublictransport-25.04.0/autotests/data/motis2/location-addresses.out.json kpublictransport-25.04.2/autotests/data/motis2/location-addresses.out.json
--- kpublictransport-25.04.0/autotests/data/motis2/location-addresses.out.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/motis2/location-addresses.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1,105 @@
+[
+    {
+        "country": "NL",
+        "latitude": 51.5267522,
+        "locality": "Goirle",
+        "longitude": 5.0755676,
+        "name": "Guido Gezellelaan 106",
+        "region": "NL-NB",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 50.9369449,
+        "locality": "Roeselare",
+        "longitude": 3.1515325,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "8800",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "latitude": 50.8029964,
+        "locality": "Menin",
+        "longitude": 3.1099533,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "8930",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 51.1760485,
+        "locality": "Mortsel",
+        "longitude": 4.4460617,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "2640",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 50.8356444,
+        "locality": "Kortrijk",
+        "longitude": 3.2374619,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "8501",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 51.0298863,
+        "locality": "Heusden-Zolder",
+        "longitude": 5.2735448,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "3550",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "NL",
+        "latitude": 52.3460099,
+        "locality": "Harderwijk",
+        "longitude": 5.6386994,
+        "name": "Guido Gezellelaan 106",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "NL",
+        "latitude": 52.2800496,
+        "locality": "Hillegom",
+        "longitude": 4.5847613,
+        "name": "Guido Gezellelaan 106",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 50.9813402,
+        "locality": "Deinze",
+        "longitude": 3.5336731,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "9800",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    },
+    {
+        "country": "BE",
+        "latitude": 51.0741563,
+        "locality": "Puurs-Sint-Amands",
+        "longitude": 4.2911523,
+        "name": "Guido Gezellelaan 106",
+        "postalCode": "2870",
+        "region": "BE-VLG",
+        "streetAddress": "Guido Gezellelaan 106",
+        "type": "Address"
+    }
+]
diff -Nru kpublictransport-25.04.0/autotests/data/motis2/location-geo-search.out.json kpublictransport-25.04.2/autotests/data/motis2/location-geo-search.out.json
--- kpublictransport-25.04.0/autotests/data/motis2/location-geo-search.out.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/data/motis2/location-geo-search.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -6,6 +6,7 @@
             "motis": "ch-opentransportdataswiss_Parent8023179"
         },
         "latitude": 51.345474,
+        "locality": "Mitte",
         "longitude": 12.382064,
         "name": "Leipzig Hbf",
         "postalCode": "04109",
@@ -20,6 +21,7 @@
             "motis": "ch-opentransportdataswiss_Parent8023179"
         },
         "latitude": 51.345474,
+        "locality": "Mitte",
         "longitude": 12.382064,
         "name": "Leipzig Hbf",
         "postalCode": "04109",
@@ -34,6 +36,7 @@
             "motis": "node/3575061420"
         },
         "latitude": 51.3450271,
+        "locality": "Mitte",
         "longitude": 12.3817197,
         "name": "Deutsche Bahn",
         "postalCode": "04109",
@@ -47,6 +50,7 @@
             "motis": "node/3575061421"
         },
         "latitude": 51.3450365,
+        "locality": "Mitte",
         "longitude": 12.3816896,
         "name": "Deutsche Bahn",
         "postalCode": "04109",
@@ -60,6 +64,7 @@
             "motis": "node/2202309900"
         },
         "latitude": 51.3448745,
+        "locality": "Mitte",
         "longitude": 12.3819165,
         "name": "Deutsche Bahn",
         "postalCode": "04109",
@@ -73,6 +78,7 @@
             "motis": "node/6510099866"
         },
         "latitude": 51.3449263,
+        "locality": "Mitte",
         "longitude": 12.3815594,
         "name": "Thüringer Grill",
         "postalCode": "04109",
@@ -86,6 +92,7 @@
             "motis": "node/2140362880"
         },
         "latitude": 51.3452195,
+        "locality": "Mitte",
         "longitude": 12.3811144,
         "name": "Deutsche Bahn",
         "postalCode": "04109",
@@ -99,6 +106,7 @@
             "motis": "node/6510099867"
         },
         "latitude": 51.3450387,
+        "locality": "Mitte",
         "longitude": 12.3812945,
         "name": "Crepes-Express",
         "postalCode": "04109",
@@ -112,6 +120,7 @@
             "motis": "node/2140362881"
         },
         "latitude": 51.3452333,
+        "locality": "Mitte",
         "longitude": 12.3810763,
         "name": "Deutsche Bahn",
         "postalCode": "04109",
@@ -125,6 +134,7 @@
             "motis": "node/6510099869"
         },
         "latitude": 51.344935,
+        "locality": "Mitte",
         "longitude": 12.3814312,
         "name": "Bäcker Lukas",
         "postalCode": "04109",
diff -Nru kpublictransport-25.04.0/autotests/data/motis2/location-name-search.out.json kpublictransport-25.04.2/autotests/data/motis2/location-name-search.out.json
--- kpublictransport-25.04.0/autotests/data/motis2/location-name-search.out.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/data/motis2/location-name-search.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -6,6 +6,7 @@
             "motis": "ch-opentransportdataswiss_Parent8014228"
         },
         "latitude": 48.993515,
+        "locality": "Südweststadt",
         "longitude": 8.402185,
         "name": "Karlsruhe Hbf",
         "postalCode": "76137",
@@ -19,6 +20,7 @@
             "motis": "ch-opentransportdataswiss_Parent8014228"
         },
         "latitude": 48.993515,
+        "locality": "Südweststadt",
         "longitude": 8.402185,
         "name": "Karlsruhe Hbf",
         "postalCode": "76137",
@@ -32,6 +34,7 @@
             "motis": "ch-opentransportdataswiss_Parent8014228"
         },
         "latitude": 48.993515,
+        "locality": "Südweststadt",
         "longitude": 8.402185,
         "name": "Karlsruhe Hbf",
         "postalCode": "76137",
@@ -45,6 +48,7 @@
             "motis": "ch-opentransportdataswiss_Parent8014228"
         },
         "latitude": 48.993515,
+        "locality": "Südweststadt",
         "longitude": 8.402185,
         "name": "Karlsruhe Hbf",
         "postalCode": "76137",
@@ -70,6 +74,7 @@
             "motis": "node/5876433289"
         },
         "latitude": 49.0053102,
+        "locality": "Daxlanden",
         "longitude": 8.3335171,
         "name": "Karlsruher Hof",
         "postalCode": "76189",
@@ -82,6 +87,7 @@
             "motis": "way/483431081"
         },
         "latitude": 52.7029911,
+        "locality": "Oberkrämer",
         "longitude": 13.1329952,
         "name": "Karlsruher Feld",
         "postalCode": "16727",
@@ -95,6 +101,7 @@
             "motis": "way/137200489"
         },
         "latitude": 52.7017056,
+        "locality": "Oberkrämer",
         "longitude": 13.1108933,
         "name": "Karlsruher Feld",
         "postalCode": "16727",
@@ -108,6 +115,7 @@
             "motis": "way/483431086"
         },
         "latitude": 52.7055211,
+        "locality": "Oberkrämer",
         "longitude": 13.1184815,
         "name": "Karlsruher Feld",
         "postalCode": "16727",
@@ -121,6 +129,7 @@
             "motis": "way/483431082"
         },
         "latitude": 52.7021982,
+        "locality": "Oberkrämer",
         "longitude": 13.122589,
         "name": "Karlsruher Feld",
         "postalCode": "16727",
diff -Nru kpublictransport-25.04.0/autotests/data/onboard-journey/oebb-railnet-tracks.in.json kpublictransport-25.04.2/autotests/data/onboard-journey/oebb-railnet-tracks.in.json
--- kpublictransport-25.04.0/autotests/data/onboard-journey/oebb-railnet-tracks.in.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/onboard-journey/oebb-railnet-tracks.in.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1 @@
+{"lineNumber":"633","tripNumber":"633","trainType":"RJ","won":"2","startStation":"Wien Hbf","destination":{"all":"Villach Hbf","de":"Villach Hbf"},"stations":[{"id":"8103000","name":{"de":"Wien Hbf"},"track":{"de":"5A-B"},"departure":{"scheduled":"18:24","forecast":"19:19"},"arrival":{"scheduled":"","forecast":null},"exitSide":null,"distanceFromPrevious":null,"connections":null},{"id":"8100514","name":{"de":"Wien Meidling"},"track":{"de":"5"},"departure":{"scheduled":"18:31","forecast":"19:29"},"arrival":{"scheduled":"18:29","forecast":"19:27"},"exitSide":null,"distanceFromPrevious":3437,"connections":null},{"id":"8100516","name":{"de":"Wiener Neustadt Hbf"},"track":{"de":"4"},"departure":{"scheduled":"18:56","forecast":"20:05"},"arrival":{"scheduled":"18:54","forecast":"20:02"},"exitSide":null,"distanceFromPrevious":44681,"connections":null},{"id":"8100032","name":{"de":"Bruck\/Mur"},"track":{"de":"1"},"departure":{"scheduled":"20:15","forecast":"21:25"},"arrival":{"scheduled":"20:13","forecast":"21:24"},"exitSide":null,"distanceFromPrevious":109685,"connections":[{"type":"EC","lineNumber":"219","track":{"de":"3"},"destination":{"de":"Graz Hbf"},"departure":{"scheduled":"21:50","forecast":"21:50"},"reachable":"yes","comment":null},{"type":"D","lineNumber":"852","track":{"de":"2"},"destination":{"de":"Wien Hbf"},"departure":{"scheduled":"22:03","forecast":"22:03"},"reachable":"yes","comment":null},{"type":"REX","lineNumber":"4587","track":{"de":"1"},"destination":{"de":"Unzmarkt Bahnhof"},"departure":{"scheduled":"22:06","forecast":"22:06"},"reachable":"yes","comment":null},{"type":"S","lineNumber":"9","track":{"de":"3D-F"},"destination":{"de":"M\u00fcrzzuschlag Bahnhof"},"departure":{"scheduled":"22:08","forecast":"22:08"},"reachable":"yes","comment":null}]},{"id":"8100070","name":{"de":"Leoben Hbf"},"track":{"de":"3"},"departure":{"scheduled":"20:26","forecast":"21:36"},"arrival":{"scheduled":"20:24","forecast":"21:34"},"exitSide":null,"distanceFromPrevious":16491,"connections":null},{"id":"8100072","name":{"de":"Knittelfeld"},"track":{"de":"2"},"departure":{"scheduled":"20:47","forecast":"21:55"},"arrival":{"scheduled":"20:45","forecast":"21:53"},"exitSide":null,"distanceFromPrevious":30209,"connections":null},{"id":"8100073","name":{"de":"Judenburg"},"track":{"de":"3"},"departure":{"scheduled":"20:59","forecast":"22:07"},"arrival":{"scheduled":"20:58","forecast":"22:05"},"exitSide":null,"distanceFromPrevious":15076,"connections":null},{"id":"8100074","name":{"de":"Unzmarkt"},"track":{"de":"3"},"departure":{"scheduled":"21:13","forecast":"22:20"},"arrival":{"scheduled":"21:12","forecast":"22:19"},"exitSide":null,"distanceFromPrevious":18935,"connections":null},{"id":"8100096","name":{"de":"Treibach-Althofen"},"track":{"de":"2"},"departure":{"scheduled":"21:51","forecast":"22:56"},"arrival":{"scheduled":"21:49","forecast":"22:55"},"exitSide":null,"distanceFromPrevious":47367,"connections":null},{"id":"8100078","name":{"de":"St. Veit\/Glan"},"track":{"de":"3"},"departure":{"scheduled":"22:08","forecast":"23:13"},"arrival":{"scheduled":"22:06","forecast":"23:11"},"exitSide":null,"distanceFromPrevious":21880,"connections":null},{"id":"8100085","name":{"de":"Klagenfurt Hbf"},"track":{"de":"1"},"departure":{"scheduled":"22:21","forecast":"23:25"},"arrival":{"scheduled":"22:19","forecast":"23:23"},"exitSide":null,"distanceFromPrevious":20072,"connections":null},{"id":"8100081","name":{"de":"Velden am W\u00f6rthersee"},"track":{"de":"2"},"departure":{"scheduled":"22:36","forecast":"23:38"},"arrival":{"scheduled":"22:34","forecast":"23:37"},"exitSide":null,"distanceFromPrevious":22002,"connections":null},{"id":"8100147","name":{"de":"Villach Hbf"},"track":{"de":"7"},"departure":{"scheduled":"","forecast":null},"arrival":{"scheduled":"22:46","forecast":"23:47"},"exitSide":null,"distanceFromPrevious":16381,"connections":null}],"latestStatus":{"dateTime":"2025-04-22T20:40:40+0200","situation":{"type":"drive-to","station":"8100032"},"gpsPosition":{"latitude":"47.658528","longitude":"15.816061","orientation":"253.640"},"speed":60,"distance":{"meters":49892,"fromStation":"8100516"},"totalDelay":4260,"comment":null},"currentStation":{"id":"8100516","name":{"de":"Wiener Neustadt Hbf"},"track":{"de":"4"},"departure":{"scheduled":"18:56","forecast":"20:05"},"arrival":{"scheduled":"18:54","forecast":"20:02"},"exitSide":null,"distanceFromPrevious":44681,"connections":null},"nextStation":{"id":"8100032","name":{"de":"Bruck\/Mur"},"track":{"de":"1"},"departure":{"scheduled":"20:15","forecast":"21:25"},"arrival":{"scheduled":"20:13","forecast":"21:24"},"exitSide":null,"distanceFromPrevious":109685,"connections":[{"type":"EC","lineNumber":"219","track":{"de":"3"},"destination":{"de":"Graz Hbf"},"departure":{"scheduled":"21:50","forecast":"21:50"},"reachable":"yes","comment":null},{"type":"D","lineNumber":"852","track":{"de":"2"},"destination":{"de":"Wien Hbf"},"departure":{"scheduled":"22:03","forecast":"22:03"},"reachable":"yes","comment":null},{"type":"REX","lineNumber":"4587","track":{"de":"1"},"destination":{"de":"Unzmarkt Bahnhof"},"departure":{"scheduled":"22:06","forecast":"22:06"},"reachable":"yes","comment":null},{"type":"S","lineNumber":"9","track":{"de":"3D-F"},"destination":{"de":"M\u00fcrzzuschlag Bahnhof"},"departure":{"scheduled":"22:08","forecast":"22:08"},"reachable":"yes","comment":null}]},"nextStationProgress":45}
diff -Nru kpublictransport-25.04.0/autotests/data/onboard-journey/oebb-railnet-tracks.out.json kpublictransport-25.04.2/autotests/data/onboard-journey/oebb-railnet-tracks.out.json
--- kpublictransport-25.04.0/autotests/data/onboard-journey/oebb-railnet-tracks.out.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/onboard-journey/oebb-railnet-tracks.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1,201 @@
+{
+    "sections": [
+        {
+            "disruptionEffect": "NormalService",
+            "expectedArrivalPlatform": "7",
+            "expectedArrivalTime": "2025-04-22T23:47:00",
+            "expectedDeparturePlatform": "5A-B",
+            "expectedDepartureTime": "2025-04-22T19:19:00",
+            "from": {
+                "identifier": {
+                    "ibnr": "8103000"
+                },
+                "name": "Wien Hbf",
+                "type": "Stop"
+            },
+            "intermediateStops": [
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T19:27:00",
+                    "expectedDepartureTime": "2025-04-22T19:29:00",
+                    "expectedPlatform": "5",
+                    "scheduledArrivalTime": "2025-04-22T18:29:00",
+                    "scheduledDepartureTime": "2025-04-22T18:31:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100514"
+                        },
+                        "name": "Wien Meidling",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T20:02:00",
+                    "expectedDepartureTime": "2025-04-22T20:05:00",
+                    "expectedPlatform": "4",
+                    "scheduledArrivalTime": "2025-04-22T18:54:00",
+                    "scheduledDepartureTime": "2025-04-22T18:56:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100516"
+                        },
+                        "name": "Wiener Neustadt Hbf",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T21:24:00",
+                    "expectedDepartureTime": "2025-04-22T21:25:00",
+                    "expectedPlatform": "1",
+                    "scheduledArrivalTime": "2025-04-22T20:13:00",
+                    "scheduledDepartureTime": "2025-04-22T20:15:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100032"
+                        },
+                        "name": "Bruck/Mur",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T21:34:00",
+                    "expectedDepartureTime": "2025-04-22T21:36:00",
+                    "expectedPlatform": "3",
+                    "scheduledArrivalTime": "2025-04-22T20:24:00",
+                    "scheduledDepartureTime": "2025-04-22T20:26:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100070"
+                        },
+                        "name": "Leoben Hbf",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T21:53:00",
+                    "expectedDepartureTime": "2025-04-22T21:55:00",
+                    "expectedPlatform": "2",
+                    "scheduledArrivalTime": "2025-04-22T20:45:00",
+                    "scheduledDepartureTime": "2025-04-22T20:47:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100072"
+                        },
+                        "name": "Knittelfeld",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T22:05:00",
+                    "expectedDepartureTime": "2025-04-22T22:07:00",
+                    "expectedPlatform": "3",
+                    "scheduledArrivalTime": "2025-04-22T20:58:00",
+                    "scheduledDepartureTime": "2025-04-22T20:59:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100073"
+                        },
+                        "name": "Judenburg",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T22:19:00",
+                    "expectedDepartureTime": "2025-04-22T22:20:00",
+                    "expectedPlatform": "3",
+                    "scheduledArrivalTime": "2025-04-22T21:12:00",
+                    "scheduledDepartureTime": "2025-04-22T21:13:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100074"
+                        },
+                        "name": "Unzmarkt",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T22:55:00",
+                    "expectedDepartureTime": "2025-04-22T22:56:00",
+                    "expectedPlatform": "2",
+                    "scheduledArrivalTime": "2025-04-22T21:49:00",
+                    "scheduledDepartureTime": "2025-04-22T21:51:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100096"
+                        },
+                        "name": "Treibach-Althofen",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T23:11:00",
+                    "expectedDepartureTime": "2025-04-22T23:13:00",
+                    "expectedPlatform": "3",
+                    "scheduledArrivalTime": "2025-04-22T22:06:00",
+                    "scheduledDepartureTime": "2025-04-22T22:08:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100078"
+                        },
+                        "name": "St. Veit/Glan",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T23:23:00",
+                    "expectedDepartureTime": "2025-04-22T23:25:00",
+                    "expectedPlatform": "1",
+                    "scheduledArrivalTime": "2025-04-22T22:19:00",
+                    "scheduledDepartureTime": "2025-04-22T22:21:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100085"
+                        },
+                        "name": "Klagenfurt Hbf",
+                        "type": "Stop"
+                    }
+                },
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-04-22T23:37:00",
+                    "expectedDepartureTime": "2025-04-22T23:38:00",
+                    "expectedPlatform": "2",
+                    "scheduledArrivalTime": "2025-04-22T22:34:00",
+                    "scheduledDepartureTime": "2025-04-22T22:36:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "ibnr": "8100081"
+                        },
+                        "name": "Velden am Wörthersee",
+                        "type": "Stop"
+                    }
+                }
+            ],
+            "mode": "PublicTransport",
+            "route": {
+                "line": {
+                    "mode": "LongDistanceTrain",
+                    "name": "RJ 633"
+                }
+            },
+            "scheduledArrivalTime": "2025-04-22T22:46:00",
+            "scheduledDepartureTime": "2025-04-22T18:24:00",
+            "to": {
+                "identifier": {
+                    "ibnr": "8100147"
+                },
+                "name": "Villach Hbf",
+                "type": "Stop"
+            }
+        }
+    ]
+}
diff -Nru kpublictransport-25.04.0/autotests/data/onboard-journey/ouigo-es.in.json kpublictransport-25.04.2/autotests/data/onboard-journey/ouigo-es.in.json
--- kpublictransport-25.04.0/autotests/data/onboard-journey/ouigo-es.in.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/onboard-journey/ouigo-es.in.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1 @@
+{"commercialId":"06470","codeCirculation":"71801-60000","distance":627.945,"stations":[{"name":"BARCELONA-SANTS","rank":1,"code":"71801","departAt":"2025-05-11T06:25:00+02:00","arrivalAt":null,"theoricalDepartTime":"2025-05-11T06:25:00+02:00","theoricalArrivalTime":null,"coords":{"coordXLng":2.1394773,"coordYLat":41.379335,"type":"WGS84"}},{"name":"ZARAGOZA-DELICIAS","rank":31,"code":"04040","departAt":"2025-05-11T07:51:00+02:00","arrivalAt":"2025-05-11T07:48:00+02:00","theoricalDepartTime":"2025-05-11T07:51:00+02:00","theoricalArrivalTime":"2025-05-11T07:48:00+02:00","coords":{"coordXLng":null,"coordYLat":null,"type":"WGS84"}},{"name":"MADRID-P.ATOCHA-ALMUDENA GRANDES","rank":57,"code":"60000","departAt":null,"arrivalAt":"2025-05-11T09:17:00+02:00","theoricalDepartTime":null,"theoricalArrivalTime":"2025-05-11T09:17:00+02:00","coords":{"coordXLng":-3.6895915,"coordYLat":40.4053548,"type":"WGS84"}}],"path":[{"longitude":2.114931667,"latitude":41.347183333},{"longitude":2.11427,"latitude":41.34149},{"longitude":2.113211667,"latitude":41.339381667},{"longitude":2.098121667,"latitude":41.333598333},{"longitude":2.05653,"latitude":41.33894},{"longitude":2.055688333,"latitude":41.347643333},{"longitude":2.052683333,"latitude":41.352723333},{"longitude":2.043811667,"latitude":41.362456667},{"longitude":2.035668333,"latitude":41.368218333},{"longitude":2.032016667,"latitude":41.371831667},{"longitude":2.027041667,"latitude":41.378195},{"longitude":2.019986667,"latitude":41.389961667},{"longitude":2.004876667,"latitude":41.418816667},{"longitude":2.002036667,"latitude":41.43155},{"longitude":2.00002,"latitude":41.436393333},{"longitude":1.996546667,"latitude":41.440693333},{"longitude":1.989565,"latitude":41.446318333},{"longitude":1.98374,"latitude":41.452691667},{"longitude":1.978441667,"latitude":41.462631667},{"longitude":1.973223333,"latitude":41.469736667},{"longitude":1.965351667,"latitude":41.475105},{"longitude":1.945948333,"latitude":41.481265},{"longitude":1.927555,"latitude":41.483076667},{"longitude":1.904416667,"latitude":41.484075},{"longitude":1.893826667,"latitude":41.482116667},{"longitude":1.875806667,"latitude":41.473725},{"longitude":1.861266667,"latitude":41.462718333},{"longitude":1.84614,"latitude":41.453255},{"longitude":1.815068333,"latitude":41.429423333},{"longitude":1.781368333,"latitude":41.41182},{"longitude":1.737838333,"latitude":41.382495},{"longitude":1.728466667,"latitude":41.374138333},{"longitude":1.697356667,"latitude":41.337293333},{"longitude":1.689711667,"latitude":41.330155},{"longitude":1.68026,"latitude":41.324086667},{"longitude":1.657668333,"latitude":41.31304},{"longitude":1.622995,"latitude":41.292685},{"longitude":1.567343333,"latitude":41.246145},{"longitude":1.560125,"latitude":41.2411},{"longitude":1.547781667,"latitude":41.23499},{"longitude":1.523825,"latitude":41.226591667},{"longitude":1.51739,"latitude":41.223241667},{"longitude":1.495836667,"latitude":41.208771667},{"longitude":1.475958333,"latitude":41.199161667},{"longitude":1.470151667,"latitude":41.198938333},{"longitude":1.410985,"latitude":41.18076},{"longitude":1.382193333,"latitude":41.177575},{"longitude":1.362693333,"latitude":41.177708333},{"longitude":1.353133333,"latitude":41.179},{"longitude":1.325255,"latitude":41.185078333},{"longitude":1.289523333,"latitude":41.189008333},{"longitude":1.249358333,"latitude":41.196391667},{"longitude":1.240698333,"latitude":41.199241667},{"longitude":1.228716667,"latitude":41.20493},{"longitude":1.218173333,"latitude":41.211988333},{"longitude":1.209281667,"latitude":41.220241667},{"longitude":1.202266667,"latitude":41.229491667},{"longitude":1.193043333,"latitude":41.245715},{"longitude":1.189806667,"latitude":41.25618},{"longitude":1.186765,"latitude":41.274448333},{"longitude":1.18539,"latitude":41.29482},{"longitude":1.186395,"latitude":41.313505},{"longitude":1.189305,"latitude":41.32277},{"longitude":1.193371667,"latitude":41.342171667},{"longitude":1.192833333,"latitude":41.350586667},{"longitude":1.19091,"latitude":41.358428333},{"longitude":1.186251667,"latitude":41.368308333},{"longitude":1.179088333,"latitude":41.37789},{"longitude":1.16982,"latitude":41.386313333},{"longitude":1.158543333,"latitude":41.393453333},{"longitude":1.146255,"latitude":41.398765},{"longitude":1.129291667,"latitude":41.403051667},{"longitude":1.116885,"latitude":41.404331667},{"longitude":1.047056667,"latitude":41.406881667},{"longitude":1.012438333,"latitude":41.412495},{"longitude":0.984966667,"latitude":41.415273333},{"longitude":0.974278333,"latitude":41.417725},{"longitude":0.963996667,"latitude":41.421235},{"longitude":0.931735,"latitude":41.435686667},{"longitude":0.91679,"latitude":41.444485},{"longitude":0.900998333,"latitude":41.45677},{"longitude":0.87748,"latitude":41.483191667},{"longitude":0.869048333,"latitude":41.490583333},{"longitude":0.85843,"latitude":41.497518333},{"longitude":0.827031667,"latitude":41.515541667},{"longitude":0.765103333,"latitude":41.545396667},{"longitude":0.747843333,"latitude":41.55242},{"longitude":0.734251667,"latitude":41.55657},{"longitude":0.705783333,"latitude":41.563376667},{"longitude":0.672043333,"latitude":41.56879},{"longitude":0.648891667,"latitude":41.574753333},{"longitude":0.640015,"latitude":41.577991667},{"longitude":0.624163333,"latitude":41.586738333},{"longitude":0.589678333,"latitude":41.612635},{"longitude":0.57752,"latitude":41.618868333},{"longitude":0.564011667,"latitude":41.623091667},{"longitude":0.554358333,"latitude":41.62475},{"longitude":0.51524,"latitude":41.628671667},{"longitude":0.49173,"latitude":41.629313333},{"longitude":0.440066667,"latitude":41.625461667},{"longitude":0.406045,"latitude":41.6238},{"longitude":0.347606667,"latitude":41.615743333},{"longitude":0.327888333,"latitude":41.615788333},{"longitude":0.303566667,"latitude":41.61937},{"longitude":0.289866667,"latitude":41.620313333},{"longitude":0.274228333,"latitude":41.619326667},{"longitude":0.240383333,"latitude":41.614056667},{"longitude":0.222261667,"latitude":41.610021667},{"longitude":0.174388333,"latitude":41.593305},{"longitude":0.144355,"latitude":41.585993333},{"longitude":0.131186667,"latitude":41.581811667},{"longitude":0.088356667,"latitude":41.56445},{"longitude":0.080101667,"latitude":41.560301667},{"longitude":0.069046667,"latitude":41.552748333},{"longitude":0.052483333,"latitude":41.538803333},{"longitude":0.040676667,"latitude":41.532243333},{"longitude":0.027831667,"latitude":41.52754},{"longitude":0.009873333,"latitude":41.524145},{"longitude":-0.006003333,"latitude":41.523803333},{"longitude":-0.030476667,"latitude":41.526675},{"longitude":-0.055115,"latitude":41.528228333},{"longitude":-0.13655,"latitude":41.526243333},{"longitude":-0.219903333,"latitude":41.529263333},{"longitude":-0.309343333,"latitude":41.529705},{"longitude":-0.39218,"latitude":41.53547},{"longitude":-0.471231667,"latitude":41.536545},{"longitude":-0.533526667,"latitude":41.530046667},{"longitude":-0.54813,"latitude":41.527691667},{"longitude":-0.561716667,"latitude":41.523226667},{"longitude":-0.586511667,"latitude":41.512053333},{"longitude":-0.616766667,"latitude":41.501365},{"longitude":-0.630618333,"latitude":41.498373333},{"longitude":-0.644931667,"latitude":41.497506667},{"longitude":-0.663973333,"latitude":41.499746667},{"longitude":-0.677311667,"latitude":41.503873333},{"longitude":-0.685536667,"latitude":41.50773},{"longitude":-0.69666,"latitude":41.515215},{"longitude":-0.712333333,"latitude":41.52929},{"longitude":-0.723385,"latitude":41.536546667},{"longitude":-0.801128333,"latitude":41.575},{"longitude":-0.808768333,"latitude":41.579393333},{"longitude":-0.822976667,"latitude":41.589313333},{"longitude":-0.839378333,"latitude":41.597108333},{"longitude":-0.848466667,"latitude":41.599875},{"longitude":-0.862611667,"latitude":41.602426667},{"longitude":-0.886895,"latitude":41.603103333},{"longitude":-0.901553333,"latitude":41.604571667},{"longitude":-0.976468333,"latitude":41.619885},{"longitude":-1.002103333,"latitude":41.628908333},{"longitude":-1.037571667,"latitude":41.637153333},{"longitude":-1.049888333,"latitude":41.641346667},{"longitude":-1.111166667,"latitude":41.673148333},{"longitude":-1.13297,"latitude":41.681803333},{"longitude":-1.169816667,"latitude":41.692693333},{"longitude":-1.179323333,"latitude":41.694726667},{"longitude":-1.198971667,"latitude":41.696343333},{"longitude":-1.21849,"latitude":41.69461},{"longitude":-1.23242,"latitude":41.691218333},{"longitude":-1.249518333,"latitude":41.683991667},{"longitude":-1.284131667,"latitude":41.663526667},{"longitude":-1.290795,"latitude":41.658353333},{"longitude":-1.299023333,"latitude":41.649911667},{"longitude":-1.306793333,"latitude":41.637801667},{"longitude":-1.31043,"latitude":41.627805},{"longitude":-1.311923333,"latitude":41.617268333},{"longitude":-1.312133333,"latitude":41.599066667},{"longitude":-1.31496,"latitude":41.588306667},{"longitude":-1.320241667,"latitude":41.577896667},{"longitude":-1.329298333,"latitude":41.564648333},{"longitude":-1.334183333,"latitude":41.55822},{"longitude":-1.340133333,"latitude":41.552336667},{"longitude":-1.350523333,"latitude":41.54482},{"longitude":-1.366535,"latitude":41.537165},{"longitude":-1.492641667,"latitude":41.499828333},{"longitude":-1.505136667,"latitude":41.495035},{"longitude":-1.51626,"latitude":41.488808333},{"longitude":-1.525786667,"latitude":41.481581667},{"longitude":-1.541253333,"latitude":41.465391667},{"longitude":-1.547835,"latitude":41.456665},{"longitude":-1.552615,"latitude":41.447215},{"longitude":-1.554581667,"latitude":41.44055},{"longitude":-1.55742,"latitude":41.417291667},{"longitude":-1.586398333,"latitude":41.380115},{"longitude":-1.621636667,"latitude":41.35582},{"longitude":-1.656791667,"latitude":41.336323333},{"longitude":-1.665105,"latitude":41.332333333},{"longitude":-1.673928333,"latitude":41.329365},{"longitude":-1.74074,"latitude":41.31547},{"longitude":-1.759076667,"latitude":41.314366667},{"longitude":-1.786003333,"latitude":41.316226667},{"longitude":-1.79621,"latitude":41.31581},{"longitude":-1.833663333,"latitude":41.310705},{"longitude":-1.845185,"latitude":41.307398333},{"longitude":-1.871051667,"latitude":41.297305},{"longitude":-1.919795,"latitude":41.276505},{"longitude":-1.931178333,"latitude":41.269913333},{"longitude":-1.944588333,"latitude":41.259641667},{"longitude":-1.95185,"latitude":41.255056667},{"longitude":-1.968398333,"latitude":41.247703333},{"longitude":-2.015168333,"latitude":41.236475},{"longitude":-2.116743333,"latitude":41.21746},{"longitude":-2.134365,"latitude":41.210888333},{"longitude":-2.157745,"latitude":41.198331667},{"longitude":-2.204643333,"latitude":41.182348333},{"longitude":-2.218181667,"latitude":41.178891667},{"longitude":-2.251373333,"latitude":41.174531667},{"longitude":-2.268851667,"latitude":41.168991667},{"longitude":-2.310835,"latitude":41.147148333},{"longitude":-2.362935,"latitude":41.111218333},{"longitude":-2.403461667,"latitude":41.087126667},{"longitude":-2.41624,"latitude":41.075988333},{"longitude":-2.443756667,"latitude":41.042281667},{"longitude":-2.452626667,"latitude":41.034108333},{"longitude":-2.459685,"latitude":41.029106667},{"longitude":-2.60181,"latitude":40.950396667},{"longitude":-2.624661667,"latitude":40.936345},{"longitude":-2.649565,"latitude":40.924531667},{"longitude":-2.668318333,"latitude":40.912798333},{"longitude":-2.68471,"latitude":40.904746667},{"longitude":-2.765083333,"latitude":40.872971667},{"longitude":-2.858846667,"latitude":40.84163},{"longitude":-2.875425,"latitude":40.834055},{"longitude":-2.919458333,"latitude":40.804628333},{"longitude":-2.963945,"latitude":40.765123333},{"longitude":-2.977401667,"latitude":40.754488333},{"longitude":-3.026141667,"latitude":40.725086667},{"longitude":-3.039671667,"latitude":40.714486667},{"longitude":-3.045288333,"latitude":40.708455},{"longitude":-3.057553333,"latitude":40.692328333},{"longitude":-3.061485,"latitude":40.685491667},{"longitude":-3.078018333,"latitude":40.650491667},{"longitude":-3.102145,"latitude":40.610128333},{"longitude":-3.109411667,"latitude":40.60073},{"longitude":-3.118605,"latitude":40.592368333},{"longitude":-3.216793333,"latitude":40.51514},{"longitude":-3.222901667,"latitude":40.509326667},{"longitude":-3.236045,"latitude":40.493545},{"longitude":-3.242121667,"latitude":40.487713333},{"longitude":-3.248901667,"latitude":40.48244},{"longitude":-3.260423333,"latitude":40.475886667},{"longitude":-3.268933333,"latitude":40.472276667},{"longitude":-3.29998,"latitude":40.461585},{"longitude":-3.333496667,"latitude":40.447075},{"longitude":-3.357068333,"latitude":40.434016667},{"longitude":-3.370301667,"latitude":40.429353333},{"longitude":-3.384386667,"latitude":40.426476667},{"longitude":-3.394031667,"latitude":40.425593333},{"longitude":-3.422915,"latitude":40.426495},{"longitude":-3.44183,"latitude":40.424688333},{"longitude":-3.458956667,"latitude":40.42002},{"longitude":-3.49786,"latitude":40.403488333},{"longitude":-3.506411667,"latitude":40.401366667},{"longitude":-3.526403333,"latitude":40.398113333},{"longitude":-3.534358333,"latitude":40.395511667},{"longitude":-3.543455,"latitude":40.390685},{"longitude":-3.548376667,"latitude":40.386748333},{"longitude":-3.554208333,"latitude":40.37997},{"longitude":-3.559546667,"latitude":40.36981},{"longitude":-3.563101667,"latitude":40.364946667},{"longitude":-3.567625,"latitude":40.360528333},{"longitude":-3.58069,"latitude":40.351333333},{"longitude":-3.588878333,"latitude":40.346773333},{"longitude":-3.597466667,"latitude":40.34339},{"longitude":-3.629373333,"latitude":40.3357},{"longitude":-3.639193333,"latitude":40.335053333},{"longitude":-3.650695,"latitude":40.337515},{"longitude":-3.657601667,"latitude":40.341181667},{"longitude":-3.669283333,"latitude":40.351718333},{"longitude":-3.673593333,"latitude":40.358086667},{"longitude":-3.678408333,"latitude":40.370721667},{"longitude":-3.682025,"latitude":40.377773333},{"longitude":-3.680888333,"latitude":40.381893333},{"longitude":-3.67357,"latitude":40.389638333},{"longitude":-3.672926667,"latitude":40.392373333},{"longitude":-3.673631667,"latitude":40.395125},{"longitude":-3.677448333,"latitude":40.399638333},{"longitude":-3.686803333,"latitude":40.402866667},{"longitude":-3.689203333,"latitude":40.405026667}]}
diff -Nru kpublictransport-25.04.0/autotests/data/onboard-journey/ouigo-es.out.json kpublictransport-25.04.2/autotests/data/onboard-journey/ouigo-es.out.json
--- kpublictransport-25.04.0/autotests/data/onboard-journey/ouigo-es.out.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/onboard-journey/ouigo-es.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1,1193 @@
+{
+    "sections": [
+        {
+            "disruptionEffect": "NormalService",
+            "expectedArrivalTime": {
+                "timezone": "Europe/Madrid",
+                "value": "2025-05-11T09:17:00+02:00"
+            },
+            "expectedDepartureTime": {
+                "timezone": "Europe/Madrid",
+                "value": "2025-05-11T06:25:00+02:00"
+            },
+            "from": {
+                "country": "ES",
+                "identifier": {
+                    "uic": "7171801"
+                },
+                "latitude": 41.379335,
+                "longitude": 2.1394773,
+                "name": "BARCELONA-SANTS",
+                "region": "ES-CT",
+                "type": "Stop"
+            },
+            "intermediateStops": [
+                {
+                    "disruptionEffect": "NormalService",
+                    "expectedArrivalTime": "2025-05-11T07:48:00+02:00",
+                    "expectedDepartureTime": "2025-05-11T07:51:00+02:00",
+                    "scheduledArrivalTime": "2025-05-11T07:48:00+02:00",
+                    "scheduledDepartureTime": "2025-05-11T07:51:00+02:00",
+                    "stopPoint": {
+                        "identifier": {
+                            "uic": "7104040"
+                        },
+                        "latitude": 0,
+                        "longitude": 0,
+                        "name": "ZARAGOZA-DELICIAS",
+                        "type": "Stop"
+                    }
+                }
+            ],
+            "mode": "PublicTransport",
+            "path": {
+                "sections": [
+                    {
+                        "path": {
+                            "coordinates": [
+                                [
+                                    2.114931667,
+                                    41.347183333
+                                ],
+                                [
+                                    2.11427,
+                                    41.34149
+                                ],
+                                [
+                                    2.113211667,
+                                    41.339381667
+                                ],
+                                [
+                                    2.098121667,
+                                    41.333598333
+                                ],
+                                [
+                                    2.05653,
+                                    41.33894
+                                ],
+                                [
+                                    2.055688333,
+                                    41.347643333
+                                ],
+                                [
+                                    2.052683333,
+                                    41.352723333
+                                ],
+                                [
+                                    2.043811667,
+                                    41.362456667
+                                ],
+                                [
+                                    2.035668333,
+                                    41.368218333
+                                ],
+                                [
+                                    2.032016667,
+                                    41.371831667
+                                ],
+                                [
+                                    2.027041667,
+                                    41.378195
+                                ],
+                                [
+                                    2.019986667,
+                                    41.389961667
+                                ],
+                                [
+                                    2.004876667,
+                                    41.418816667
+                                ],
+                                [
+                                    2.002036667,
+                                    41.43155
+                                ],
+                                [
+                                    2.00002,
+                                    41.436393333
+                                ],
+                                [
+                                    1.996546667,
+                                    41.440693333
+                                ],
+                                [
+                                    1.989565,
+                                    41.446318333
+                                ],
+                                [
+                                    1.98374,
+                                    41.452691667
+                                ],
+                                [
+                                    1.978441667,
+                                    41.462631667
+                                ],
+                                [
+                                    1.973223333,
+                                    41.469736667
+                                ],
+                                [
+                                    1.965351667,
+                                    41.475105
+                                ],
+                                [
+                                    1.945948333,
+                                    41.481265
+                                ],
+                                [
+                                    1.927555,
+                                    41.483076667
+                                ],
+                                [
+                                    1.904416667,
+                                    41.484075
+                                ],
+                                [
+                                    1.893826667,
+                                    41.482116667
+                                ],
+                                [
+                                    1.875806667,
+                                    41.473725
+                                ],
+                                [
+                                    1.861266667,
+                                    41.462718333
+                                ],
+                                [
+                                    1.84614,
+                                    41.453255
+                                ],
+                                [
+                                    1.815068333,
+                                    41.429423333
+                                ],
+                                [
+                                    1.781368333,
+                                    41.41182
+                                ],
+                                [
+                                    1.737838333,
+                                    41.382495
+                                ],
+                                [
+                                    1.728466667,
+                                    41.374138333
+                                ],
+                                [
+                                    1.697356667,
+                                    41.337293333
+                                ],
+                                [
+                                    1.689711667,
+                                    41.330155
+                                ],
+                                [
+                                    1.68026,
+                                    41.324086667
+                                ],
+                                [
+                                    1.657668333,
+                                    41.31304
+                                ],
+                                [
+                                    1.622995,
+                                    41.292685
+                                ],
+                                [
+                                    1.567343333,
+                                    41.246145
+                                ],
+                                [
+                                    1.560125,
+                                    41.2411
+                                ],
+                                [
+                                    1.547781667,
+                                    41.23499
+                                ],
+                                [
+                                    1.523825,
+                                    41.226591667
+                                ],
+                                [
+                                    1.51739,
+                                    41.223241667
+                                ],
+                                [
+                                    1.495836667,
+                                    41.208771667
+                                ],
+                                [
+                                    1.475958333,
+                                    41.199161667
+                                ],
+                                [
+                                    1.470151667,
+                                    41.198938333
+                                ],
+                                [
+                                    1.410985,
+                                    41.18076
+                                ],
+                                [
+                                    1.382193333,
+                                    41.177575
+                                ],
+                                [
+                                    1.362693333,
+                                    41.177708333
+                                ],
+                                [
+                                    1.353133333,
+                                    41.179
+                                ],
+                                [
+                                    1.325255,
+                                    41.185078333
+                                ],
+                                [
+                                    1.289523333,
+                                    41.189008333
+                                ],
+                                [
+                                    1.249358333,
+                                    41.196391667
+                                ],
+                                [
+                                    1.240698333,
+                                    41.199241667
+                                ],
+                                [
+                                    1.228716667,
+                                    41.20493
+                                ],
+                                [
+                                    1.218173333,
+                                    41.211988333
+                                ],
+                                [
+                                    1.209281667,
+                                    41.220241667
+                                ],
+                                [
+                                    1.202266667,
+                                    41.229491667
+                                ],
+                                [
+                                    1.193043333,
+                                    41.245715
+                                ],
+                                [
+                                    1.189806667,
+                                    41.25618
+                                ],
+                                [
+                                    1.186765,
+                                    41.274448333
+                                ],
+                                [
+                                    1.18539,
+                                    41.29482
+                                ],
+                                [
+                                    1.186395,
+                                    41.313505
+                                ],
+                                [
+                                    1.189305,
+                                    41.32277
+                                ],
+                                [
+                                    1.193371667,
+                                    41.342171667
+                                ],
+                                [
+                                    1.192833333,
+                                    41.350586667
+                                ],
+                                [
+                                    1.19091,
+                                    41.358428333
+                                ],
+                                [
+                                    1.186251667,
+                                    41.368308333
+                                ],
+                                [
+                                    1.179088333,
+                                    41.37789
+                                ],
+                                [
+                                    1.16982,
+                                    41.386313333
+                                ],
+                                [
+                                    1.158543333,
+                                    41.393453333
+                                ],
+                                [
+                                    1.146255,
+                                    41.398765
+                                ],
+                                [
+                                    1.129291667,
+                                    41.403051667
+                                ],
+                                [
+                                    1.116885,
+                                    41.404331667
+                                ],
+                                [
+                                    1.047056667,
+                                    41.406881667
+                                ],
+                                [
+                                    1.012438333,
+                                    41.412495
+                                ],
+                                [
+                                    0.984966667,
+                                    41.415273333
+                                ],
+                                [
+                                    0.974278333,
+                                    41.417725
+                                ],
+                                [
+                                    0.963996667,
+                                    41.421235
+                                ],
+                                [
+                                    0.931735,
+                                    41.435686667
+                                ],
+                                [
+                                    0.91679,
+                                    41.444485
+                                ],
+                                [
+                                    0.900998333,
+                                    41.45677
+                                ],
+                                [
+                                    0.87748,
+                                    41.483191667
+                                ],
+                                [
+                                    0.869048333,
+                                    41.490583333
+                                ],
+                                [
+                                    0.85843,
+                                    41.497518333
+                                ],
+                                [
+                                    0.827031667,
+                                    41.515541667
+                                ],
+                                [
+                                    0.765103333,
+                                    41.545396667
+                                ],
+                                [
+                                    0.747843333,
+                                    41.55242
+                                ],
+                                [
+                                    0.734251667,
+                                    41.55657
+                                ],
+                                [
+                                    0.705783333,
+                                    41.563376667
+                                ],
+                                [
+                                    0.672043333,
+                                    41.56879
+                                ],
+                                [
+                                    0.648891667,
+                                    41.574753333
+                                ],
+                                [
+                                    0.640015,
+                                    41.577991667
+                                ],
+                                [
+                                    0.624163333,
+                                    41.586738333
+                                ],
+                                [
+                                    0.589678333,
+                                    41.612635
+                                ],
+                                [
+                                    0.57752,
+                                    41.618868333
+                                ],
+                                [
+                                    0.564011667,
+                                    41.623091667
+                                ],
+                                [
+                                    0.554358333,
+                                    41.62475
+                                ],
+                                [
+                                    0.51524,
+                                    41.628671667
+                                ],
+                                [
+                                    0.49173,
+                                    41.629313333
+                                ],
+                                [
+                                    0.440066667,
+                                    41.625461667
+                                ],
+                                [
+                                    0.406045,
+                                    41.6238
+                                ],
+                                [
+                                    0.347606667,
+                                    41.615743333
+                                ],
+                                [
+                                    0.327888333,
+                                    41.615788333
+                                ],
+                                [
+                                    0.303566667,
+                                    41.61937
+                                ],
+                                [
+                                    0.289866667,
+                                    41.620313333
+                                ],
+                                [
+                                    0.274228333,
+                                    41.619326667
+                                ],
+                                [
+                                    0.240383333,
+                                    41.614056667
+                                ],
+                                [
+                                    0.222261667,
+                                    41.610021667
+                                ],
+                                [
+                                    0.174388333,
+                                    41.593305
+                                ],
+                                [
+                                    0.144355,
+                                    41.585993333
+                                ],
+                                [
+                                    0.131186667,
+                                    41.581811667
+                                ],
+                                [
+                                    0.088356667,
+                                    41.56445
+                                ],
+                                [
+                                    0.080101667,
+                                    41.560301667
+                                ],
+                                [
+                                    0.069046667,
+                                    41.552748333
+                                ],
+                                [
+                                    0.052483333,
+                                    41.538803333
+                                ],
+                                [
+                                    0.040676667,
+                                    41.532243333
+                                ],
+                                [
+                                    0.027831667,
+                                    41.52754
+                                ],
+                                [
+                                    0.009873333,
+                                    41.524145
+                                ],
+                                [
+                                    -0.006003333,
+                                    41.523803333
+                                ],
+                                [
+                                    -0.030476667,
+                                    41.526675
+                                ],
+                                [
+                                    -0.055115,
+                                    41.528228333
+                                ],
+                                [
+                                    -0.13655,
+                                    41.526243333
+                                ],
+                                [
+                                    -0.219903333,
+                                    41.529263333
+                                ],
+                                [
+                                    -0.309343333,
+                                    41.529705
+                                ],
+                                [
+                                    -0.39218,
+                                    41.53547
+                                ],
+                                [
+                                    -0.471231667,
+                                    41.536545
+                                ],
+                                [
+                                    -0.533526667,
+                                    41.530046667
+                                ],
+                                [
+                                    -0.54813,
+                                    41.527691667
+                                ],
+                                [
+                                    -0.561716667,
+                                    41.523226667
+                                ],
+                                [
+                                    -0.586511667,
+                                    41.512053333
+                                ],
+                                [
+                                    -0.616766667,
+                                    41.501365
+                                ],
+                                [
+                                    -0.630618333,
+                                    41.498373333
+                                ],
+                                [
+                                    -0.644931667,
+                                    41.497506667
+                                ],
+                                [
+                                    -0.663973333,
+                                    41.499746667
+                                ],
+                                [
+                                    -0.677311667,
+                                    41.503873333
+                                ],
+                                [
+                                    -0.685536667,
+                                    41.50773
+                                ],
+                                [
+                                    -0.69666,
+                                    41.515215
+                                ],
+                                [
+                                    -0.712333333,
+                                    41.52929
+                                ],
+                                [
+                                    -0.723385,
+                                    41.536546667
+                                ],
+                                [
+                                    -0.801128333,
+                                    41.575
+                                ],
+                                [
+                                    -0.808768333,
+                                    41.579393333
+                                ],
+                                [
+                                    -0.822976667,
+                                    41.589313333
+                                ],
+                                [
+                                    -0.839378333,
+                                    41.597108333
+                                ],
+                                [
+                                    -0.848466667,
+                                    41.599875
+                                ],
+                                [
+                                    -0.862611667,
+                                    41.602426667
+                                ],
+                                [
+                                    -0.886895,
+                                    41.603103333
+                                ],
+                                [
+                                    -0.901553333,
+                                    41.604571667
+                                ],
+                                [
+                                    -0.976468333,
+                                    41.619885
+                                ],
+                                [
+                                    -1.002103333,
+                                    41.628908333
+                                ],
+                                [
+                                    -1.037571667,
+                                    41.637153333
+                                ],
+                                [
+                                    -1.049888333,
+                                    41.641346667
+                                ],
+                                [
+                                    -1.111166667,
+                                    41.673148333
+                                ],
+                                [
+                                    -1.13297,
+                                    41.681803333
+                                ],
+                                [
+                                    -1.169816667,
+                                    41.692693333
+                                ],
+                                [
+                                    -1.179323333,
+                                    41.694726667
+                                ],
+                                [
+                                    -1.198971667,
+                                    41.696343333
+                                ],
+                                [
+                                    -1.21849,
+                                    41.69461
+                                ],
+                                [
+                                    -1.23242,
+                                    41.691218333
+                                ],
+                                [
+                                    -1.249518333,
+                                    41.683991667
+                                ],
+                                [
+                                    -1.284131667,
+                                    41.663526667
+                                ],
+                                [
+                                    -1.290795,
+                                    41.658353333
+                                ],
+                                [
+                                    -1.299023333,
+                                    41.649911667
+                                ],
+                                [
+                                    -1.306793333,
+                                    41.637801667
+                                ],
+                                [
+                                    -1.31043,
+                                    41.627805
+                                ],
+                                [
+                                    -1.311923333,
+                                    41.617268333
+                                ],
+                                [
+                                    -1.312133333,
+                                    41.599066667
+                                ],
+                                [
+                                    -1.31496,
+                                    41.588306667
+                                ],
+                                [
+                                    -1.320241667,
+                                    41.577896667
+                                ],
+                                [
+                                    -1.329298333,
+                                    41.564648333
+                                ],
+                                [
+                                    -1.334183333,
+                                    41.55822
+                                ],
+                                [
+                                    -1.340133333,
+                                    41.552336667
+                                ],
+                                [
+                                    -1.350523333,
+                                    41.54482
+                                ],
+                                [
+                                    -1.366535,
+                                    41.537165
+                                ],
+                                [
+                                    -1.492641667,
+                                    41.499828333
+                                ],
+                                [
+                                    -1.505136667,
+                                    41.495035
+                                ],
+                                [
+                                    -1.51626,
+                                    41.488808333
+                                ],
+                                [
+                                    -1.525786667,
+                                    41.481581667
+                                ],
+                                [
+                                    -1.541253333,
+                                    41.465391667
+                                ],
+                                [
+                                    -1.547835,
+                                    41.456665
+                                ],
+                                [
+                                    -1.552615,
+                                    41.447215
+                                ],
+                                [
+                                    -1.554581667,
+                                    41.44055
+                                ],
+                                [
+                                    -1.55742,
+                                    41.417291667
+                                ],
+                                [
+                                    -1.586398333,
+                                    41.380115
+                                ],
+                                [
+                                    -1.621636667,
+                                    41.35582
+                                ],
+                                [
+                                    -1.656791667,
+                                    41.336323333
+                                ],
+                                [
+                                    -1.665105,
+                                    41.332333333
+                                ],
+                                [
+                                    -1.673928333,
+                                    41.329365
+                                ],
+                                [
+                                    -1.74074,
+                                    41.31547
+                                ],
+                                [
+                                    -1.759076667,
+                                    41.314366667
+                                ],
+                                [
+                                    -1.786003333,
+                                    41.316226667
+                                ],
+                                [
+                                    -1.79621,
+                                    41.31581
+                                ],
+                                [
+                                    -1.833663333,
+                                    41.310705
+                                ],
+                                [
+                                    -1.845185,
+                                    41.307398333
+                                ],
+                                [
+                                    -1.871051667,
+                                    41.297305
+                                ],
+                                [
+                                    -1.919795,
+                                    41.276505
+                                ],
+                                [
+                                    -1.931178333,
+                                    41.269913333
+                                ],
+                                [
+                                    -1.944588333,
+                                    41.259641667
+                                ],
+                                [
+                                    -1.95185,
+                                    41.255056667
+                                ],
+                                [
+                                    -1.968398333,
+                                    41.247703333
+                                ],
+                                [
+                                    -2.015168333,
+                                    41.236475
+                                ],
+                                [
+                                    -2.116743333,
+                                    41.21746
+                                ],
+                                [
+                                    -2.134365,
+                                    41.210888333
+                                ],
+                                [
+                                    -2.157745,
+                                    41.198331667
+                                ],
+                                [
+                                    -2.204643333,
+                                    41.182348333
+                                ],
+                                [
+                                    -2.218181667,
+                                    41.178891667
+                                ],
+                                [
+                                    -2.251373333,
+                                    41.174531667
+                                ],
+                                [
+                                    -2.268851667,
+                                    41.168991667
+                                ],
+                                [
+                                    -2.310835,
+                                    41.147148333
+                                ],
+                                [
+                                    -2.362935,
+                                    41.111218333
+                                ],
+                                [
+                                    -2.403461667,
+                                    41.087126667
+                                ],
+                                [
+                                    -2.41624,
+                                    41.075988333
+                                ],
+                                [
+                                    -2.443756667,
+                                    41.042281667
+                                ],
+                                [
+                                    -2.452626667,
+                                    41.034108333
+                                ],
+                                [
+                                    -2.459685,
+                                    41.029106667
+                                ],
+                                [
+                                    -2.60181,
+                                    40.950396667
+                                ],
+                                [
+                                    -2.624661667,
+                                    40.936345
+                                ],
+                                [
+                                    -2.649565,
+                                    40.924531667
+                                ],
+                                [
+                                    -2.668318333,
+                                    40.912798333
+                                ],
+                                [
+                                    -2.68471,
+                                    40.904746667
+                                ],
+                                [
+                                    -2.765083333,
+                                    40.872971667
+                                ],
+                                [
+                                    -2.858846667,
+                                    40.84163
+                                ],
+                                [
+                                    -2.875425,
+                                    40.834055
+                                ],
+                                [
+                                    -2.919458333,
+                                    40.804628333
+                                ],
+                                [
+                                    -2.963945,
+                                    40.765123333
+                                ],
+                                [
+                                    -2.977401667,
+                                    40.754488333
+                                ],
+                                [
+                                    -3.026141667,
+                                    40.725086667
+                                ],
+                                [
+                                    -3.039671667,
+                                    40.714486667
+                                ],
+                                [
+                                    -3.045288333,
+                                    40.708455
+                                ],
+                                [
+                                    -3.057553333,
+                                    40.692328333
+                                ],
+                                [
+                                    -3.061485,
+                                    40.685491667
+                                ],
+                                [
+                                    -3.078018333,
+                                    40.650491667
+                                ],
+                                [
+                                    -3.102145,
+                                    40.610128333
+                                ],
+                                [
+                                    -3.109411667,
+                                    40.60073
+                                ],
+                                [
+                                    -3.118605,
+                                    40.592368333
+                                ],
+                                [
+                                    -3.216793333,
+                                    40.51514
+                                ],
+                                [
+                                    -3.222901667,
+                                    40.509326667
+                                ],
+                                [
+                                    -3.236045,
+                                    40.493545
+                                ],
+                                [
+                                    -3.242121667,
+                                    40.487713333
+                                ],
+                                [
+                                    -3.248901667,
+                                    40.48244
+                                ],
+                                [
+                                    -3.260423333,
+                                    40.475886667
+                                ],
+                                [
+                                    -3.268933333,
+                                    40.472276667
+                                ],
+                                [
+                                    -3.29998,
+                                    40.461585
+                                ],
+                                [
+                                    -3.333496667,
+                                    40.447075
+                                ],
+                                [
+                                    -3.357068333,
+                                    40.434016667
+                                ],
+                                [
+                                    -3.370301667,
+                                    40.429353333
+                                ],
+                                [
+                                    -3.384386667,
+                                    40.426476667
+                                ],
+                                [
+                                    -3.394031667,
+                                    40.425593333
+                                ],
+                                [
+                                    -3.422915,
+                                    40.426495
+                                ],
+                                [
+                                    -3.44183,
+                                    40.424688333
+                                ],
+                                [
+                                    -3.458956667,
+                                    40.42002
+                                ],
+                                [
+                                    -3.49786,
+                                    40.403488333
+                                ],
+                                [
+                                    -3.506411667,
+                                    40.401366667
+                                ],
+                                [
+                                    -3.526403333,
+                                    40.398113333
+                                ],
+                                [
+                                    -3.534358333,
+                                    40.395511667
+                                ],
+                                [
+                                    -3.543455,
+                                    40.390685
+                                ],
+                                [
+                                    -3.548376667,
+                                    40.386748333
+                                ],
+                                [
+                                    -3.554208333,
+                                    40.37997
+                                ],
+                                [
+                                    -3.559546667,
+                                    40.36981
+                                ],
+                                [
+                                    -3.563101667,
+                                    40.364946667
+                                ],
+                                [
+                                    -3.567625,
+                                    40.360528333
+                                ],
+                                [
+                                    -3.58069,
+                                    40.351333333
+                                ],
+                                [
+                                    -3.588878333,
+                                    40.346773333
+                                ],
+                                [
+                                    -3.597466667,
+                                    40.34339
+                                ],
+                                [
+                                    -3.629373333,
+                                    40.3357
+                                ],
+                                [
+                                    -3.639193333,
+                                    40.335053333
+                                ],
+                                [
+                                    -3.650695,
+                                    40.337515
+                                ],
+                                [
+                                    -3.657601667,
+                                    40.341181667
+                                ],
+                                [
+                                    -3.669283333,
+                                    40.351718333
+                                ],
+                                [
+                                    -3.673593333,
+                                    40.358086667
+                                ],
+                                [
+                                    -3.678408333,
+                                    40.370721667
+                                ],
+                                [
+                                    -3.682025,
+                                    40.377773333
+                                ],
+                                [
+                                    -3.680888333,
+                                    40.381893333
+                                ],
+                                [
+                                    -3.67357,
+                                    40.389638333
+                                ],
+                                [
+                                    -3.672926667,
+                                    40.392373333
+                                ],
+                                [
+                                    -3.673631667,
+                                    40.395125
+                                ],
+                                [
+                                    -3.677448333,
+                                    40.399638333
+                                ],
+                                [
+                                    -3.686803333,
+                                    40.402866667
+                                ],
+                                [
+                                    -3.689203333,
+                                    40.405026667
+                                ]
+                            ],
+                            "type": "LineString"
+                        }
+                    }
+                ]
+            },
+            "route": {
+                "line": {
+                    "mode": "LongDistanceTrain",
+                    "name": "06470"
+                }
+            },
+            "scheduledArrivalTime": {
+                "timezone": "Europe/Madrid",
+                "value": "2025-05-11T09:17:00+02:00"
+            },
+            "scheduledDepartureTime": {
+                "timezone": "Europe/Madrid",
+                "value": "2025-05-11T06:25:00+02:00"
+            },
+            "to": {
+                "country": "ES",
+                "identifier": {
+                    "uic": "7160000"
+                },
+                "latitude": 40.4053548,
+                "longitude": -3.6895915,
+                "name": "MADRID-P.ATOCHA-ALMUDENA GRANDES",
+                "region": "ES-MD",
+                "type": "Stop"
+            }
+        }
+    ]
+}
diff -Nru kpublictransport-25.04.0/autotests/data/onboard-position/ouigo-es.json kpublictransport-25.04.2/autotests/data/onboard-position/ouigo-es.json
--- kpublictransport-25.04.0/autotests/data/onboard-position/ouigo-es.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/autotests/data/onboard-position/ouigo-es.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1 @@
+{"success":true,"fix":9,"timestamp":1746945751,"latitude":40.871605,"longitude":-2.768676667,"altitude":1063.76,"speed":77.115,"heading":245.4}
diff -Nru kpublictransport-25.04.0/autotests/data/otp/fi-digitransit-journey.out.json kpublictransport-25.04.2/autotests/data/otp/fi-digitransit-journey.out.json
--- kpublictransport-25.04.0/autotests/data/otp/fi-digitransit-journey.out.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/data/otp/fi-digitransit-journey.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -180,8 +180,8 @@
                     "region": "FI-18"
                 },
                 "mode": "Walking",
+                "scheduledArrivalPlatform": "2",
                 "scheduledArrivalTime": "2020-01-09T18:06:00Z",
-                "scheduledDeparturePlatform": "2",
                 "scheduledDepartureTime": "2020-01-09T18:03:55Z",
                 "to": {
                     "country": "FI",
@@ -219,8 +219,9 @@
                         "name": "U"
                     }
                 },
+                "scheduledArrivalPlatform": "8",
                 "scheduledArrivalTime": "2020-01-09T18:13:34Z",
-                "scheduledDeparturePlatform": "8",
+                "scheduledDeparturePlatform": "2",
                 "scheduledDepartureTime": "2020-01-09T18:06:00Z",
                 "to": {
                     "country": "FI",
@@ -250,6 +251,7 @@
                 },
                 "mode": "Walking",
                 "scheduledArrivalTime": "2020-01-09T18:16:10Z",
+                "scheduledDeparturePlatform": "8",
                 "scheduledDepartureTime": "2020-01-09T18:13:34Z",
                 "to": {
                     "country": "FI",
diff -Nru kpublictransport-25.04.0/autotests/data/otp/no-entur-journey.out.json kpublictransport-25.04.2/autotests/data/otp/no-entur-journey.out.json
--- kpublictransport-25.04.0/autotests/data/otp/no-entur-journey.out.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/data/otp/no-entur-journey.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -12,8 +12,8 @@
                     "region": "NO-03"
                 },
                 "mode": "Walking",
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2020-01-12T13:29:17+01:00",
-                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:27:23+01:00",
                 "to": {
                     "country": "NO",
@@ -54,6 +54,7 @@
                         "textColor": "#ffffff"
                     }
                 },
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2020-01-12T13:38:00+01:00",
                 "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:27:00+01:00",
@@ -86,8 +87,9 @@
                     "type": "Stop"
                 },
                 "mode": "Walking",
+                "scheduledArrivalPlatform": "3",
                 "scheduledArrivalTime": "2020-01-12T13:44:29+01:00",
-                "scheduledDeparturePlatform": "3",
+                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:40:17+01:00",
                 "to": {
                     "country": "NO",
@@ -128,8 +130,9 @@
                         "textColor": "#ffffff"
                     }
                 },
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2020-01-12T14:17:00+01:00",
-                "scheduledDeparturePlatform": "1",
+                "scheduledDeparturePlatform": "3",
                 "scheduledDepartureTime": "2020-01-12T13:48:00+01:00",
                 "to": {
                     "country": "NO",
@@ -161,6 +164,7 @@
                 },
                 "mode": "Walking",
                 "scheduledArrivalTime": "2020-01-12T14:17:28+01:00",
+                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T14:17:00+01:00",
                 "to": {
                     "country": "NO",
@@ -185,8 +189,8 @@
                     "region": "NO-03"
                 },
                 "mode": "Walking",
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2020-01-12T13:34:09+01:00",
-                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:32:15+01:00",
                 "to": {
                     "country": "NO",
@@ -230,6 +234,7 @@
                         "textColor": "#ffffff"
                     }
                 },
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2020-01-12T13:44:00+01:00",
                 "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:33:00+01:00",
@@ -262,8 +267,9 @@
                     "type": "Stop"
                 },
                 "mode": "Walking",
+                "scheduledArrivalPlatform": "3",
                 "scheduledArrivalTime": "2020-01-12T13:49:21+01:00",
-                "scheduledDeparturePlatform": "3",
+                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2020-01-12T13:45:09+01:00",
                 "to": {
                     "country": "NO",
@@ -304,8 +310,9 @@
                         "textColor": "#ffffff"
                     }
                 },
+                "scheduledArrivalPlatform": "2",
                 "scheduledArrivalTime": "2020-01-12T14:22:00+01:00",
-                "scheduledDeparturePlatform": "2",
+                "scheduledDeparturePlatform": "3",
                 "scheduledDepartureTime": "2020-01-12T13:54:00+01:00",
                 "to": {
                     "country": "NO",
@@ -337,6 +344,7 @@
                 },
                 "mode": "Walking",
                 "scheduledArrivalTime": "2020-01-12T14:22:18+01:00",
+                "scheduledDeparturePlatform": "2",
                 "scheduledDepartureTime": "2020-01-12T14:22:00+01:00",
                 "to": {
                     "country": "NO",
diff -Nru kpublictransport-25.04.0/autotests/data/otp/no-entur-navigation-guides.out.json kpublictransport-25.04.2/autotests/data/otp/no-entur-navigation-guides.out.json
--- kpublictransport-25.04.0/autotests/data/otp/no-entur-navigation-guides.out.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/data/otp/no-entur-navigation-guides.out.json	2025-06-02 22:01:42.000000000 +0200
@@ -216,8 +216,8 @@
                         }
                     ]
                 },
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2021-10-07T17:37:16+02:00",
-                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2021-10-07T17:32:33+02:00",
                 "to": {
                     "country": "NO",
@@ -1005,6 +1005,7 @@
                         "textColor": "#ffffff"
                     }
                 },
+                "scheduledArrivalPlatform": "1",
                 "scheduledArrivalTime": "2021-10-07T17:48:00+02:00",
                 "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2021-10-07T17:36:00+02:00",
@@ -1158,6 +1159,7 @@
                     ]
                 },
                 "scheduledArrivalTime": "2021-10-07T17:51:13+02:00",
+                "scheduledDeparturePlatform": "1",
                 "scheduledDepartureTime": "2021-10-07T17:49:16+02:00",
                 "to": {
                     "country": "NO",
diff -Nru kpublictransport-25.04.0/autotests/efarequesttest.cpp kpublictransport-25.04.2/autotests/efarequesttest.cpp
--- kpublictransport-25.04.0/autotests/efarequesttest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/efarequesttest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -111,7 +111,7 @@
         QTest::newRow("arrival-with-access-mode") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
 
         req.setLineModes({Line::Bus, Line::Ferry});
-        QTest::newRow("line-mode-constraints") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&inclMOT_5=on&inclMOT_6=on&inclMOT_7=on&inclMOT_17=on&inclMOT_19=on&inclMOT_9=on&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
+        QTest::newRow("line-mode-constraints") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&inclMOT_5=on&inclMOT_6=on&inclMOT_7=on&inclMOT_17=on&inclMOT_19=on&inclMOT_9=on&includedMeans=checkbox&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
     }
 
     void testJourneyRequest()
diff -Nru kpublictransport-25.04.0/autotests/motis2parsertest.cpp kpublictransport-25.04.2/autotests/motis2parsertest.cpp
--- kpublictransport-25.04.0/autotests/motis2parsertest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/motis2parsertest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -36,6 +36,9 @@
         QTest::newRow("geo-lookup")
             << QStringLiteral(SOURCE_DIR "/data/motis2/location-geo-search.in.json")
             << QStringLiteral(SOURCE_DIR "/data/motis2/location-geo-search.out.json");
+        QTest::newRow("address")
+            << QStringLiteral(SOURCE_DIR "/data/motis2/location-addresses.in.json")
+            << QStringLiteral(SOURCE_DIR "/data/motis2/location-addresses.out.json");
     }
 
     void testParseLocation()
diff -Nru kpublictransport-25.04.0/autotests/onboardstatustest.cpp kpublictransport-25.04.2/autotests/onboardstatustest.cpp
--- kpublictransport-25.04.0/autotests/onboardstatustest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/onboardstatustest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -22,6 +22,7 @@
 
 #define s(x) QStringLiteral(x)
 
+using namespace Qt::Literals;
 using namespace KPublicTransport;
 
 class OnboardStatusTest : public QObject
@@ -68,6 +69,7 @@
         QTest::newRow("aegean") << s("aegean") << s("aegean.json") << 47.96723323f << 11.781437752f << 1007.0f << 137.0f << 7328.0f;
         QTest::newRow("eurowings") << s("lufthansa") << s("../onboard-journey/eurowings.in.json") << 51.58527374267578f << 12.357730865478516f << 637.087f << -137.6375f << 9018.42f;
         QTest::newRow("lufthansa") << s("lufthansa") << s("../onboard-journey/lufthansa.in.json") << 51.9423f << 12.4496f << 718.576f << -120.785f << 6491.63f;
+        QTest::newRow("ouigo-es") << u"ouigo-es"_s << u"ouigo-es.json"_s << 40.871605f << -2.768676667f << 277.614f << 245.4f << 1063.76f;
     }
 
     void testScriptedPositionParsers()
@@ -117,6 +119,7 @@
         QTest::newRow("sncf-inoui") << s("sncf-tgv") << s("sncf-inoui");
         QTest::newRow("sbb") << s("sbb") << s("sbb");
         QTest::newRow("oebb-railnet") << s("oebb") << s("oebb-railnet");
+        QTest::newRow("oebb-railnet-tracks") << s("oebb") << s("oebb-railnet-tracks");
 
         QTest::newRow("ana") << s("panasonic-inflight-v1") << s("ana");
         QTest::newRow("unite-panasonic") << s("panasonic-inflight-v1") << s("united-panasonic");
@@ -125,6 +128,7 @@
         QTest::newRow("lufthansa") << s("lufthansa") << s("lufthansa");
         QTest::newRow("united") << s("united") << s("united");
         QTest::newRow("nstrein") << s("nstrein") << s("nstrein");
+        QTest::newRow("ouigo-es") << u"ouigo-es"_s << u"ouigo-es"_s;
     }
 
     void testScriptedJourneyParsers()
diff -Nru kpublictransport-25.04.0/CMakeLists.txt kpublictransport-25.04.2/CMakeLists.txt
--- kpublictransport-25.04.0/CMakeLists.txt	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/CMakeLists.txt	2025-06-02 22:01:42.000000000 +0200
@@ -6,7 +6,7 @@
 # KDE Application Version, managed by release script
 set (RELEASE_SERVICE_VERSION_MAJOR "25")
 set (RELEASE_SERVICE_VERSION_MINOR "04")
-set (RELEASE_SERVICE_VERSION_MICRO "0")
+set (RELEASE_SERVICE_VERSION_MICRO "2")
 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
 project(KPublicTransport VERSION ${RELEASE_SERVICE_VERSION})
 
diff -Nru kpublictransport-25.04.0/debian/changelog kpublictransport-25.04.2/debian/changelog
--- kpublictransport-25.04.0/debian/changelog	2025-04-17 21:45:25.000000000 +0200
+++ kpublictransport-25.04.2/debian/changelog	2025-06-10 00:17:59.000000000 +0200
@@ -1,3 +1,27 @@
+kpublictransport (25.04.2-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.1).
+    - Treat neither a positive nor a negative cache hit as missing backend.
+    - Adapt test data to different storage format in 25.04.
+    - Fix ÖBB onboard API journey data parsing and extract track information.
+    - Add QML module dependency information.
+    - Fix MOTIS v2 admin area parsing.
+  * New upstream release (25.04.2).
+    - Fix OTP arrival platform parsing.
+    - Fix parsing of EFA operator names.
+    - Continue backend search until we find at least one that covers both
+    sides.
+    - Consider all higher coverage types as well for journey coverage checks.
+    - Make line asset loading also work for stopovers without coordinates.
+    - Retain trip identifiers in DB trip queries.
+    - Add onboard API support for Ouigo ES.
+    - Check type before reading a numeric JSON value.
+    - Include Estonia in DB's coverage area. (kde#504042)
+    - Make mode filters work on the bwegt EFA endpoint.
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Tue, 10 Jun 2025 00:17:59 +0200
+
 kpublictransport (25.04.0-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
diff -Nru kpublictransport-25.04.0/debian/gbp.conf kpublictransport-25.04.2/debian/gbp.conf
--- kpublictransport-25.04.0/debian/gbp.conf	2025-01-26 22:33:52.000000000 +0100
+++ kpublictransport-25.04.2/debian/gbp.conf	1970-01-01 01:00:00.000000000 +0100
@@ -1,2 +0,0 @@
-[DEFAULT]
-debian-branch = debian/main
diff -Nru kpublictransport-25.04.0/po/es/kpublictransport.po kpublictransport-25.04.2/po/es/kpublictransport.po
--- kpublictransport-25.04.0/po/es/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/es/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -1,5 +1,5 @@
 # Spanish translations for kpublictransport.po package.
-# Copyright (C) 2024 This file is copyright:
+# Copyright (C) 2024-2025 This file is copyright:
 # This file is distributed under the same license as the kpublictransport package.
 # Automatically generated, 2024.
 #
@@ -9,7 +9,7 @@
 "Project-Id-Version: kpublictransport\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2025-02-27 00:39+0000\n"
-"PO-Revision-Date: 2025-01-05 01:12+0100\n"
+"PO-Revision-Date: 2025-05-18 13:48+0100\n"
 "Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
 "Language-Team: Spanish <kde-l10n-es@kde.org>\n"
 "Language: es\n"
diff -Nru kpublictransport-25.04.0/po/fr/kpublictransport.po kpublictransport-25.04.2/po/fr/kpublictransport.po
--- kpublictransport-25.04.0/po/fr/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/fr/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -12,7 +12,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
-"X-Generator: Lokalize 24.12.3\n"
+"X-Generator: Lokalize 25.04.1\n"
 
 #: lib/datatypes/feature.cpp:52
 #, kde-format
diff -Nru kpublictransport-25.04.0/po/gl/kpublictransport.po kpublictransport-25.04.2/po/gl/kpublictransport.po
--- kpublictransport-25.04.0/po/gl/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/gl/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -15,7 +15,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
-"X-Generator: Lokalize 24.12.0\n"
+"X-Generator: Lokalize 25.04.1\n"
 
 #: lib/datatypes/feature.cpp:52
 #, kde-format
diff -Nru kpublictransport-25.04.0/po/he/kpublictransport.po kpublictransport-25.04.2/po/he/kpublictransport.po
--- kpublictransport-25.04.0/po/he/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/he/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -1,13 +1,13 @@
 # Copyright (C) 2024 This file is copyright:
 # This file is distributed under the same license as the kpublictransport package.
 #
-# SPDX-FileCopyrightText: 2024 Yaron Shahrabani <sh.yaron@gmail.com>
+# SPDX-FileCopyrightText: 2024, 2025 Yaron Shahrabani <sh.yaron@gmail.com>
 msgid ""
 msgstr ""
 "Project-Id-Version: kpublictransport\n"
 "Report-Msgid-Bugs-To: https://bugs.kde.org\n";
 "POT-Creation-Date: 2025-02-27 00:39+0000\n"
-"PO-Revision-Date: 2025-01-04 21:42+0200\n"
+"PO-Revision-Date: 2025-05-03 14:42+0300\n"
 "Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
 "Language-Team: צוות התרגום של KDE ישראל\n"
 "Language: he\n"
@@ -16,7 +16,7 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && "
 "n % 10 == 0) ? 2 : 3));\n"
-"X-Generator: Lokalize 24.12.0\n"
+"X-Generator: Lokalize 25.04.0\n"
 
 #: lib/datatypes/feature.cpp:52
 #, kde-format
diff -Nru kpublictransport-25.04.0/po/it/kpublictransport.po kpublictransport-25.04.2/po/it/kpublictransport.po
--- kpublictransport-25.04.0/po/it/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/it/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -15,7 +15,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 24.12.3\n"
+"X-Generator: Lokalize 25.04.1\n"
 
 #: lib/datatypes/feature.cpp:52
 #, kde-format
diff -Nru kpublictransport-25.04.0/po/pl/kpublictransport.po kpublictransport-25.04.2/po/pl/kpublictransport.po
--- kpublictransport-25.04.0/po/pl/kpublictransport.po	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/po/pl/kpublictransport.po	2025-06-02 22:01:42.000000000 +0200
@@ -16,7 +16,6 @@
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
-"X-Generator: Lokalize 24.12.0\n"
 
 #: lib/datatypes/feature.cpp:52
 #, kde-format
diff -Nru kpublictransport-25.04.0/src/lib/backends/deutschebahnbackend.cpp kpublictransport-25.04.2/src/lib/backends/deutschebahnbackend.cpp
--- kpublictransport-25.04.0/src/lib/backends/deutschebahnbackend.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/deutschebahnbackend.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -301,7 +301,7 @@
     logRequest(request, netReq);
     auto netReply = nam->get(netReq);
     netReply->setParent(reply);
-    QObject::connect(netReply, &QNetworkReply::finished, reply, [this, reply, netReply]() {
+    QObject::connect(netReply, &QNetworkReply::finished, reply, [this, reply, netReply, tripId]() {
         netReply->deleteLater();
         const auto data = netReply->readAll();
         logReply(reply, netReply, data);
@@ -313,6 +313,7 @@
 
         const auto responseObj = QJsonDocument::fromJson(data).object();
         auto jny = DeutscheBahnParser::parseTrip(responseObj, m_parser);
+        jny.setIdentifier(locationIdentifierType(), tripId); // not contained in the response
         addResult(reply, this, std::move(jny));
     });
 
diff -Nru kpublictransport-25.04.0/src/lib/backends/efamodeoftransport.cpp kpublictransport-25.04.2/src/lib/backends/efamodeoftransport.cpp
--- kpublictransport-25.04.0/src/lib/backends/efamodeoftransport.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/efamodeoftransport.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -10,6 +10,7 @@
 
 #include <vector>
 
+using namespace Qt::Literals;
 using namespace KPublicTransport;
 
 // comments below are EFA names found in XML responses (usually translated)
@@ -62,4 +63,6 @@
             }
         }
     }
+
+    query.addQueryItem(u"includedMeans"_s, u"checkbox"_s);
 }
diff -Nru kpublictransport-25.04.0/src/lib/backends/efaxmlparser.cpp kpublictransport-25.04.2/src/lib/backends/efaxmlparser.cpp
--- kpublictransport-25.04.0/src/lib/backends/efaxmlparser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/efaxmlparser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -131,7 +131,7 @@
 {
     QString opName;
     while (reader.readNextElement()) {
-        if (reader.name() == "name"_L1) {
+        if (opName.isEmpty() && reader.name() == "name"_L1) {
             opName = reader.readElementText();
         }
     }
diff -Nru kpublictransport-25.04.0/src/lib/backends/motis2parser.cpp kpublictransport-25.04.2/src/lib/backends/motis2parser.cpp
--- kpublictransport-25.04.0/src/lib/backends/motis2parser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/motis2parser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -356,12 +356,14 @@
         l.setLatitude(locObj.value("lat"_L1).toDouble());
         l.setLongitude(locObj.value("lon"_L1).toDouble());
         l.setFloorLevel(locObj.value("level"_L1).toInt(std::numeric_limits<int>::lowest()));
-        const auto areas = locObj.value("area"_L1).toArray();
+        const auto areas = locObj.value("areas"_L1).toArray();
+        int cityLevel = std::numeric_limits<int>::max();
         for (const auto &areaV : areas) {
             const auto area = areaV.toObject();
-            if (const auto level = area.value("adminLevel"_L1).toInt(); level <= 8) {
+            if (const auto level = area.value("adminLevel"_L1).toInt(); level >= 8 && level < cityLevel) {
                 // TODO needs a proper country-specific admin-level mapping, for now taken from Motis v1 parser
                 // see https://wiki.openstreetmap.org/wiki/Key:admin_level
+                cityLevel = level;
                 l.setLocality(area.value("name"_L1).toString());
             }
         }
diff -Nru kpublictransport-25.04.0/src/lib/backends/opentripplannerparser.cpp kpublictransport-25.04.2/src/lib/backends/opentripplannerparser.cpp
--- kpublictransport-25.04.0/src/lib/backends/opentripplannerparser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/opentripplannerparser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -444,7 +444,7 @@
     const auto toStop = toObj.value(QLatin1String("stop")).toObject();
     const auto to = parseLocation(toObj);
     section.setTo(to);
-    section.setScheduledDeparturePlatform(toStop.value(QLatin1String("platformCode")).toString());
+    section.setScheduledArrivalPlatform(toStop.value(QLatin1String("platformCode")).toString());
 
     section.setDistance(obj.value(QLatin1String("distance")).toDouble());
 
diff -Nru kpublictransport-25.04.0/src/lib/datatypes/backend.cpp kpublictransport-25.04.2/src/lib/datatypes/backend.cpp
--- kpublictransport-25.04.0/src/lib/datatypes/backend.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/backend.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -42,6 +42,21 @@
     return d->coverage[coverageType];
 }
 
+bool Backend::coversLocation(const Location &loc, KPublicTransport::CoverageArea::Type coverageType) const
+{
+    for (const auto c : { CoverageArea::Realtime, CoverageArea::Regular, CoverageArea::Any }) {
+        const auto cov = coverageArea(c);
+        if (!cov.isEmpty() && cov.coversLocation(loc)) {
+            return true;
+        }
+        if (c == coverageType) {
+            break;
+        }
+    }
+
+    return false;
+}
+
 const AbstractBackend* BackendPrivate::impl(const Backend &b)
 {
     return b.d->m_backendImpl.get();
diff -Nru kpublictransport-25.04.0/src/lib/datatypes/backend.h kpublictransport-25.04.2/src/lib/datatypes/backend.h
--- kpublictransport-25.04.0/src/lib/datatypes/backend.h	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/backend.h	2025-06-02 22:01:42.000000000 +0200
@@ -41,6 +41,12 @@
     bool isSecure() const;
 
     Q_INVOKABLE KPublicTransport::CoverageArea coverageArea(KPublicTransport::CoverageArea::Type coverageType) const;
+
+    /** Checks whether the given location is covered by this backend
+     *  with at least the given coverage type @p coverageType, ie. this
+     *  also checks all better coverage types.
+     */
+    [[nodiscard]] bool coversLocation(const Location &loc, KPublicTransport::CoverageArea::Type coverageType) const;
 };
 
 }
diff -Nru kpublictransport-25.04.0/src/lib/datatypes/json.cpp kpublictransport-25.04.2/src/lib/datatypes/json.cpp
--- kpublictransport-25.04.0/src/lib/datatypes/json.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/json.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -183,7 +183,10 @@
             if (v.isString()) {
                 return v.toString().toDouble();
             }
-            return v.toDouble();
+            if (v.isDouble()) {
+                return v.toDouble();
+            }
+            return {};
         case QMetaType::Int:
             if (v.isString()) {
                 return v.toString().toInt();
diff -Nru kpublictransport-25.04.0/src/lib/manager.cpp kpublictransport-25.04.2/src/lib/manager.cpp
--- kpublictransport-25.04.0/src/lib/manager.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/manager.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -558,7 +558,7 @@
     // first time/direct query
     if (req.contexts().empty()) {
         QSet<QString> triedBackends;
-        bool foundNonGlobalCoverage = false;
+        bool foundSymmetricNonGlobalCoverage = false;
         for (const auto coverageType : { CoverageArea::Realtime, CoverageArea::Regular, CoverageArea::Any }) {
             const auto checkBackend = [&](const Backend &backend, bool bothLocationMatch) {
                 if (triedBackends.contains(backend.identifier()) || d->shouldSkipBackend(backend, req)) {
@@ -570,17 +570,17 @@
                 }
 
                 if (bothLocationMatch) {
-                    if (!coverage.coversLocation(req.from()) || !coverage.coversLocation(req.to())) {
+                    if (!backend.coversLocation(req.from(), coverageType) || !backend.coversLocation(req.to(), coverageType)) {
                         return;
                     }
                 } else {
-                    if (!coverage.coversLocation(req.from()) && !coverage.coversLocation(req.to())) {
+                    if (!backend.coversLocation(req.from(), coverageType) && !backend.coversLocation(req.to(), coverageType)) {
                         return;
                     }
                 }
 
                 triedBackends.insert(backend.identifier());
-                foundNonGlobalCoverage |= !coverage.isGlobal();
+                foundSymmetricNonGlobalCoverage |= !coverage.isGlobal() && bothLocationMatch;
 
                 if (d->queryJourney(BackendPrivate::impl(backend), req, reply)) {
                     ++pendingOps;
@@ -591,7 +591,7 @@
             for (const auto &backend: d->m_backends) {
                 checkBackend(backend, true);
             }
-            if (pendingOps && foundNonGlobalCoverage) {
+            if (pendingOps && foundSymmetricNonGlobalCoverage) {
                 break;
             }
 
@@ -599,7 +599,7 @@
             for (const auto &backend: d->m_backends) {
                 checkBackend(backend, false);
             }
-            if (pendingOps && foundNonGlobalCoverage) {
+            if (pendingOps && foundSymmetricNonGlobalCoverage) {
                 break;
             }
         }
@@ -948,7 +948,7 @@
 {
     auto reply = d->makeReply<VehicleLayoutReply>(req);
     int pendingOps = 0;
-    int negativeCacheHit = 0;
+    int cacheHit = 0;
 
     // validate input
     if (!req.isValid()) {
@@ -973,10 +973,11 @@
             auto cache = Cache::lookupVehicleLayout(backend.identifier(), req.cacheKey());
             switch (cache.type) {
                 case CacheHitType::Negative:
-                    ++negativeCacheHit;
+                    ++cacheHit;
                     qCDebug(Log) << "Negative cache hit for backend" << backend.identifier();
                     break;
                 case CacheHitType::Positive:
+                    ++cacheHit;
                     qCDebug(Log) << "Positive cache hit for backend" << backend.identifier();
                     if (cache.data.size() == 1) {
                         reply->addAttributions(std::move(cache.attributions));
@@ -997,7 +998,7 @@
         }
     }
 
-    if (pendingOps == 0 && negativeCacheHit == 0) {
+    if (pendingOps == 0 && cacheHit == 0) {
         reply->addError(Reply::NoBackend, u"No viable backend found."_s);
     }
     reply->setPendingOps(pendingOps);
diff -Nru kpublictransport-25.04.0/src/lib/networks/de_by_mvv.json kpublictransport-25.04.2/src/lib/networks/de_by_mvv.json
--- kpublictransport-25.04.0/src/lib/networks/de_by_mvv.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/networks/de_by_mvv.json	2025-06-02 22:01:42.000000000 +0200
@@ -1,7 +1,7 @@
 {
     "KPlugin": {
         "Description": "Local transport in and around Munich, Germany.",
-        "Description[ca@valencia]": "Transport local a Munic i rodalia, Alemanya.",
+        "Description[ca@valencia]": "Transport local en Munic i rodalia, Alemanya.",
         "Description[ca]": "Transport local a Munic i rodalia, Alemanya.",
         "Description[cs]": "Místní doprava v Mnichově a okolí, Německo.",
         "Description[de]": "Lokale Verkehrsmittel in und um München, Deutschland.",
diff -Nru kpublictransport-25.04.0/src/lib/networks/de_db.json kpublictransport-25.04.2/src/lib/networks/de_db.json
--- kpublictransport-25.04.0/src/lib/networks/de_db.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/networks/de_db.json	2025-06-02 22:01:42.000000000 +0200
@@ -78,6 +78,7 @@
             "region": [
                 "BG",
                 "DK",
+                "EE",
                 "ES",
                 "FI",
                 "FR",
diff -Nru kpublictransport-25.04.0/src/lib/networks/fi_19_varely.json kpublictransport-25.04.2/src/lib/networks/fi_19_varely.json
--- kpublictransport-25.04.0/src/lib/networks/fi_19_varely.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/networks/fi_19_varely.json	2025-06-02 22:01:42.000000000 +0200
@@ -29,7 +29,7 @@
         "Name[es]": "Varsinais-Suomen ELY",
         "Name[eu]": "Varsinais-Suomen ELY",
         "Name[fi]": "Varsinais-Suomen ELY",
-        "Name[fr]": "Varsinais-Suomen ELY",
+        "Name[fr]": "s ELY",
         "Name[gl]": "ELY de Varsinais-Suomen",
         "Name[ia]": "Varsinais-Suomen ELY",
         "Name[it]": "Varsinais-Suomen ELY",
diff -Nru kpublictransport-25.04.0/src/lib/networks/geometry/de_db_any.geojson kpublictransport-25.04.2/src/lib/networks/geometry/de_db_any.geojson
--- kpublictransport-25.04.0/src/lib/networks/geometry/de_db_any.geojson	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/networks/geometry/de_db_any.geojson	2025-06-02 22:01:42.000000000 +0200
@@ -1 +1 @@
-{"coordinates":[[[[12.388,54.385],[13.176,54.745],[13.170,54.860],[13.793,54.920],[14.178,54.896],[14.422,54.632],[15.277,54.512],[15.709,54.800],[15.835,55.456],[15.855,55.452],[16.973,55.877],[17.549,56.798],[17.623,56.562],[18.245,56.413],[18.739,56.558],[19.603,57.192],[19.593,57.442],[20.001,57.746],[19.782,58.785],[19.395,58.795],[20.106,59.240],[22.432,59.210],[27.577,59.931],[28.055,60.356],[31.333,62.180],[32.050,62.937],[31.382,63.494],[30.662,63.769],[30.812,63.884],[30.794,64.400],[30.356,64.599],[30.349,64.866],[30.350,64.866],[30.349,64.867],[30.345,65.046],[30.209,65.071],[30.035,65.324],[30.079,65.384],[30.503,65.442],[30.419,65.806],[30.172,66.322],[29.528,66.886],[30.166,67.304],[30.409,67.824],[29.437,68.360],[28.833,68.469],[28.827,68.479],[29.460,69.025],[30.295,69.196],[30.341,69.313],[31.215,69.264],[31.340,69.461],[31.237,69.653],[31.849,69.919],[31.849,70.767],[30.548,71.163],[28.393,71.598],[25.678,71.689],[23.718,71.588],[18.186,70.671],[16.951,70.038],[14.656,69.529],[12.449,68.518],[11.967,68.085],[11.199,67.829],[10.987,67.308],[11.408,66.850],[9.811,65.125],[7.977,64.316],[6.709,63.537],[4.788,62.739],[3.880,61.864],[3.775,60.979],[4.345,59.683],[4.125,59.093],[4.782,58.705],[4.984,58.342],[6.389,57.586],[7.610,57.448],[8.580,57.661],[9.892,58.377],[10.423,58.445],[10.554,58.218],[10.495,58.236],[9.608,58.012],[9.133,57.624],[8.348,57.575],[7.832,57.263],[7.472,56.635],[7.437,55.397],[7.742,55.187],[7.777,54.868],[9.265,54.521],[10.191,54.501],[10.678,54.257],[10.951,54.454],[12.164,54.148],[12.388,54.385]]],[[[-7.343,70.501],[-6.751,71.236],[-7.545,71.743],[-8.274,71.767],[-9.963,71.277],[-10.088,70.543],[-9.359,70.225],[-7.343,70.501]]],[[[36.634,35.937],[36.611,36.036],[36.974,36.070],[36.760,36.498],[36.783,36.558],[37.046,36.409],[37.529,36.432],[38.258,36.714],[39.222,36.466],[40.785,36.930],[41.558,36.879],[42.137,37.075],[42.210,36.884],[42.668,36.960],[42.859,37.160],[43.921,36.973],[44.056,37.066],[44.248,36.683],[44.662,36.976],[44.853,36.912],[44.973,37.022],[44.768,37.893],[44.520,37.987],[44.815,38.434],[44.476,38.547],[44.313,39.207],[44.552,39.229],[44.679,39.506],[44.879,39.375],[45.041,39.731],[44.411,40.225],[43.860,40.262],[43.774,40.445],[43.965,40.654],[43.848,41.047],[43.031,41.589],[43.098,41.825],[42.485,41.771],[42.408,41.637],[41.833,41.628],[41.286,41.828],[40.135,41.344],[39.382,41.501],[38.396,41.331],[36.722,41.782],[36.513,41.734],[36.235,42.079],[35.611,42.070],[35.558,42.318],[34.934,42.509],[34.628,42.340],[33.296,42.419],[32.425,42.201],[31.106,41.630],[31.018,41.494],[29.069,41.646],[28.548,41.832],[28.282,42.354],[28.348,42.872],[28.944,43.200],[29.074,43.933],[28.294,43.957],[27.970,44.248],[27.743,44.165],[27.045,44.351],[26.075,44.172],[25.362,43.821],[23.245,43.983],[23.298,44.123],[22.897,44.393],[23.116,44.461],[22.874,44.733],[22.420,44.941],[22.125,44.707],[21.787,44.833],[21.667,45.332],[20.998,45.596],[21.087,46.038],[20.753,45.968],[20.249,46.357],[19.508,46.379],[19.267,46.212],[18.985,46.302],[18.929,46.149],[18.535,46.113],[18.373,45.941],[17.917,45.966],[16.354,46.773],[15.388,46.339],[15.473,45.988],[14.980,45.854],[15.048,45.657],[14.876,45.673],[14.542,45.958],[14.258,45.674],[14.182,45.670],[14.214,45.699],[13.817,45.917],[13.855,46.285],[13.933,46.698],[12.540,46.879],[12.258,47.308],[11.064,47.160],[10.930,46.981],[10.350,47.089],[10.279,46.834],[10.211,46.881],[9.911,46.568],[9.687,46.528],[9.631,46.712],[9.193,46.695],[8.912,46.273],[8.614,46.385],[8.516,46.736],[7.806,46.340],[7.897,46.192],[7.817,46.130],[7.555,46.193],[7.171,46.077],[7.019,46.234],[7.102,46.661],[6.436,46.576],[7.264,47.240],[7.432,47.214],[7.731,47.414],[8.013,48.523],[8.512,48.947],[8.478,49.108],[7.487,49.409],[6.834,49.381],[6.699,49.597],[6.258,49.729],[5.520,49.709],[5.101,49.915],[5.183,50.240],[4.767,50.419],[4.588,50.193],[4.413,50.179],[4.386,50.444],[3.805,50.513],[3.173,51.018],[2.909,50.912],[2.781,50.982],[2.476,51.526],[1.911,51.470],[1.868,51.684],[1.814,51.697],[2.060,51.879],[2.317,52.427],[2.167,52.963],[1.511,53.325],[0.819,53.391],[0.393,54.034],[0.426,54.333],[-0.233,54.823],[-0.802,55.028],[-1.127,55.894],[-1.906,56.355],[-1.894,56.525],[-1.179,57.373],[-1.278,57.813],[-1.844,58.107],[-2.619,58.126],[-2.606,58.133],[-1.838,59.154],[-1.178,59.186],[-1.080,59.479],[-0.804,59.568],[-0.128,60.266],[-0.165,61.005],[-0.645,61.258],[-1.106,61.258],[-1.821,60.970],[-2.776,60.183],[-2.580,59.827],[-2.219,59.750],[-2.910,59.810],[-3.410,59.687],[-3.889,59.331],[-4.557,59.522],[-5.182,59.060],[-5.146,59.011],[-6.366,58.927],[-7.271,58.631],[-7.738,58.702],[-8.221,58.495],[-8.184,58.224],[-8.440,58.317],[-9.231,58.021],[-9.178,57.598],[-8.719,57.375],[-8.244,57.464],[-8.088,57.173],[-8.235,56.650],[-7.574,55.977],[-7.138,55.845],[-6.948,55.448],[-6.948,55.417],[-7.548,55.202],[-7.679,54.949],[-8.068,54.903],[-8.068,54.719],[-8.516,54.570],[-7.968,54.022],[-7.254,53.879],[-7.01,54.123],[-6.683,53.797],[-6.319,53.883],[-5.828,53.622],[-5.112,54.015],[-4.960,54.248],[-4.226,54.325],[-3.651,53.807],[-3.696,53.739],[-4.458,53.851],[-5.087,53.682],[-5.337,52.558],[-5.148,52.454],[-5.374,52.385],[-6.011,51.898],[-5.932,51.455],[-5.598,51.340],[-5.598,50.657],[-6.125,50.334],[-6.781,50.269],[-6.925,49.853],[-6.636,49.491],[-6.123,49.491],[-5.883,49.674],[-5.054,49.545],[-4.375,49.915],[-3.588,49.784],[-2.869,50.269],[-2.499,50.084],[-1.698,50.248],[-1.184,50.158],[-0.223,50.408],[0.347,50.318],[1.026,50.503],[0.995,50.380],[-0.077,50.061],[-0.348,49.753],[-0.764,49.784],[-1.149,50.108],[-2.212,50.108],[-2.397,49.497],[-2.075,49.195],[-2.117,49.097],[-2.344,49.117],[-2.372,49.383],[-2.984,49.519],[-3.250,49.308],[-5.388,48.844],[-5.680,48.469],[-5.353,47.731],[-4.180,47.273],[-3.763,47.245],[-3.465,46.927],[-2.879,46.864],[-2.852,46.509],[-1.891,45.915],[-1.653,45.324],[-1.920,43.776],[-2.194,43.720],[-3.579,43.909],[-4.356,43.810],[-5.864,44.069],[-6.877,43.980],[-7.675,44.192],[-8.264,44.072],[-9.539,43.460],[-9.777,43.152],[-9.376,42.117],[-9.240,40.695],[-9.343,40.379],[-10.033,39.575],[-9.944,38.587],[-9.367,37.831],[-9.335,36.604],[-7.799,36.570],[-7.373,36.778],[-7.011,36.747],[-6.306,35.852],[-5.669,35.739],[-5.010,35.861],[-4.794,36.088],[-4.008,36.331],[-1.919,36.362],[-1.246,37.066],[-0.402,37.292],[-0.020,38.097],[0.698,38.602],[0.583,39.034],[0.248,39.341],[0.248,39.506],[0.335,39.601],[0.569,39.417],[1.135,39.573],[1.151,40.159],[0.916,40.237],[1.465,40.742],[2.298,40.918],[3.552,41.603],[3.808,42.302],[3.577,42.870],[4.027,43.084],[6.479,42.572],[7.590,43.333],[8.349,43.556],[8.792,43.961],[9.540,43.696],[9.480,43.659],[9.408,43.390],[9.069,43.330],[8.065,42.500],[8.135,41.736],[8.324,41.496],[8.159,41.515],[7.727,41.083],[7.666,40.529],[7.905,40.217],[7.949,39.687],[7.732,39.058],[8.258,38.470],[8.952,38.481],[9.770,38.736],[10.038,38.979],[10.290,40.518],[10.222,41.017],[9.849,41.475],[9.966,42.000],[11.528,41.728],[12.136,41.332],[12.570,40.578],[13.725,40.318],[15.404,39.541],[15.579,39.266],[15.622,39.073],[15.582,39.004],[15.185,39.244],[14.797,38.982],[13.949,38.846],[13.987,38.461],[13.591,38.565],[13.704,38.738],[13.196,39.153],[12.631,38.760],[12.786,38.559],[11.794,38.345],[11.566,38.072],[11.670,37.701],[12.465,37.196],[14.561,36.331],[15.406,36.320],[15.792,36.936],[15.731,37.575],[16.336,37.592],[17.584,38.755],[17.611,39.117],[18.680,39.477],[19.004,40.162],[18.292,40.976],[16.709,41.611],[16.612,42.063],[16.710,42.082],[16.757,42.359],[17.363,42.351],[18.013,42.200],[18.863,41.631],[19.484,41.479],[19.600,42.264],[19.672,42.336],[19.721,42.254],[20.136,42.337],[20.251,42.588],[20.721,42.748],[20.841,43.012],[21.009,42.946],[21.265,42.567],[21.374,42.541],[21.241,42.440],[21.512,42.043],[22.280,42.127],[22.726,41.869],[22.821,41.693],[22.660,41.103],[24.481,41.357],[25.272,41.027],[26.135,41.154],[26.148,41.053],[25.715,40.857],[25.819,40.473],[25.343,40.178],[25.711,39.784],[25.827,39.206],[26.336,39.228],[26.470,39.063],[26.450,38.968],[26.049,38.844],[25.994,38.146],[26.755,37.781],[26.640,37.735],[26.958,37.253],[26.935,36.935],[27.087,36.843],[27.014,36.770],[27.240,36.405],[27.711,36.378],[27.771,36.422],[27.821,36.251],[28.399,36.353],[29.205,35.812],[29.517,35.946],[29.670,35.712],[30.705,35.831],[30.968,36.445],[31.152,36.433],[32.769,35.615],[34.151,35.870],[34.738,36.364],[36.217,35.594],[36.634,35.937]]],[[[-5.496,58.687],[-5.112,59.055],[-5.353,59.501],[-6.471,59.538],[-6.860,58.955],[-6.432,58.652],[-5.496,58.687]]],[[[25.324,54.003],[25.344,53.919],[26.005,53.966],[26.085,54.136],[25.877,54.428],[25.951,54.661],[27.076,55.141],[27.085,55.344],[26.829,55.480],[27.160,55.605],[27.802,55.534],[27.858,55.759],[28.453,56.057],[28.138,57.080],[28.026,57.080],[28.154,57.405],[27.663,57.773],[26.874,57.884],[26.568,57.779],[26.174,58.075],[25.252,58.357],[24.370,58.111],[23.429,58.144],[23.315,57.901],[22.754,58.199],[21.347,57.907],[20.548,57.063],[20.429,56.266],[20.372,55.216],[22.046,54.787],[22.506,54.824],[22.599,54.743],[22.532,54.196],[23.198,54.038],[23.386,53.735],[24.413,53.656],[25.324,54.003]]],[[[34.298,44.038],[34.813,44.392],[36.786,44.776],[36.877,45.822],[35.741,45.846],[35.599,45.754],[35.468,45.889],[35.659,46.050],[35.871,46.183],[36.191,46.093],[36.550,46.319],[36.922,46.267],[37.180,46.492],[38.207,46.660],[38.580,46.886],[38.543,47.438],[38.934,47.509],[39.006,47.671],[39.873,47.641],[40.243,48.235],[39.973,48.610],[40.311,48.779],[40.298,48.960],[40.154,49.007],[40.474,49.200],[40.249,49.843],[39.844,49.771],[39.208,50.130],[38.943,50.018],[38.367,50.296],[38.046,50.281],[38.004,50.202],[37.507,50.682],[36.658,50.433],[36.123,50.661],[35.745,50.581],[35.631,51.154],[35.181,51.433],[34.486,51.462],[34.424,51.590],[34.717,51.778],[33.906,52.563],[33.140,52.586],[32.880,52.460],[32.319,52.556],[32.032,52.238],[30.785,52.309],[30.304,51.675],[30.223,51.732],[29.410,51.606],[29.131,51.985],[28.716,51.701],[28.468,51.735],[28.337,51.933],[28.011,51.776],[27.408,51.801],[27.370,51.963],[25.784,52.155],[24.330,52.083],[23.958,51.796],[23.549,51.896],[23.433,51.183],[23.880,50.827],[23.869,50.616],[23.163,50.273],[22.397,49.585],[22.473,49.302],[22.441,49.308],[21.989,48.690],[21.946,48.282],[22.534,47.890],[22.695,47.905],[22.779,47.714],[23.187,47.882],[23.451,47.764],[24.512,47.764],[24.836,47.505],[25.371,47.716],[26.254,47.798],[26.915,48.208],[27.575,48.281],[28.431,47.857],[28.719,47.917],[28.830,47.715],[28.984,47.750],[28.984,47.292],[29.364,47.165],[29.335,46.862],[29.702,46.713],[29.669,46.658],[29.596,46.605],[29.325,46.785],[28.807,46.659],[28.743,46.146],[28.353,45.877],[28.328,45.682],[27.967,45.605],[28.196,45.167],[28.710,45.008],[29.378,45.215],[29.571,45.003],[30.458,44.858],[30.681,45.464],[30.458,45.558],[31.156,46.134],[31.332,45.896],[32.195,45.733],[32.095,45.673],[32.019,45.158],[33.019,44.815],[32.893,44.426],[33.212,44.148],[33.756,43.982],[34.298,44.038]]],[[[12.51,43.99],[12.52,43.99],[12.52,43.99],[12.51,43.99],[12.51,43.99]]],[[[3.576,39.128],[3.825,39.528],[4.341,39.418],[4.631,39.542],[4.778,39.929],[4.591,40.263],[4.072,40.470],[3.606,40.387],[3.482,40.233],[3.306,40.340],[2.812,40.283],[1.837,39.711],[1.982,39.306],[2.673,38.809],[3.037,38.746],[3.576,39.128]]],[[[1.911,38.382],[2.095,39.084],[1.859,39.399],[1.527,39.501],[0.845,39.266],[0.767,38.733],[1.142,38.309],[1.911,38.382]]],[[[12.485,36.696],[12.365,37.071],[11.698,37.160],[11.492,36.875],[11.650,36.488],[12.247,36.399],[12.485,36.696]]],[[[12.968,35.240],[12.978,35.555],[13.333,35.841],[13.042,36.224],[12.594,36.195],[12.506,35.882],[12.137,35.892],[11.872,35.554],[12.093,35.231],[12.606,35.115],[12.968,35.240]]]],"type":"MultiPolygon"}
\ Pas de fin de ligne à la fin du fichier
+{"coordinates":[[[[-7.343,70.501],[-6.751,71.236],[-7.545,71.743],[-8.274,71.767],[-9.963,71.277],[-10.088,70.543],[-9.359,70.225],[-7.343,70.501]]],[[[25.298,53.954],[25.315,53.881],[26.029,53.931],[26.127,54.140],[25.917,54.434],[25.980,54.634],[27.111,55.117],[27.122,55.365],[26.917,55.475],[27.165,55.568],[27.829,55.494],[27.889,55.734],[28.497,56.038],[28.165,57.117],[28.080,57.117],[28.206,57.435],[27.855,57.638],[28.149,57.879],[27.728,58.682],[28.349,59.088],[28.527,59.525],[27.937,59.864],[27.288,59.899],[27.574,59.930],[28.054,60.358],[31.332,62.182],[32.047,62.936],[31.381,63.492],[30.659,63.768],[30.810,63.885],[30.792,64.399],[30.354,64.598],[30.343,65.044],[30.208,65.069],[30.032,65.324],[30.078,65.385],[30.500,65.444],[30.417,65.805],[30.170,66.321],[29.525,66.887],[30.165,67.305],[30.406,67.823],[29.437,68.358],[28.832,68.468],[28.825,68.479],[29.459,69.027],[30.293,69.198],[30.340,69.315],[31.214,69.266],[31.338,69.461],[31.235,69.654],[31.775,69.889],[32.133,70.356],[31.762,70.791],[30.548,71.161],[28.393,71.596],[25.708,71.687],[23.718,71.586],[18.146,70.659],[16.951,70.036],[14.626,69.518],[12.450,68.516],[11.970,68.085],[11.282,67.869],[10.936,67.424],[11.416,66.855],[9.812,65.124],[7.978,64.315],[6.709,63.536],[4.789,62.737],[3.882,61.863],[3.777,60.979],[4.347,59.683],[4.136,59.117],[5.474,58.011],[6.426,57.577],[7.579,57.450],[8.579,57.662],[9.891,58.379],[10.424,58.447],[10.558,58.215],[10.495,58.234],[9.609,58.010],[9.134,57.622],[8.349,57.573],[7.834,57.262],[7.474,56.635],[7.439,55.398],[7.743,55.188],[7.777,54.885],[8.428,54.655],[10.185,54.506],[10.678,54.260],[10.950,54.456],[12.129,54.159],[13.174,54.759],[13.168,54.850],[14.186,54.889],[14.422,54.634],[15.276,54.514],[15.708,54.801],[15.834,55.459],[15.854,55.454],[16.972,55.879],[17.571,56.837],[17.696,56.527],[18.251,56.416],[18.770,56.581],[19.601,57.193],[19.591,57.450],[20.009,57.799],[19.995,58.426],[19.658,58.807],[19.411,58.807],[20.105,59.241],[21.632,59.214],[21.393,59.091],[21.070,58.260],[21.335,57.826],[20.511,57.085],[20.327,55.190],[22.042,54.750],[22.493,54.786],[22.561,54.729],[22.492,54.168],[23.175,54.006],[23.365,53.700],[24.418,53.619],[25.298,53.954]]],[[[36.634,35.937],[36.611,36.036],[36.974,36.070],[36.760,36.498],[36.783,36.558],[37.046,36.409],[37.529,36.432],[38.258,36.714],[39.222,36.466],[40.785,36.930],[41.558,36.879],[42.137,37.075],[42.210,36.884],[42.668,36.960],[42.859,37.160],[43.921,36.973],[44.056,37.066],[44.248,36.683],[44.662,36.976],[44.853,36.912],[44.973,37.022],[44.768,37.893],[44.520,37.987],[44.815,38.434],[44.476,38.547],[44.313,39.207],[44.552,39.229],[44.679,39.506],[44.879,39.375],[45.041,39.731],[44.411,40.225],[43.860,40.262],[43.774,40.445],[43.965,40.654],[43.848,41.047],[43.031,41.589],[43.098,41.825],[42.485,41.771],[42.408,41.637],[41.833,41.628],[41.286,41.828],[40.135,41.344],[39.382,41.501],[38.396,41.331],[36.722,41.782],[36.513,41.734],[36.235,42.079],[35.611,42.070],[35.558,42.318],[34.934,42.509],[34.628,42.340],[33.296,42.419],[32.425,42.201],[31.106,41.630],[31.018,41.494],[29.069,41.646],[28.548,41.832],[28.282,42.354],[28.348,42.872],[28.944,43.200],[29.074,43.933],[28.294,43.957],[27.970,44.248],[27.743,44.165],[27.045,44.351],[26.075,44.172],[25.362,43.821],[23.245,43.983],[23.298,44.123],[22.897,44.393],[23.116,44.461],[22.874,44.733],[22.420,44.941],[22.125,44.707],[21.787,44.833],[21.667,45.332],[20.998,45.596],[21.087,46.038],[20.753,45.968],[20.249,46.357],[19.508,46.379],[19.267,46.212],[18.985,46.302],[18.929,46.149],[18.535,46.113],[18.373,45.941],[17.917,45.966],[16.354,46.773],[15.388,46.339],[15.473,45.988],[14.980,45.854],[15.048,45.657],[14.876,45.673],[14.542,45.958],[14.258,45.674],[14.182,45.670],[14.214,45.699],[13.817,45.917],[13.855,46.285],[13.933,46.698],[12.540,46.879],[12.258,47.308],[11.064,47.160],[10.930,46.981],[10.350,47.089],[10.279,46.834],[10.211,46.881],[9.911,46.568],[9.687,46.528],[9.631,46.712],[9.193,46.695],[8.912,46.273],[8.614,46.385],[8.516,46.736],[7.806,46.340],[7.897,46.192],[7.817,46.130],[7.555,46.193],[7.171,46.077],[7.019,46.234],[7.102,46.661],[6.436,46.576],[7.264,47.240],[7.432,47.214],[7.731,47.414],[8.013,48.523],[8.512,48.947],[8.478,49.108],[7.487,49.409],[6.834,49.381],[6.699,49.597],[6.258,49.729],[5.520,49.709],[5.101,49.915],[5.183,50.240],[4.767,50.419],[4.588,50.193],[4.413,50.179],[4.386,50.444],[3.805,50.513],[3.173,51.018],[2.909,50.912],[2.781,50.982],[2.476,51.526],[1.911,51.470],[1.868,51.684],[1.814,51.697],[2.060,51.879],[2.317,52.427],[2.167,52.963],[1.511,53.325],[0.819,53.391],[0.393,54.034],[0.426,54.333],[-0.233,54.823],[-0.802,55.028],[-1.127,55.894],[-1.906,56.355],[-1.894,56.525],[-1.179,57.373],[-1.278,57.813],[-1.844,58.107],[-2.619,58.126],[-2.606,58.133],[-1.838,59.154],[-1.178,59.186],[-1.080,59.479],[-0.804,59.568],[-0.128,60.266],[-0.165,61.005],[-0.645,61.258],[-1.106,61.258],[-1.821,60.970],[-2.776,60.183],[-2.580,59.827],[-2.219,59.750],[-2.910,59.810],[-3.410,59.687],[-3.889,59.331],[-4.557,59.522],[-5.182,59.060],[-5.146,59.011],[-6.366,58.927],[-7.271,58.631],[-7.738,58.702],[-8.221,58.495],[-8.184,58.224],[-8.440,58.317],[-9.231,58.021],[-9.178,57.598],[-8.719,57.375],[-8.244,57.464],[-8.088,57.173],[-8.235,56.650],[-7.574,55.977],[-7.138,55.845],[-6.948,55.448],[-6.948,55.417],[-7.548,55.202],[-7.679,54.949],[-8.068,54.903],[-8.068,54.719],[-8.516,54.570],[-7.968,54.022],[-7.254,53.879],[-7.01,54.123],[-6.683,53.797],[-6.319,53.883],[-5.828,53.622],[-5.112,54.015],[-4.960,54.248],[-4.226,54.325],[-3.651,53.807],[-3.696,53.739],[-4.458,53.851],[-5.087,53.682],[-5.337,52.558],[-5.148,52.454],[-5.374,52.385],[-6.011,51.898],[-5.932,51.455],[-5.598,51.340],[-5.598,50.657],[-6.125,50.334],[-6.781,50.269],[-6.925,49.853],[-6.636,49.491],[-6.123,49.491],[-5.883,49.674],[-5.054,49.545],[-4.375,49.915],[-3.588,49.784],[-2.869,50.269],[-2.499,50.084],[-1.698,50.248],[-1.184,50.158],[-0.223,50.408],[0.347,50.318],[1.026,50.503],[0.995,50.380],[-0.077,50.061],[-0.348,49.753],[-0.764,49.784],[-1.149,50.108],[-2.212,50.108],[-2.397,49.497],[-2.075,49.195],[-2.117,49.097],[-2.344,49.117],[-2.372,49.383],[-2.984,49.519],[-3.250,49.308],[-5.388,48.844],[-5.680,48.469],[-5.353,47.731],[-4.180,47.273],[-3.763,47.245],[-3.465,46.927],[-2.879,46.864],[-2.852,46.509],[-1.891,45.915],[-1.653,45.324],[-1.920,43.776],[-2.194,43.720],[-3.579,43.909],[-4.356,43.810],[-5.864,44.069],[-6.877,43.980],[-7.675,44.192],[-8.264,44.072],[-9.539,43.460],[-9.777,43.152],[-9.376,42.117],[-9.240,40.695],[-9.343,40.379],[-10.033,39.575],[-9.944,38.587],[-9.367,37.831],[-9.335,36.604],[-7.799,36.570],[-7.373,36.778],[-7.011,36.747],[-6.306,35.852],[-5.669,35.739],[-5.010,35.861],[-4.794,36.088],[-4.008,36.331],[-1.919,36.362],[-1.246,37.066],[-0.402,37.292],[-0.020,38.097],[0.698,38.602],[0.583,39.034],[0.248,39.341],[0.248,39.506],[0.335,39.601],[0.569,39.417],[1.135,39.573],[1.151,40.159],[0.916,40.237],[1.465,40.742],[2.298,40.918],[3.552,41.603],[3.808,42.302],[3.577,42.870],[4.027,43.084],[6.479,42.572],[7.590,43.333],[8.349,43.556],[8.792,43.961],[9.540,43.696],[9.480,43.659],[9.408,43.390],[9.069,43.330],[8.065,42.500],[8.135,41.736],[8.324,41.496],[8.159,41.515],[7.727,41.083],[7.666,40.529],[7.905,40.217],[7.949,39.687],[7.732,39.058],[8.258,38.470],[8.952,38.481],[9.770,38.736],[10.038,38.979],[10.290,40.518],[10.222,41.017],[9.849,41.475],[9.966,42.000],[11.528,41.728],[12.136,41.332],[12.570,40.578],[13.725,40.318],[15.404,39.541],[15.579,39.266],[15.622,39.073],[15.582,39.004],[15.185,39.244],[14.797,38.982],[13.949,38.846],[13.987,38.461],[13.591,38.565],[13.704,38.738],[13.196,39.153],[12.631,38.760],[12.786,38.559],[11.794,38.345],[11.566,38.072],[11.670,37.701],[12.465,37.196],[14.561,36.331],[15.406,36.320],[15.792,36.936],[15.731,37.575],[16.336,37.592],[17.584,38.755],[17.611,39.117],[18.680,39.477],[19.004,40.162],[18.292,40.976],[16.709,41.611],[16.612,42.063],[16.710,42.082],[16.757,42.359],[17.363,42.351],[18.013,42.200],[18.863,41.631],[19.484,41.479],[19.600,42.264],[19.672,42.336],[19.721,42.254],[20.136,42.337],[20.251,42.588],[20.721,42.748],[20.841,43.012],[21.009,42.946],[21.265,42.567],[21.374,42.541],[21.241,42.440],[21.512,42.043],[22.280,42.127],[22.726,41.869],[22.821,41.693],[22.660,41.103],[24.481,41.357],[25.272,41.027],[26.135,41.154],[26.148,41.053],[25.715,40.857],[25.819,40.473],[25.343,40.178],[25.711,39.784],[25.827,39.206],[26.336,39.228],[26.470,39.063],[26.450,38.968],[26.049,38.844],[25.994,38.146],[26.755,37.781],[26.640,37.735],[26.958,37.253],[26.935,36.935],[27.087,36.843],[27.014,36.770],[27.240,36.405],[27.711,36.378],[27.771,36.422],[27.821,36.251],[28.399,36.353],[29.205,35.812],[29.517,35.946],[29.670,35.712],[30.705,35.831],[30.968,36.445],[31.152,36.433],[32.769,35.615],[34.151,35.870],[34.738,36.364],[36.217,35.594],[36.634,35.937]]],[[[-5.496,58.687],[-5.112,59.055],[-5.353,59.501],[-6.471,59.538],[-6.860,58.955],[-6.432,58.652],[-5.496,58.687]]],[[[34.298,44.038],[34.813,44.392],[36.786,44.776],[36.877,45.822],[35.741,45.846],[35.599,45.754],[35.468,45.889],[35.659,46.050],[35.871,46.183],[36.191,46.093],[36.550,46.319],[36.922,46.267],[37.180,46.492],[38.207,46.660],[38.580,46.886],[38.543,47.438],[38.934,47.509],[39.006,47.671],[39.873,47.641],[40.243,48.235],[39.973,48.610],[40.311,48.779],[40.298,48.960],[40.154,49.007],[40.474,49.200],[40.249,49.843],[39.844,49.771],[39.208,50.130],[38.943,50.018],[38.367,50.296],[38.046,50.281],[38.004,50.202],[37.507,50.682],[36.658,50.433],[36.123,50.661],[35.745,50.581],[35.631,51.154],[35.181,51.433],[34.486,51.462],[34.424,51.590],[34.717,51.778],[33.906,52.563],[33.140,52.586],[32.880,52.460],[32.319,52.556],[32.032,52.238],[30.785,52.309],[30.304,51.675],[30.223,51.732],[29.410,51.606],[29.131,51.985],[28.716,51.701],[28.468,51.735],[28.337,51.933],[28.011,51.776],[27.408,51.801],[27.370,51.963],[25.784,52.155],[24.330,52.083],[23.958,51.796],[23.549,51.896],[23.433,51.183],[23.880,50.827],[23.869,50.616],[23.163,50.273],[22.397,49.585],[22.473,49.302],[22.441,49.308],[21.989,48.690],[21.946,48.282],[22.534,47.890],[22.695,47.905],[22.779,47.714],[23.187,47.882],[23.451,47.764],[24.512,47.764],[24.836,47.505],[25.371,47.716],[26.254,47.798],[26.915,48.208],[27.575,48.281],[28.431,47.857],[28.719,47.917],[28.830,47.715],[28.984,47.750],[28.984,47.292],[29.364,47.165],[29.335,46.862],[29.702,46.713],[29.669,46.658],[29.596,46.605],[29.325,46.785],[28.807,46.659],[28.743,46.146],[28.353,45.877],[28.328,45.682],[27.967,45.605],[28.196,45.167],[28.710,45.008],[29.378,45.215],[29.571,45.003],[30.458,44.858],[30.681,45.464],[30.458,45.558],[31.156,46.134],[31.332,45.896],[32.195,45.733],[32.095,45.673],[32.019,45.158],[33.019,44.815],[32.893,44.426],[33.212,44.148],[33.756,43.982],[34.298,44.038]]],[[[12.51,43.99],[12.52,43.99],[12.52,43.99],[12.51,43.99],[12.51,43.99]]],[[[3.576,39.128],[3.825,39.528],[4.341,39.418],[4.631,39.542],[4.778,39.929],[4.591,40.263],[4.072,40.470],[3.606,40.387],[3.482,40.233],[3.306,40.340],[2.812,40.283],[1.837,39.711],[1.982,39.306],[2.673,38.809],[3.037,38.746],[3.576,39.128]]],[[[1.911,38.382],[2.095,39.084],[1.859,39.399],[1.527,39.501],[0.845,39.266],[0.767,38.733],[1.142,38.309],[1.911,38.382]]],[[[12.485,36.696],[12.365,37.071],[11.698,37.160],[11.492,36.875],[11.650,36.488],[12.247,36.399],[12.485,36.696]]],[[[12.968,35.240],[12.978,35.555],[13.333,35.841],[13.042,36.224],[12.594,36.195],[12.506,35.882],[12.137,35.892],[11.872,35.554],[12.093,35.231],[12.606,35.115],[12.968,35.240]]]],"type":"MultiPolygon"}
\ Pas de fin de ligne à la fin du fichier
diff -Nru kpublictransport-25.04.0/src/lib/networks/un_transitous.json kpublictransport-25.04.2/src/lib/networks/un_transitous.json
--- kpublictransport-25.04.0/src/lib/networks/un_transitous.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/networks/un_transitous.json	2025-06-02 22:01:42.000000000 +0200
@@ -1,7 +1,7 @@
 {
     "KPlugin": {
         "Description": "Community-run free and open public transport routing service.",
-        "Description[ca@valencia]": "Servei de rutes de transport públic obert i gratuït de gestió comunitària.",
+        "Description[ca@valencia]": "Servei de rutes de transport públic obert i debades de gestió comunitària.",
         "Description[ca]": "Servei de rutes de transport públic obert i gratuït de gestió comunitària.",
         "Description[en_GB]": "Community-run free and open public transport routing service.",
         "Description[eo]": "Komunume prizorgita libera kaj malferma publiktransporta itinerservo",
diff -Nru kpublictransport-25.04.0/src/lib/stopoverreply.cpp kpublictransport-25.04.2/src/lib/stopoverreply.cpp
--- kpublictransport-25.04.0/src/lib/stopoverreply.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/stopoverreply.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -153,7 +153,16 @@
 
     // augment line information
     for (auto &dep : res) {
-        dep.applyMetaData(request().downloadAssets());
+        if (dep.stopPoint().hasCoordinate()) {
+            dep.applyMetaData(request().downloadAssets());
+        } else {
+            // workaround for backends not delivering coordinates in stopover replies (e.g. DB)
+            auto route = dep.route();
+            auto line = route.line();
+            line.applyMetaData(request().stop(), request().downloadAssets());
+            route.setLine(line);
+            dep.setRoute(route);
+        }
     }
 
     // apply static attributions if @p backend contributed to the results
diff -Nru kpublictransport-25.04.0/src/onboard/data/accesspoints.json kpublictransport-25.04.2/src/onboard/data/accesspoints.json
--- kpublictransport-25.04.0/src/onboard/data/accesspoints.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/accesspoints.json	2025-06-02 22:01:42.000000000 +0200
@@ -12,6 +12,7 @@
     { "ssid": "FlyNet", "id": "lufthansa" },
     { "ssid": "MAVSTART-WIFI", "id": "mav" },
     { "ssid": "OEBB", "id": "oebb" },
+    { "ssid": "RED_OUIGO", "id": "ouigo-es" },
     { "ssid": "SBB-Free", "id": "sbb" },
     { "ssid": "SJ", "id": "icomera-omboard" },
     { "ssid": "Telekom_FlyNet", "id": "panasonic-inflight-v2" },
diff -Nru kpublictransport-25.04.0/src/onboard/data/data.qrc kpublictransport-25.04.2/src/onboard/data/data.qrc
--- kpublictransport-25.04.0/src/onboard/data/data.qrc	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/data.qrc	2025-06-02 22:01:42.000000000 +0200
@@ -30,6 +30,8 @@
         <file>mav.json</file>
         <file>oebb.json</file>
         <file>oebb.js</file>
+        <file>ouigo-es.json</file>
+        <file>ouigo-es.js</file>
         <file>sbb.json</file>
         <file>sncf-tgv.json</file>
         <file>sncf-ic.json</file>
diff -Nru kpublictransport-25.04.0/src/onboard/data/oebb.js kpublictransport-25.04.2/src/onboard/data/oebb.js
--- kpublictransport-25.04.0/src/onboard/data/oebb.js	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/oebb.js	2025-06-02 22:01:42.000000000 +0200
@@ -32,7 +32,7 @@
         stop.expectedDepartureTime = dt + s.departure.forecast;
         stop.scheduledArrivalTime = dt + s.arrival.scheduled;
         stop.expectedArrivalTime = dt + s.arrival.forecast;
-        stop.expectedPlatform = s.track;
+        stop.expectedPlatform = s.track?.de;
         section.intermediateStops.push(stop);
     }
 
diff -Nru kpublictransport-25.04.0/src/onboard/data/oebb.json kpublictransport-25.04.2/src/onboard/data/oebb.json
--- kpublictransport-25.04.0/src/onboard/data/oebb.json	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/oebb.json	2025-06-02 22:01:42.000000000 +0200
@@ -4,7 +4,7 @@
         "script": "oebb.js",
         "positionEndpoint": "https://railnet.oebb.at/api/gps";,
         "positionFunction": "parseGps",
-        "journeyEndpoint": "https://railnet.oebb.at/assets/modules/fis/combined.json";,
+        "journeyEndpoint": "https://railnet.oebb.at/assets/media/fis/combined.json";,
         "journeyFunction": "parseJourney"
     }
 }
diff -Nru kpublictransport-25.04.0/src/onboard/data/ouigo-es.js kpublictransport-25.04.2/src/onboard/data/ouigo-es.js
--- kpublictransport-25.04.0/src/onboard/data/ouigo-es.js	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/src/onboard/data/ouigo-es.js	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1,66 @@
+/*
+    SPDX-FileCopyrightText: 2025 Volker Krause <vkrause@kde.org>
+    SPDX-License-Identifier: LGPL-2.0-or-later
+*/
+
+function parsePosition(response)
+{
+    if (!response.success)
+        return;
+    return {
+        latitude: response.latitude,
+        longitude: response.longitude,
+        speed: response.speed * 3.6, // m/s -> km/h
+        heading: response.heading,
+        altitude: response.altitude,
+        timetamp: new Date(response.timestamp).toISOString()
+    };
+}
+
+function parseJourney(response)
+{
+    let section = {
+        mode: 'PublicTransport',
+        route: {
+            line: {
+                name: response.commercialId,
+                mode: 'LongDistanceTrain'
+            }
+        },
+        intermediateStops: []
+    };
+
+    for (const s of response.stations) {
+        const stop = {
+            stopPoint: {
+                type: 'Stop',
+                name: s.name,
+                latitude: s.coords.coordYLat,
+                longitude: s.coords.coordXLng,
+                identifier: { "uic": "71" + s.code }
+            },
+            expectedDepartureTime: s.departAt,
+            expectedArrivalTime: s.arrivalAt,
+            scheduledDepartureTime: s.theoricalDepartTime,
+            scheduledArrivalTime: s.theoricalArrivalTime
+        };
+        section.intermediateStops.push(stop);
+    }
+
+    let coords = [];
+    for (const c of response.path) {
+        coords.push([c.longitude, c.latitude]);
+    }
+    section.path = {
+        sections: [{
+            path: {
+                coordinates: coords,
+                type: "LineString"
+            }
+        }]
+    };
+
+    let jny = {};
+    jny.sections = [section];
+    return jny;
+}
diff -Nru kpublictransport-25.04.0/src/onboard/data/ouigo-es.json kpublictransport-25.04.2/src/onboard/data/ouigo-es.json
--- kpublictransport-25.04.0/src/onboard/data/ouigo-es.json	1970-01-01 01:00:00.000000000 +0100
+++ kpublictransport-25.04.2/src/onboard/data/ouigo-es.json	2025-06-02 22:01:42.000000000 +0200
@@ -0,0 +1,10 @@
+{
+    "backend": "ScriptedRestOnboardBackend",
+    "options": {
+        "script": "ouigo-es.js",
+        "positionEndpoint": "https://ouifun.ouigo.es:8082/v2/OuigoESPlugin/gps-data";,
+        "positionFunction": "parsePosition",
+        "journeyEndpoint": "https://ouifun.ouigo.es:8082/v2/OuigoESPlugin/travel-infos";,
+        "journeyFunction": "parseJourney"
+    }
+}
diff -Nru kpublictransport-25.04.0/src/onboard-qml/CMakeLists.txt kpublictransport-25.04.2/src/onboard-qml/CMakeLists.txt
--- kpublictransport-25.04.0/src/onboard-qml/CMakeLists.txt	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard-qml/CMakeLists.txt	2025-06-02 22:01:42.000000000 +0200
@@ -5,6 +5,7 @@
     URI "org.kde.kpublictransport.onboard"
     VERSION 1.0
     GENERATE_PLUGIN_SOURCE
+    DEPENDENCIES "org.kde.kpublictransport"
 )
 
 target_sources(kpublictransportonboardqmlplugin PRIVATE
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/autotests/efarequesttest.cpp kpublictransport-25.04.2/autotests/efarequesttest.cpp
--- kpublictransport-25.04.0/autotests/efarequesttest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/efarequesttest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -111,7 +111,7 @@
         QTest::newRow("arrival-with-access-mode") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
 
         req.setLineModes({Line::Bus, Line::Ferry});
-        QTest::newRow("line-mode-constraints") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&inclMOT_5=on&inclMOT_6=on&inclMOT_7=on&inclMOT_17=on&inclMOT_19=on&inclMOT_9=on&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
+        QTest::newRow("line-mode-constraints") << req << QUrl(s("https://www2.vvs.de/vvs/XML_TRIP_REQUEST2?outputFormat=XML&coordOutputFormat=WGS84[DD.ddddd]&language=en&locationServerActive=1&useRealtime=1&type_origin=coord&name_origin=9.18:48.78:WGS84[DD.ddddd]&type_destination=coord&name_destination=8.86:48.59:WGS84[DD.ddddd]&itdDate=20230624&itdTime=2058&itdTripDateTimeDepArr=arr&inclMOT_5=on&inclMOT_6=on&inclMOT_7=on&inclMOT_17=on&inclMOT_19=on&inclMOT_9=on&includedMeans=checkbox&itOptionsActive=1&trITDepMOT=100&trITArrMOT=100&calcNumberOfTrips=4&calcCO2=1&coordListOutputFormat=STRING&stateless=1&sessionID=0&requestID=0";));
     }
 
     void testJourneyRequest()
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/autotests/motis2parsertest.cpp kpublictransport-25.04.2/autotests/motis2parsertest.cpp
--- kpublictransport-25.04.0/autotests/motis2parsertest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/motis2parsertest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -36,6 +36,9 @@
         QTest::newRow("geo-lookup")
             << QStringLiteral(SOURCE_DIR "/data/motis2/location-geo-search.in.json")
             << QStringLiteral(SOURCE_DIR "/data/motis2/location-geo-search.out.json");
+        QTest::newRow("address")
+            << QStringLiteral(SOURCE_DIR "/data/motis2/location-addresses.in.json")
+            << QStringLiteral(SOURCE_DIR "/data/motis2/location-addresses.out.json");
     }
 
     void testParseLocation()
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/autotests/onboardstatustest.cpp kpublictransport-25.04.2/autotests/onboardstatustest.cpp
--- kpublictransport-25.04.0/autotests/onboardstatustest.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/autotests/onboardstatustest.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -22,6 +22,7 @@
 
 #define s(x) QStringLiteral(x)
 
+using namespace Qt::Literals;
 using namespace KPublicTransport;
 
 class OnboardStatusTest : public QObject
@@ -68,6 +69,7 @@
         QTest::newRow("aegean") << s("aegean") << s("aegean.json") << 47.96723323f << 11.781437752f << 1007.0f << 137.0f << 7328.0f;
         QTest::newRow("eurowings") << s("lufthansa") << s("../onboard-journey/eurowings.in.json") << 51.58527374267578f << 12.357730865478516f << 637.087f << -137.6375f << 9018.42f;
         QTest::newRow("lufthansa") << s("lufthansa") << s("../onboard-journey/lufthansa.in.json") << 51.9423f << 12.4496f << 718.576f << -120.785f << 6491.63f;
+        QTest::newRow("ouigo-es") << u"ouigo-es"_s << u"ouigo-es.json"_s << 40.871605f << -2.768676667f << 277.614f << 245.4f << 1063.76f;
     }
 
     void testScriptedPositionParsers()
@@ -117,6 +119,7 @@
         QTest::newRow("sncf-inoui") << s("sncf-tgv") << s("sncf-inoui");
         QTest::newRow("sbb") << s("sbb") << s("sbb");
         QTest::newRow("oebb-railnet") << s("oebb") << s("oebb-railnet");
+        QTest::newRow("oebb-railnet-tracks") << s("oebb") << s("oebb-railnet-tracks");
 
         QTest::newRow("ana") << s("panasonic-inflight-v1") << s("ana");
         QTest::newRow("unite-panasonic") << s("panasonic-inflight-v1") << s("united-panasonic");
@@ -125,6 +128,7 @@
         QTest::newRow("lufthansa") << s("lufthansa") << s("lufthansa");
         QTest::newRow("united") << s("united") << s("united");
         QTest::newRow("nstrein") << s("nstrein") << s("nstrein");
+        QTest::newRow("ouigo-es") << u"ouigo-es"_s << u"ouigo-es"_s;
     }
 
     void testScriptedJourneyParsers()
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/CMakeLists.txt kpublictransport-25.04.2/CMakeLists.txt
--- kpublictransport-25.04.0/CMakeLists.txt	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/CMakeLists.txt	2025-06-02 22:01:42.000000000 +0200
@@ -6,7 +6,7 @@
 # KDE Application Version, managed by release script
 set (RELEASE_SERVICE_VERSION_MAJOR "25")
 set (RELEASE_SERVICE_VERSION_MINOR "04")
-set (RELEASE_SERVICE_VERSION_MICRO "0")
+set (RELEASE_SERVICE_VERSION_MICRO "2")
 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
 project(KPublicTransport VERSION ${RELEASE_SERVICE_VERSION})
 
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/debian/changelog kpublictransport-25.04.2/debian/changelog
--- kpublictransport-25.04.0/debian/changelog	2025-04-17 21:45:25.000000000 +0200
+++ kpublictransport-25.04.2/debian/changelog	2025-06-10 00:17:59.000000000 +0200
@@ -1,3 +1,27 @@
+kpublictransport (25.04.2-1) unstable; urgency=medium
+
+  [ Aurélien COUDERC ]
+  * New upstream release (25.04.1).
+    - Treat neither a positive nor a negative cache hit as missing backend.
+    - Adapt test data to different storage format in 25.04.
+    - Fix ÖBB onboard API journey data parsing and extract track information.
+    - Add QML module dependency information.
+    - Fix MOTIS v2 admin area parsing.
+  * New upstream release (25.04.2).
+    - Fix OTP arrival platform parsing.
+    - Fix parsing of EFA operator names.
+    - Continue backend search until we find at least one that covers both
+    sides.
+    - Consider all higher coverage types as well for journey coverage checks.
+    - Make line asset loading also work for stopovers without coordinates.
+    - Retain trip identifiers in DB trip queries.
+    - Add onboard API support for Ouigo ES.
+    - Check type before reading a numeric JSON value.
+    - Include Estonia in DB's coverage area. (kde#504042)
+    - Make mode filters work on the bwegt EFA endpoint.
+
+ -- Aurélien COUDERC <coucouf@debian.org>  Tue, 10 Jun 2025 00:17:59 +0200
+
 kpublictransport (25.04.0-1) unstable; urgency=medium
 
   [ Aurélien COUDERC ]
Seulement dans kpublictransport-25.04.0/debian: gbp.conf
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/backends/deutschebahnbackend.cpp kpublictransport-25.04.2/src/lib/backends/deutschebahnbackend.cpp
--- kpublictransport-25.04.0/src/lib/backends/deutschebahnbackend.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/deutschebahnbackend.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -301,7 +301,7 @@
     logRequest(request, netReq);
     auto netReply = nam->get(netReq);
     netReply->setParent(reply);
-    QObject::connect(netReply, &QNetworkReply::finished, reply, [this, reply, netReply]() {
+    QObject::connect(netReply, &QNetworkReply::finished, reply, [this, reply, netReply, tripId]() {
         netReply->deleteLater();
         const auto data = netReply->readAll();
         logReply(reply, netReply, data);
@@ -313,6 +313,7 @@
 
         const auto responseObj = QJsonDocument::fromJson(data).object();
         auto jny = DeutscheBahnParser::parseTrip(responseObj, m_parser);
+        jny.setIdentifier(locationIdentifierType(), tripId); // not contained in the response
         addResult(reply, this, std::move(jny));
     });
 
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/backends/efamodeoftransport.cpp kpublictransport-25.04.2/src/lib/backends/efamodeoftransport.cpp
--- kpublictransport-25.04.0/src/lib/backends/efamodeoftransport.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/efamodeoftransport.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -10,6 +10,7 @@
 
 #include <vector>
 
+using namespace Qt::Literals;
 using namespace KPublicTransport;
 
 // comments below are EFA names found in XML responses (usually translated)
@@ -62,4 +63,6 @@
             }
         }
     }
+
+    query.addQueryItem(u"includedMeans"_s, u"checkbox"_s);
 }
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/backends/efaxmlparser.cpp kpublictransport-25.04.2/src/lib/backends/efaxmlparser.cpp
--- kpublictransport-25.04.0/src/lib/backends/efaxmlparser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/efaxmlparser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -131,7 +131,7 @@
 {
     QString opName;
     while (reader.readNextElement()) {
-        if (reader.name() == "name"_L1) {
+        if (opName.isEmpty() && reader.name() == "name"_L1) {
             opName = reader.readElementText();
         }
     }
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/backends/motis2parser.cpp kpublictransport-25.04.2/src/lib/backends/motis2parser.cpp
--- kpublictransport-25.04.0/src/lib/backends/motis2parser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/motis2parser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -356,12 +356,14 @@
         l.setLatitude(locObj.value("lat"_L1).toDouble());
         l.setLongitude(locObj.value("lon"_L1).toDouble());
         l.setFloorLevel(locObj.value("level"_L1).toInt(std::numeric_limits<int>::lowest()));
-        const auto areas = locObj.value("area"_L1).toArray();
+        const auto areas = locObj.value("areas"_L1).toArray();
+        int cityLevel = std::numeric_limits<int>::max();
         for (const auto &areaV : areas) {
             const auto area = areaV.toObject();
-            if (const auto level = area.value("adminLevel"_L1).toInt(); level <= 8) {
+            if (const auto level = area.value("adminLevel"_L1).toInt(); level >= 8 && level < cityLevel) {
                 // TODO needs a proper country-specific admin-level mapping, for now taken from Motis v1 parser
                 // see https://wiki.openstreetmap.org/wiki/Key:admin_level
+                cityLevel = level;
                 l.setLocality(area.value("name"_L1).toString());
             }
         }
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/backends/opentripplannerparser.cpp kpublictransport-25.04.2/src/lib/backends/opentripplannerparser.cpp
--- kpublictransport-25.04.0/src/lib/backends/opentripplannerparser.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/backends/opentripplannerparser.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -444,7 +444,7 @@
     const auto toStop = toObj.value(QLatin1String("stop")).toObject();
     const auto to = parseLocation(toObj);
     section.setTo(to);
-    section.setScheduledDeparturePlatform(toStop.value(QLatin1String("platformCode")).toString());
+    section.setScheduledArrivalPlatform(toStop.value(QLatin1String("platformCode")).toString());
 
     section.setDistance(obj.value(QLatin1String("distance")).toDouble());
 
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/datatypes/backend.cpp kpublictransport-25.04.2/src/lib/datatypes/backend.cpp
--- kpublictransport-25.04.0/src/lib/datatypes/backend.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/backend.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -42,6 +42,21 @@
     return d->coverage[coverageType];
 }
 
+bool Backend::coversLocation(const Location &loc, KPublicTransport::CoverageArea::Type coverageType) const
+{
+    for (const auto c : { CoverageArea::Realtime, CoverageArea::Regular, CoverageArea::Any }) {
+        const auto cov = coverageArea(c);
+        if (!cov.isEmpty() && cov.coversLocation(loc)) {
+            return true;
+        }
+        if (c == coverageType) {
+            break;
+        }
+    }
+
+    return false;
+}
+
 const AbstractBackend* BackendPrivate::impl(const Backend &b)
 {
     return b.d->m_backendImpl.get();
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/datatypes/backend.h kpublictransport-25.04.2/src/lib/datatypes/backend.h
--- kpublictransport-25.04.0/src/lib/datatypes/backend.h	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/backend.h	2025-06-02 22:01:42.000000000 +0200
@@ -41,6 +41,12 @@
     bool isSecure() const;
 
     Q_INVOKABLE KPublicTransport::CoverageArea coverageArea(KPublicTransport::CoverageArea::Type coverageType) const;
+
+    /** Checks whether the given location is covered by this backend
+     *  with at least the given coverage type @p coverageType, ie. this
+     *  also checks all better coverage types.
+     */
+    [[nodiscard]] bool coversLocation(const Location &loc, KPublicTransport::CoverageArea::Type coverageType) const;
 };
 
 }
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/datatypes/json.cpp kpublictransport-25.04.2/src/lib/datatypes/json.cpp
--- kpublictransport-25.04.0/src/lib/datatypes/json.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/datatypes/json.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -183,7 +183,10 @@
             if (v.isString()) {
                 return v.toString().toDouble();
             }
-            return v.toDouble();
+            if (v.isDouble()) {
+                return v.toDouble();
+            }
+            return {};
         case QMetaType::Int:
             if (v.isString()) {
                 return v.toString().toInt();
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/manager.cpp kpublictransport-25.04.2/src/lib/manager.cpp
--- kpublictransport-25.04.0/src/lib/manager.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/manager.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -558,7 +558,7 @@
     // first time/direct query
     if (req.contexts().empty()) {
         QSet<QString> triedBackends;
-        bool foundNonGlobalCoverage = false;
+        bool foundSymmetricNonGlobalCoverage = false;
         for (const auto coverageType : { CoverageArea::Realtime, CoverageArea::Regular, CoverageArea::Any }) {
             const auto checkBackend = [&](const Backend &backend, bool bothLocationMatch) {
                 if (triedBackends.contains(backend.identifier()) || d->shouldSkipBackend(backend, req)) {
@@ -570,17 +570,17 @@
                 }
 
                 if (bothLocationMatch) {
-                    if (!coverage.coversLocation(req.from()) || !coverage.coversLocation(req.to())) {
+                    if (!backend.coversLocation(req.from(), coverageType) || !backend.coversLocation(req.to(), coverageType)) {
                         return;
                     }
                 } else {
-                    if (!coverage.coversLocation(req.from()) && !coverage.coversLocation(req.to())) {
+                    if (!backend.coversLocation(req.from(), coverageType) && !backend.coversLocation(req.to(), coverageType)) {
                         return;
                     }
                 }
 
                 triedBackends.insert(backend.identifier());
-                foundNonGlobalCoverage |= !coverage.isGlobal();
+                foundSymmetricNonGlobalCoverage |= !coverage.isGlobal() && bothLocationMatch;
 
                 if (d->queryJourney(BackendPrivate::impl(backend), req, reply)) {
                     ++pendingOps;
@@ -591,7 +591,7 @@
             for (const auto &backend: d->m_backends) {
                 checkBackend(backend, true);
             }
-            if (pendingOps && foundNonGlobalCoverage) {
+            if (pendingOps && foundSymmetricNonGlobalCoverage) {
                 break;
             }
 
@@ -599,7 +599,7 @@
             for (const auto &backend: d->m_backends) {
                 checkBackend(backend, false);
             }
-            if (pendingOps && foundNonGlobalCoverage) {
+            if (pendingOps && foundSymmetricNonGlobalCoverage) {
                 break;
             }
         }
@@ -948,7 +948,7 @@
 {
     auto reply = d->makeReply<VehicleLayoutReply>(req);
     int pendingOps = 0;
-    int negativeCacheHit = 0;
+    int cacheHit = 0;
 
     // validate input
     if (!req.isValid()) {
@@ -973,10 +973,11 @@
             auto cache = Cache::lookupVehicleLayout(backend.identifier(), req.cacheKey());
             switch (cache.type) {
                 case CacheHitType::Negative:
-                    ++negativeCacheHit;
+                    ++cacheHit;
                     qCDebug(Log) << "Negative cache hit for backend" << backend.identifier();
                     break;
                 case CacheHitType::Positive:
+                    ++cacheHit;
                     qCDebug(Log) << "Positive cache hit for backend" << backend.identifier();
                     if (cache.data.size() == 1) {
                         reply->addAttributions(std::move(cache.attributions));
@@ -997,7 +998,7 @@
         }
     }
 
-    if (pendingOps == 0 && negativeCacheHit == 0) {
+    if (pendingOps == 0 && cacheHit == 0) {
         reply->addError(Reply::NoBackend, u"No viable backend found."_s);
     }
     reply->setPendingOps(pendingOps);
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/lib/stopoverreply.cpp kpublictransport-25.04.2/src/lib/stopoverreply.cpp
--- kpublictransport-25.04.0/src/lib/stopoverreply.cpp	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/lib/stopoverreply.cpp	2025-06-02 22:01:42.000000000 +0200
@@ -153,7 +153,16 @@
 
     // augment line information
     for (auto &dep : res) {
-        dep.applyMetaData(request().downloadAssets());
+        if (dep.stopPoint().hasCoordinate()) {
+            dep.applyMetaData(request().downloadAssets());
+        } else {
+            // workaround for backends not delivering coordinates in stopover replies (e.g. DB)
+            auto route = dep.route();
+            auto line = route.line();
+            line.applyMetaData(request().stop(), request().downloadAssets());
+            route.setLine(line);
+            dep.setRoute(route);
+        }
     }
 
     // apply static attributions if @p backend contributed to the results
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/onboard/data/data.qrc kpublictransport-25.04.2/src/onboard/data/data.qrc
--- kpublictransport-25.04.0/src/onboard/data/data.qrc	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/data.qrc	2025-06-02 22:01:42.000000000 +0200
@@ -30,6 +30,8 @@
         <file>mav.json</file>
         <file>oebb.json</file>
         <file>oebb.js</file>
+        <file>ouigo-es.json</file>
+        <file>ouigo-es.js</file>
         <file>sbb.json</file>
         <file>sncf-tgv.json</file>
         <file>sncf-ic.json</file>
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/onboard/data/oebb.js kpublictransport-25.04.2/src/onboard/data/oebb.js
--- kpublictransport-25.04.0/src/onboard/data/oebb.js	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard/data/oebb.js	2025-06-02 22:01:42.000000000 +0200
@@ -32,7 +32,7 @@
         stop.expectedDepartureTime = dt + s.departure.forecast;
         stop.scheduledArrivalTime = dt + s.arrival.scheduled;
         stop.expectedArrivalTime = dt + s.arrival.forecast;
-        stop.expectedPlatform = s.track;
+        stop.expectedPlatform = s.track?.de;
         section.intermediateStops.push(stop);
     }
 
Seulement dans kpublictransport-25.04.2/src/onboard/data: ouigo-es.js
diff -ur '--exclude=po' '--exclude=*.json' '--exclude=*.geojson' kpublictransport-25.04.0/src/onboard-qml/CMakeLists.txt kpublictransport-25.04.2/src/onboard-qml/CMakeLists.txt
--- kpublictransport-25.04.0/src/onboard-qml/CMakeLists.txt	2025-04-10 19:06:51.000000000 +0200
+++ kpublictransport-25.04.2/src/onboard-qml/CMakeLists.txt	2025-06-02 22:01:42.000000000 +0200
@@ -5,6 +5,7 @@
     URI "org.kde.kpublictransport.onboard"
     VERSION 1.0
     GENERATE_PLUGIN_SOURCE
+    DEPENDENCIES "org.kde.kpublictransport"
 )
 
 target_sources(kpublictransportonboardqmlplugin PRIVATE

Reply to: