| 18. Juni 2026 | |  | |
|
|
|
|
| --- English version see below --- |
| |
|
| Liebe Nutzer:innen von opentransportdata.swiss |
| |
|
Für alle, die noch nicht in den Sommerferien weilen und noch etwas Lesestoff für die Badi oder den See benötigen, haben wir genau das Richtige: News aus der Welt von Open Data für Mobilität!
|
| |
|
| Verschiebung der Einführung von SLOID in GTFS, OJP und NeTEx um eine Woche auf den 11.06.2026 |
| |
|
 |
| Bildquelle: intern |
Aufgrund eurer Rückmeldungen verschieben wir die vollständige Umsetzung SLOID um eine Woche auf Donnerstag, 11. Juni 2026. Dies betrifft die Formate OJP, GTFS und NeTEx.
In untenstehender Tabelle findet ihr eine Übersicht der möglichen Fälle: |
| |
|  | |
|
OJP 1.0 und OJP 2.0 - OJP V1 verlangt bei StopPlaceRefs im Request zwingend SLOIDs. Andernfalls wird die Antwort TRIP_NOTRIPFOUND zurückgegeben. - OJP V2 ist deutlich flexibler und unterstützt sowohl DIDOK (z. B. 8503000) als auch SLOIDs (z. B. ch:1:sloid:3000). - Die Preisabfrage funktioniert unverändert wie bisher. Das Verhalten kann bereits in den jeweiligen Integrationsumgebungen getestet werden. Die URL und der API-Schlüssel für die Integrationssysteme können nicht selbst generiert werden, sondern müssen via opendata@sbb.ch angeordert werden.
GTFS/GTFS-RT/GTFS-SA Zusätzlich zur SLOID wurde eine neue Spalte DIDOK eingeführt. Eine Testdatei ist unter dem folgendem Link verfügbar. Die Datei enthält die neue Spalte DIDOK in der stops.txt.
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code,original_stop_id,didok "5457076","Praha hl. n.","50.08306107","14.43604340","","Parent5457076","","5457076","5457076" "Parentch:1:sloid:3000","Zürich HB","47.37817620","8.54021154","1","","","ch:1:sloid:3000","8503000" "ch:1:sloid:3000","Zürich HB","47.37817620","8.54021154","","Parentch:1:sloid:3000","","ch:1:sloid:3000","8503000" "ch:1:sloid:3000:10:18","Zürich HB","47.37941712","8.53683388","","Parentch:1:sloid:3000","18","ch:1:sloid:3000:10:18","8503000" "ch:1:sloid:3000:2:3","Zürich HB","47.37834653","8.53621404","","Parentch:1:sloid:3000","3","ch:1:sloid:3000:2:3","8503000" "ch:1:sloid:3000:3:4","Zürich HB","47.37840736","8.53625895","","Parentch:1:sloid:3000","4","ch:1:sloid:3000:3:4","8503000" "ch:1:sloid:3000:3:5","Zürich HB","47.37848035","8.53631285","","Parentch:1:sloid:3000","5","ch:1:sloid:3000:3:5","8503000" "ch:1:sloid:3000:4:6","Zürich HB","47.37855335","8.53633082","","Parentch:1:sloid:3000","6","ch:1:sloid:3000:4:6","8503000" "ch:1:sloid:3000:4:7","Zürich HB","47.37862634","8.53639370","","Parentch:1:sloid:3000","7","ch:1:sloid:3000:4:7","8503000" "ch:1:sloid:3000:5:8","Zürich HB","47.37869326","8.53642963","","Parentch:1:sloid:3000","8","ch:1:sloid:3000:5:8","8503000" "ch:1:sloid:3000:5:9","Zürich HB","47.37877233","8.53648353","","Parentch:1:sloid:3000","9","ch:1:sloid:3000:5:9","8503000"
|
| |
|
Umwandlung SLOID - DIDOK In vielen Fällen ist die Umwandlung trivial. Es gibt jedoch Ausnahmen: So existiert beispielsweise bei der Haltestelle «Bern Europaplatz» nur eine kommerzielle Haltestelle. Zudem müssen die Gleis-SLOIDs korrekt zugeordnet werden.
Liste: def sloid2didok(sloid:str)->int: # We make sure that whatever we get is a didok in the end. # It might be a didok, when we return it as integer # It might be a sloid, then we transform it into a didok (as integer) # With the sloid it is important that we go from the Quay level to the StopPlace level # An important part is that we transform to the commercial stops. # For this the dict is used my_dict: Dict[str,str] ={ "8507082": "8504108", "8503088": "8503000", "8519342": "8504014", "8014488": "8503467", "8014482": "8503466", "8014483": "8503465", "8014484": "8503464", "8014485": "8503463", "8014487": "8503462", } |
| |
|
Regel zur Umwandlung von DIDOK nach SLOID Die Umwandlungsregel wird nur angewendet, wenn eine Eingabe aus 7 Ziffern besteht. Bei DIDOK-Nummern erfolgt die Umwandlung grundsätzlich auf Basis der ersten sieben Ziffern. Beispiel: CUS 85 70899 01 wird für die weitere Verarbeitung als DIDOK 8570899 interpretiert. - Regel 1: 85xxxxx ➔ gewandelt nach ch:1:sloid:xxxxx (führende Nullen nach 85 werden entfernt) - Regel 2: YYxxxxx ➔ gewandelt nach ch:1:sloid:YYxxxxx (führende Nullen nach YY bleiben erhalten). YY umfasst alle Haltestellen, deren globale ID mit 11 bis 14 beginnt. - Regel 3: ZZxxxxx ➔ gewandelt nach ZZxxxxx (direkt folgende Nullen nach ZZ bleiben erhalten). ZZ umfasst alle übrigen Haltestellen. |
| |
|
| Letzter Reminder: Umstellung auf neue Datensatzversionen – alte Versionen werden am 30. Juni abgeschaltet |
| |
|
 |
| Bildquelle: unsplash.com |
Wie bereits in früheren Newslettern angekündigt, stellen wir seit Januar 2026 (teilweise auch früher) für verschiedene Datensätze neue Versionen «V2» bereit und betreiben diese parallel zu den bisherigen Versionen. Am 30. Juni 2026 werden die alten Versionen nun definitiv ausser Betrieb genommen. Betroffen sind folgende Datensätze: - atlas: Die Daten-Exporte von Team atlas: Stammdaten und Metadaten sowie die Daten zur Barrierefreiheit. - Swiss Journey ID (SJYID): Seit November 2025 bieten wir eine neue Version 2 an. - Ist-Daten: Der tägliche Export der tatsächlich durchgeführten Fahrten des Vortags wurde bereits im August 2025 in einer neuen «Version 2» ausgerollt. - Fahrrad- und Auto-Parkplätze: Seit November 2025 bieten wir einen neuen, kombinierten Datensatz Bike-and-Car-Parking an, der die bisherigen Datensätze Bike and Car Parking und parking-facilities ersetzt.
Bei allen betroffenen Datensätzen sind entsprechende Warnhinweise im Datenkatalog unter https://data.opentransportdata.swiss/ vermerkt. Bei Fragen und Unklarheiten unterstützen wir gerne – opendata@sbb.ch. |
| |
|
| Publikation «TarifCode» als Dataset |
| |
|
|
Bisher waren die Erläuterungen zu den Tarifcodes und weiteren Alliance SwissPass-Codes nur für einen eingeschränkten Kreis zugänglich. Damit alle User von opentransportdata.swiss optimal mit den Daten arbeiten können, wurde der Datensatz als Excel bei den Verkehrsmittel- und Hinweislisten zur Verfügung gestellt. Die Tarifcodes sind im Hintergrund der Fahrpläne im Fall von unterschiedlichen Tarifen innerhalb der gleichen Transportunternehmung und Strecke essenziell, damit die Verkaufsplattform NOVA für jede Fahrt den exakten und korrekten Tarif berechnen kann. Sie müssen bei Anfragen an die NOVA weitergegeben werden. Die Aktualisierung des Datensatzes findet nur selten statt. Fachliche Fragen können an folgende E-Mail gesendet werden: xpverb@sbb.ch. |
| |
|
| Online Meet-Up & bevorstehende Community Events |
| |
|
 |
| Bildquelle: unsplash.com |
- Richard Stallman live in Bern – Freitag, 12. Juni 2026 um 12:00 Uhr: Die Veranstaltung findet im SBB Auditorium Wankdorf (Hilfikerstrasse 1, 3014 Bern) statt und kann alternativ per Live-Stream verfolgt werden. 👉 Hier geht's zur Anmeldung: SBB Inspire mit Richard Stallman.
- Online-Meet-Up: «Voyager sans rupture dans les transports publics: plus de mobilité grâce aux données, aux systèmes et aux services» - am Donnerstag, 10. September von 11:00 bis 12:00 Uhr. 👉 Hier könnt ihr euch für das Meet-Up anmelden. (Das Meet-Up findet auf Französisch statt)
- 📌 Save-the-Date: Open Transport Community Konferenz 2026 vom 06. bis 10. Oktober 2026 in Bern-Wankdorf am SBB-Hauptsitz (Hilfikerstrasse 1, 3014 Bern). Die Veranstaltung wird von FOSSGIS e.V. organisiert. 👉 Hier geht’s zur Anmeldung.
-📢 Call for Speaker – Referent:innen für die DINAcon 2026 gesucht: Habt ihr Lust, eure Arbeit rund um Open Data einem Fachpublikum zu präsentieren? Dann seid ihr bei der DINAcon 2026 genau richtig. Die DINACon-Konferenz findet am 18. November 2026 im Kongresszentrum Kreuz in Bern statt. Wir suchen noch engagierte Referen:tinnen, die ihre Projekte und Erfahrungen im Bereich Open Data in einem kurzen 10-minütigen Input vorstellen wollen. Fühlt ihr euch angesprochen? Dann meldet euch bis 30. Juni 2026 bei uns via opendata@sbb.ch. |
| |
|
---------------
Wie immer freuen wir uns über euer Feedback zur Plattform sowie zu den Daten und Services via opendata@sbb.ch.
- Das opentransportdata.swiss-Team |
| |
|
---------------- English version ---------------- |
| |
|
| Dear users of opentransportdata.swiss |
| |
|
| For those who are not yet enjoying their summer holidays, or who still need some reading material for the swimming pool or the lake, we have just the thing: news from the world of open data for mobility! |
| |
|
| The introduction of SLOID in GTFS, OJP and NeTEx has been postponed by one week to 11th June 2026 |
| |
|
 |
| Source: internal |
Based on your feedback, we are postponing the full implementation of SLOID by one week to Thursday, 11th June 2026. This affects the formats OJP, GTFS and NeTEx.
In the table below, you will find an overview of the possible scenarios: |
| |
|  | |
|
OJP 1.0 and OJP 2.0 - OJP V1 requires SLOIDs for StopPlaceRefs in the request. Otherwise, the response TRIP_NOTRIPFOUND is returned. - OJP V2 is significantly more flexible and supports both DIDOK (e.g. 8503000) and SLOIDs (e.g. ch:1:sloid:3000). - The fare request functionality remains unchanged. This behavior can already be tested in the respective integration environments. The URL and the API key for the integration system cannot be generated independently and must be requested via opendata@sbb.ch.
GTFS/GTFS-RT/GTFS-SA In addition to the SLOID, a new DIDOK column has been introduced. A test file is available at the following link. The file includes the new DIDOK column in stops.txt.
stop_id,stop_name,stop_lat,stop_lon,location_type,parent_station,platform_code,original_stop_id,didok "5457076","Praha hl. n.","50.08306107","14.43604340","","Parent5457076","","5457076","5457076" "Parentch:1:sloid:3000","Zürich HB","47.37817620","8.54021154","1","","","ch:1:sloid:3000","8503000" "ch:1:sloid:3000","Zürich HB","47.37817620","8.54021154","","Parentch:1:sloid:3000","","ch:1:sloid:3000","8503000" "ch:1:sloid:3000:10:18","Zürich HB","47.37941712","8.53683388","","Parentch:1:sloid:3000","18","ch:1:sloid:3000:10:18","8503000" "ch:1:sloid:3000:2:3","Zürich HB","47.37834653","8.53621404","","Parentch:1:sloid:3000","3","ch:1:sloid:3000:2:3","8503000" "ch:1:sloid:3000:3:4","Zürich HB","47.37840736","8.53625895","","Parentch:1:sloid:3000","4","ch:1:sloid:3000:3:4","8503000" "ch:1:sloid:3000:3:5","Zürich HB","47.37848035","8.53631285","","Parentch:1:sloid:3000","5","ch:1:sloid:3000:3:5","8503000" "ch:1:sloid:3000:4:6","Zürich HB","47.37855335","8.53633082","","Parentch:1:sloid:3000","6","ch:1:sloid:3000:4:6","8503000" "ch:1:sloid:3000:4:7","Zürich HB","47.37862634","8.53639370","","Parentch:1:sloid:3000","7","ch:1:sloid:3000:4:7","8503000" "ch:1:sloid:3000:5:8","Zürich HB","47.37869326","8.53642963","","Parentch:1:sloid:3000","8","ch:1:sloid:3000:5:8","8503000" "ch:1:sloid:3000:5:9","Zürich HB","47.37877233","8.53648353","","Parentch:1:sloid:3000","9","ch:1:sloid:3000:5:9","8503000" |
| |
|
Conversion of SLOID to DIDOK In many cases, the conversion is straightforward. However, there are exceptions. For example, the station 'Bern Europaplatz' has only one commercial stop. In addition, platform SLOIDs must be mapped correctly to the corresponding DIDOK identifiers.
List: def sloid2didok(sloid:str)->int: # We make sure that whatever we get is a didok in the end. # It might be a didok, when we return it as integer # It might be a sloid, then we transform it into a didok (as integer) # With the sloid it is important that we go from the Quay level to the StopPlace level # An important part is that we transform to the commercial stops. # For this the dict is used my_dict: Dict[str,str] ={ "8507082": "8504108", "8503088": "8503000", "8519342": "8504014", "8014488": "8503467", "8014482": "8503466", "8014483": "8503465", "8014484": "8503464", "8014485": "8503463", "8014487": "8503462", } |
| |
|
Rule for converting DIDOK to SLOID The conversion rule is applied only when the input consists of 7 digits. For DIDOK numbers, the conversion is always based on the first seven digits. For example, CUS 85 70899 01 is interpreted as DIDOK 8570899 for further processing. - Rule 1: 85xxxxx ➔ converted to ch:1:sloid:xxxxx (leading zeros after 85 are removed) - Rulel 2: YYxxxxx ➔ converted to ch:1:sloid:YYxxxxx (leading zeros after YY are retained). YY includes all stops whose global ID begins with 11 to 14. - Rulel 3: ZZxxxxx ➔ converted to ZZxxxxx (leading zeros after ZZ are retained). ZZ includes all other stops. |
| |
|
| Final reminder: Transition to new dataset versions – old versions will be decommissioned on 30th June |
| |
|
 |
| Source: unsplash.com |
As announced in previous newsletters, we have been providing new 'V2' versions of various datasets since January 2026 (and in some cases earlier), while continuing to operate the previous versions in parallel. On 30th June 2026, the old versions will be permanently decommissioned. The following datasets are affected: - atlas: Data exports from the atlas team: master data, metadata and accessibility data. - Swiss Journey ID (SJYID): Since November 2025, we have been offering a new Version 2. - Actual data: The daily export of actually operated trips from the previous day was released as a new 'Version 2' in August 2025. - Bicycle and car parking: Since November 2025, we have provided a new combined dataset, Bike-and-Car-Parking which replaces the previous datasets Bike and Car Parking and parking-facilities.
For all affected datasets, corresponding warning notices are published in the data catalogue at https://data.opentransportdata.swiss. If you have any questions or uncertainties, we are happy to help: opendata@sbb.ch.
|
| |
|
| Publication of 'TarifCode' as a dataset |
| |
|
|
Previously, explanations of fare codes and other Alliance SwissPass codes were only accessible to a restricted group of users. To enable all users of opentransportdata.swiss to work with the data more effectively, the dataset has now been made available as an Excel file within the lists of transport modes and hints. The fare codes are essential in the background of timetables in cases where different fares exist within the same transport company and route, enabling the NOVA sales platform to calculate the accurate and correct fare for every journey. They must be transmitted to NOVA when queries are made. The dataset is only updated infrequently. Subject-related questions can be sent to the following email address: xpverb@sbb.ch. |
| |
|
| Online Meet-Up & upcoming community events |
| |
|
 |
| Source: www.unsplash.com |
- Richard Stallman live in Bern – Friday, 12th June 2026 at 12:00 p.m.: The event will take place at the SBB Auditorium Wankdorf (Hilfikerstrasse 1, 3014 Bern) and can also be followed via live stream. 👉 Register here: SBB Inspire with Richard Stallman.
- Online Meet-Up: 'Voyager sans rupture dans les transports publics: plus de mobilité grâce aux données, aux systèmes et aux services' – on Thursday, 10th September, from 11:00 a.m. to 12:00 p.m. 👉Register here for the Meet-Up (The Meet-Up will be held in French)
- 📌 Save the Date: Open Transport Community Conference 2026 from 06th to 10th October 2026 in Bern-Wankdorf at the SBB headquarters (Hilfikerstrasse 1, 3014 Bern). The event is organized by FOSSGIS e.V. 👉 Here you can register.
- 📢 Call for Speakers – DINAcon 2026: We are looking for speakers for the DINAcon 2026: Would you like to present your work on open data to a professional audience? Then the DINAcon 2026 is the perfect opportunity for you! The conference will take place on 18th November 2026 at the Kongresszentrum Kreuz in Bern. We are looking for motivated speakers who would like to present their projects and experiences in the field of Open Data in a short 10-minute talk. Interested? Then get in touch with us latest by 30th June 2026 via opendata@sbb.ch. |
| |
|
---------------
As always, we look forward to hearing from you with feedback to the platform or data and services via opendata@sbb.ch.
- The opentransportdata.swiss team |
| |
|
| Impressum |
SBB AG Digital Solution Kundeninformation Wylerstrasse 123/125, 3000 Bern 65 opendata@sbb.ch
http://opentransportdata.swiss Follow us on linkedin: Systemaufgaben Kundeninformation SKI+
Du erhältst diese Nachricht, weil du dich auf der Open-Data-Plattform Mobilität Schweiz registriert hast. Falls du Nachrichten dieser Art nicht mehr erhalten möchtest, kannst du dich durch Klick auf diesen Link austragen.
You are receiving this message because you registered on the Open Data Platform Mobility Switzerland. If you no longer wish to receive messages of this type, you can unsubscribe by clicking on this link. |
| |
 |
|