Eine neue Version von GTFS/TRIAS wurde zusammen mit dem OJP produktiv gesetzt.
Reaktionen/Feedback/Fragen
Das folgende Trello-Projekt dient für Rückfragen und Bemerkungen.
https://trello.com/b/jiIZwszF/open-journey-planner
Einladungen sonst über opendata@sbb.ch
GTFS – RT
Es gibt ein neues GTFS, das für das GTFS-RT verwendet werden muss. Das Dataset hat den Titel GTFS2020: https://opentransportdata.swiss/en/dataset/timetable-2020-gtfs2020
1x wöchentlich jeden Mittwoch um 9:10 Uhr werden die GTFS-Daten auf FTP-Server hochgeladen und stehen dann zur Verfügung.
Der Wert bei den route_id´s und den trip_id´s für die gleiche Linie/Fahrt hat sich geändert gegenüber den alten Versionen, weil wir die Datenmodellierung in dem neuen OJP DIVA System angepasst haben. Weil die stop_id´s aus DIDOK kommen, sind diese natürlich in beiden Systemen (ODP1.0 und ODP2.0/OJP) identisch.
API: https://api.opentransportdata.swiss/gtfsrt2020
Test-Key: 57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1
Was hat sich geändert:
- Neu werden in TripUpdate nicht mehr befahrene Haltestellen übermittelt mit “scheduled_relationship”:”skipped”
- Die Werte bei route_id und trip_id haben sich geändert, weil die Daten anders modelliert sind.
- route_type 907 ist nicht mehr verfügbar im neuen GTFS-Standard . Die 907-er sind auf 1300 gemappt.
- Im neuen GTFS wird in route_desc nur die Gattung angegegeben. Dies entspricht V.580. Wir werden das jetzt dann noch ändern auf den Submode, so dass ähnliche Information wie bis anhin drin ist. Ebenso wird der route_type noch angepasst. (KNOWN ISSUE, sollte bis Mitte Oktober behoben sein.)
- Pseudo-Haltestellen (die Haltestellen wie Lötschberg-Basistunnel) sind in Static und RT enthalten. Im Moment leider mit dem falschen Typ. (KNOWN ISSUE). Als Workaround sollten diese Haltestellen immer herausgefiltert werden (id<1000).
GTFS-RT kann auch als JSON bezogen werden. Dies ist allerdings mehr zum Testen gedacht und nicht für den produktiven Betrieb.
- https://api.opentransportdata.swiss/gtfsrt2020/ liefert die Daten im binären Protobuf-Format. Das ist von produktiven Applikationen zu verwenden.
- https://api.opentransportdata.swiss/gtfsrt2020/?FORMAT=json liefert die Daten in JSON. Das ist nur zur Visualisierung der Daten und zu Testzwecken (z.B. für Datenanalysen) zu verwenden, nicht von produktiven Applikationen. (FORMAT ist case-sensitiv).
TRIAS
Die neue (TRIAS2020) Schnittstelle ist auf folgenden Seiten dokumentiert:
LocationInformationRequest ist mit TRIAS2020 neu hinzugekommen.
Neue API: https://api.opentransportdata.swiss/trias2020
Test-Key: 57c5dbbbf1fe4d000100001842c323fa9ff44fbba0b9b925f0c052d1
Was hat sich geändert:
- LocationInformationRequest/Response steht neu zur Verfügung
- Bei TripRequest/Response werden neu auch Verbindungen ausgegeben, bei welchen umgestiegen werden muss. Dies führt dazu, dass Es mehrere Leg in einem Trip gibt. Auch gibt es mehr Typen von Legs.
- Im Header müssen die Schema-Locations angegeben werden.
- Neu werden die TRIAS-Elemente mit NamespacePräfix «trias:» und «siri:» übermittelt. Bei Verwendung einer Library für das Parsing sollte dies problemlos weiter funktionieren.
- Die Liniennamen haben sich geändert.
Beispiel TripRequest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
<?xml version="1.0" encoding="UTF-8"?> <Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vdv.de/trias ../trias-xsd-v1.1/Trias.xsd"> <ServiceRequest> <siri:RequestTimestamp>2020-04-24T12:00:00Z</siri:RequestTimestamp> <siri:RequestorRef>IRMA</siri:RequestorRef> <RequestPayload> <TripRequest> <Origin> <LocationRef> <StopPlaceRef>8530813</StopPlaceRef> <LocationName> <Text>Zürich Kreuzplatz</Text> </LocationName> </LocationRef> <DepArrTime>2020-04-24T12:00:00Z</DepArrTime> </Origin> <Destination> <LocationRef> <StopPlaceRef>8503003</StopPlaceRef> <LocationName> <Text>Zürich Stadelhofen</Text> </LocationName> </LocationRef> </Destination> <Params> <NumberOfResults>10</NumberOfResults> <IncludeIntermediateStops>true</IncludeIntermediateStops> </Params> </TripRequest> </RequestPayload> </ServiceRequest> </Trias> |
Beispiel TripRequest 2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
<?xml version="1.0" encoding="UTF-8"?> <Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vdv.de/trias ../trias-xsd-v1.1/Trias.xsd"> <ServiceRequest> <siri:RequestTimestamp>2020-04-24T12:00:00Z</siri:RequestTimestamp> <siri:RequestorRef>IRMA</siri:RequestorRef> <RequestPayload> <TripRequest> <Origin> <LocationRef> <GeoPosition> <Longitude>8.484003</Longitude> <Latitude>47.386135</Latitude> </GeoPosition> <LocationName> <Text>Altstetten</Text> </LocationName> </LocationRef> <DepArrTime>2020-04-24T12:00:00Z</DepArrTime> <IndividualTransportOptions> <Mode>walk</Mode> <MaxDistance>10000</MaxDistance> <MaxDuration>PT2H</MaxDuration> <MinDistance>1</MinDistance> <MinDuration>PT1S</MinDuration> <Speed>1000</Speed> </IndividualTransportOptions> </Origin> <Destination> <LocationRef> <GeoPosition> <Longitude>8.560054</Longitude> <Latitude>47.364618</Latitude> </GeoPosition> <LocationName> <Text>Hirslanden</Text> </LocationName> </LocationRef> <IndividualTransportOptions> <Mode>walk</Mode> <MaxDistance>10000</MaxDistance> <MaxDuration>PT2H</MaxDuration> <MinDistance>1</MinDistance> <MinDuration>PT1S</MinDuration> <Speed>1000</Speed> </IndividualTransportOptions> </Destination> <Via> <ViaPoint> <LocalityRef>23026230:17</LocalityRef> <LocationName> <Text>Winterthur</Text> </LocationName> </ViaPoint> </Via> <Params> <PtModeFilter> <Exclude>false</Exclude> <PtMode>tram</PtMode> <PtMode>bus</PtMode> <TramSubmode>cityTram</TramSubmode> <BusSubmode>regionalBus</BusSubmode> </PtModeFilter> <LineFilter> <Line> <LineRef>ojp:92080::R</LineRef> </Line> <Line> <LineRef>ojp:91012:B:H</LineRef> </Line> <Exclude>false</Exclude> </LineFilter> <OperatorFilter> <Exclude>false</Exclude> <OperatorRef>ojp:849:VerkehrsbetriebeZrich</OperatorRef> <OperatorRef>ojp:11:SchweizerischeBundesbahnenSBB</OperatorRef> </OperatorFilter> <WalkSpeed>150</WalkSpeed> <NumberOfResults>20</NumberOfResults> <IgnoreRealtimeData>true</IgnoreRealtimeData> <ImmediateTripStart>true</ImmediateTripStart> <InterchangeLimit>1</InterchangeLimit> <AlgorithmType>fastest</AlgorithmType> <!-- <AlgorithmType>fastest</AlgorithmType> <AlgorithmType>leastCost</AlgorithmType> <AlgorithmType>leastWalking</AlgorithmType> <AlgorithmType>minChanges</AlgorithmType>--> <ItModesToCover>walk</ItModesToCover> <IncludeTrackSections>true</IncludeTrackSections> <IncludeLegProjection>true</IncludeLegProjection> <IncludeTurnDescription>true</IncludeTurnDescription> <IncludeIntermediateStops>true</IncludeIntermediateStops> </Params> </TripRequest> </RequestPayload> </ServiceRequest> </Trias> |
Beispiel StopEventRequest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<?xml version="1.0" encoding="UTF-8"?> <Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vdv.de/trias ../trias-xsd-v1.1/Trias.xsd"> <ServiceRequest> <siri:RequestTimestamp>2020-04-24T12:00:00Z</siri:RequestTimestamp> <siri:RequestorRef>IRMA</siri:RequestorRef> <siri:MessageIdentifier>4711</siri:MessageIdentifier> <RequestPayload> <StopEventRequest> <Location> <LocationRef> <StopPlaceRef>8530813</StopPlaceRef> <LocationName> <Text>Zürich Kreuzplatz</Text> </LocationName> </LocationRef> <DepArrTime>2020-04-24T12:00:00Z</DepArrTime> </Location> <Params> <NumberOfResults>20</NumberOfResults> <StopEventType>both</StopEventType> <IncludeRealtimeData>true</IncludeRealtimeData> </Params> </StopEventRequest> </RequestPayload> </ServiceRequest> </Trias> |
Beispiel TripInformationRequest
Achtung: Die JourneyRef muss jeweils über einen StopEventRequest oder über einen TripRequest gesucht werden. Bei jedem Datenimport eines Fahrplans kann sich die JourneyRef aktuell ändern. Dies wird sich erst mit der Einführung der Swiss Journey ID ändern.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?xml version="1.0" encoding="utf-8"?> <Trias version="1.1" xmlns="http://www.vdv.de/trias" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vdv.de/trias ../trias-xsd-v1.1/Trias.xsd"> <ServiceRequest> <siri:RequestTimestamp>2020-04-24T12:00:00Z</siri:RequestTimestamp> <siri:RequestorRef>IRMA</siri:RequestorRef> <siri:MessageIdentifier>4711</siri:MessageIdentifier> <RequestPayload> <TripInfoRequest> <JourneyRef>ojp:91009:B:H:j20:18975:18975</JourneyRef> <OperatingDayRef>2020-04-24</OperatingDayRef> <Params> <IncludeCalls>true</IncludeCalls> <IncludeService>true</IncludeService> </Params> </TripInfoRequest> </RequestPayload> </ServiceRequest> </Trias> |
API-Explorer (TRIAS2020)