#AutoTranslate
Kurzbeschreibung
TripRequest ist der zentrale Dienst. Mit Angabe von Origin und Destination wird ein Trip geplant.
Ein Trip hat verschiedene “Legs” (Abschnitte).
Fachliche Beschreibung
Die Modellierung einer Reise besteht aus folgenden Komponenten:
- Haltestellen: Hierfür gibt es zusätzlich die Datensätze Dienststellen.
- Fahrten: Eine Fahrt ist die Beförderung von Kunden auf einem bestimmten Weg, einer bestimmten Fahrplan-Verbindung, mit einem bestimmten Verkehrsmittel (Fahrzeug), zu einer bestimmten Zeit, in eine bestimmte Richtung.
- Fahrplan: Ein Fahrplan legt im öffentlichen Personennah- und -fernverkehr und im Schienengüterverkehr den Fahrtverlauf eines Verkehrsmittels fest. Dabei notwendige Angaben sind Zugnummer, Verkehrstage, Fahrweg, Ankunfts-, Abfahrts- und Durchfahrtszeiten an den Haltestellen sowie die zulässigen Geschwindigkeiten in den einzelnen Abschnitten des Fahrwegs.
- Prognose: Die Prognosen sind die in der Zukunft liegenden Verkehrszeiten einer Fahrt, die ausgehend vom aktuellen Standort des Fahrzeuges berechnet werden. Dabei werden in der näheren Zukunft durch etablierte Algorithmen die Prognosen, unter Einbezug vieler Faktoren, berechnet. Im weiteren Verlauf der Prognose werden dabei weniger Faktoren berücksichtigt.
Technische Beschreibung
API-Explorer
Sie können eigene Requests ausprobieren – direkter Link zum API-Explorer.
Request
<?xml version="1.0" encoding="UTF-8"?>
<OJP xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.siri.org.uk/siri" version="1.0"
xmlns:ojp="http://www.vdv.de/ojp" xsi:schemaLocation="http://www.siri.org.uk/siri ../ojp-xsd-v1.0/OJP.xsd">
<OJPRequest>
<ServiceRequest>
<RequestTimestamp>2020-01-31T12:30:00Z</RequestTimestamp>
<RequestorRef>3CC3C04A-20A0-4B12-AC46-5A7843E328A7</RequestorRef>
<ojp:OJPTripRequest>
<RequestTimestamp>2020-01-31T12:30:00Z</RequestTimestamp>
<ojp:Origin>
<ojp:PlaceRef>
<ojp:StopPlaceRef>8503000</ojp:StopPlaceRef>
<ojp:LocationName>
<ojp:Text>Bern</ojp:Text>
</ojp:LocationName>
</ojp:PlaceRef>
</ojp:Origin>
<ojp:Destination>
<ojp:PlaceRef>
<ojp:StopPlaceRef>8505000</ojp:StopPlaceRef>
<ojp:LocationName>
<ojp:Text>Luzern</ojp:Text>
</ojp:LocationName>
</ojp:PlaceRef>
</ojp:Destination>
<ojp:Params>
<ojp:NumberOfResults>10</ojp:NumberOfResults>
<ojp:OptimisationMethod>fastest</ojp:OptimisationMethod>
</ojp:Params>
</ojp:OJPTripRequest>
</ServiceRequest>
</OJPRequest>
</OJP>
| Element | Kardinalität | Beschreibung | Beispiel |
|---|---|---|---|
RequestTimestamp | 1:1 | Der Timestamp des Requests im ISO 8601 Format. Bevorzugt als Zulu-Time. |
<RequestTimestamp>2020-01-31T12:30:00Z</RequestTimestamp> |
MessageIdentifier | 0:1 | Der Identifier der Message. Am liebsten strikt monoton steigend. |
<MessageIdentifier>756</MessageIdentifier> |
ojp:Origin | 1:* | Der Ausgangspunkt der Reiseanfrage. OJP bietet verschiedene Möglichkeiten um dieses Element zu beschreiben. Mehr Infos im entsprechenden Abschnitt |
<ojp:Origin>
<ojp:PlaceRef>
<ojp:StopPlaceRef>8503000</ojp:StopPlaceRef>
<ojp:LocationName>
<ojp:Text>Bern</ojp:Text>
</ojp:LocationName>
</ojp:PlaceRef>
<ojp:DepArrTime>2020-01-20T12:00:00Z</ojp:DepArrTime>
</ojp:Origin>
|
ojp:Destination | 1:* | Das Ziel der Reiseanfrage. OJP bietet verschiedene Möglichkeiten um dieses Element zu beschreiben. Mehr Infos im entsprechenden Abschnitt. |
<ojp:Destination>
<ojp:PlaceRef>
<ojp:StopPlaceRef>8505000</ojp:StopPlaceRef>
<ojp:LocationName>
<ojp:Text>Luzern</ojp:Text>
</ojp:LocationName>
</ojp:PlaceRef>
<ojp:DepArrTime>2020-01-20T12:00:00Z</ojp:DepArrTime>
</ojp:Destination>
|
ojp:Via | 0:1 | Ein einziges Via wird unterstützt. Müssen mehrere Vias berücksichtigt oder ein Rundkurs berechnet werden, dann muss die Anfrage in mehrere Trips zur Anfrage aufgeteilt werden. |
<ojp:Via> <ojp:ViaPoint> <StopPointRef>8506000</StopPointRef> <ojp:LocationName> <ojp:Text>Winterthur</ojp:Text> </ojp:LocationName> </ojp:ViaPoint> </ojp:Via> |
ojp:Params | 0:1 | Die weiteren Parameter. Siehe im entsprechenden Abschnitt. |
<ojp:Params> <ojp:IncludeTrackSections>true</ojp:IncludeTrackSections> <ojp:IncludeLegProjection>true</ojp:IncludeLegProjection> <ojp:IncludeTurnDescription>true</ojp:IncludeTurnDescription> <ojp:IncludeAccessibility>true</ojp:IncludeAccessibility> <ojp:IncludeIntermediateStops>true</ojp:IncludeIntermediateStops> <ojp:IncludeFare>true</ojp:IncludeFare> </ojp:Params> |
Struktur Origin/Destination
| Elemente | Kardinalität | Beschreibung | Beispiel |
|---|---|---|---|
ojp:PlaceRef/siri:StopPointRef | 0:1 | Verweis auf StopPoint.
Achtung: Sowohl Didok wie auch sloid können vorkommen. Mehr Infos. |
<ojp:PlaceRef> <StopPointRef>8530813</StopPointRef> <ojp:LocationName> <ojp:Text>Zürich Kreuzplatz</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:StopPlaceRef | 0:1 | Referenz auf eine Haltestelle |
<ojp:PlaceRef> <StopPointRef>8530813</StopPointRef> <ojp:LocationName> <ojp:Text>Zürich Kreuzplatz</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:GeoPosition | 0:1 | WGS84 Koordinaten |
<ojp:PlaceRef> <ojp:GeoPosition> <Longitude>8.484003</Longitude> <Latitude>47.386135</Latitude> </ojp:GeoPosition> <ojp:LocationName> <ojp:Text>Altstetten</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:TopographicPlaceRef | 0:1 | Verweis auf einen “Ort. Schwierig, da die Werte nicht erraten werden können
|
<ojp:PlaceRef> <ojp:TopographicPlaceRef>23006351:1</ojp:TopographicPlaceRef> <ojp:LocationName> <ojp:Text>Bern (Bern)</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:PointOfInterestRef | 0:1 | Verweis auf einen Point of Interest. Der Location Name wird ignoriert.
|
<ojp:PlaceRef> <ojp:PointOfInterestRef>1</ojp:PointOfInterestRef> <ojp:LocationName> <ojp:Text>unbekannt</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:PlaceRef/ojp:AddressRef | 0:1 | Verweis auf eine Adresse
|
<ojp:PlaceRef> <ojp:AddressRef> <ojp:AddressCode>streetID:1500000041::23020227:-1:Via al Dosso:Torricella-Taverne:Via al Dosso::Via al Dosso: 6807:ANY:DIVA_STREET:994668:6208464:MRCV:sbb</ojp:AddressCode> </ojp:>AddressRef </ojp:PlaceRef> |
ojp:PlaceRef/ojp:LocationName | 1:1 | Öffentlicher Name des Orts
Achtung: Der Name wird ignoriert. Es muss zuerst ein LocationRequest durchgeführt werden, der dann eine Ref oder eine Koordinate liefert! |
<ojp:PlaceRef> <StopPointRef>8503003</StopPointRef> <ojp:LocationName> <ojp:Text>Zürich Stadelhofen</ojp:Text> </ojp:LocationName> </ojp:PlaceRef> |
ojp:DepArrTime | 0:1 | Zeit, die verwendet werden soll.
“Z” ist Zulu-Zeit (also zeitzonenunabhängig). Bei Z müssen unbedingt die Sekunden auch angegeben werden. Stimmt das Format nicht oder ist kein Z vorhanden, versucht das System, die Zeit als lokale Zeit zu interpretieren. |
<ojp:DepArrTime>2020-01-20T12:00:00Z</ojp:DepArrTime> |
ojp:TimeAllowance | 0:1 | Anstelle von DepArrTime. Zusatzzeit, die für das Erreichen und Verlassen der Location nötig ist. |
<ojp:TimeAllowance>PT2H</ojp:TimeAllowance> |
IndividualTransportOptions | 0:* | Optionen für den Weg von und zu den Haltestellen
Siehe separate Tabelle |
<ojp:IndividualTransportOptions>
<ojp:Mode>walk</ojp:Mode>
<ojp:MaxDistance>5000</ojp:MaxDistance>
<ojp:MaxDuration>PT1H</ojp:MaxDuration>
<ojp:Speed>120</ojp:Speed>
</ojp:IndividualTransportOptions>
|
IndividualTransportOptions
| Elemente | Kardinalität | Beschreibung | Beispiel |
|---|---|---|---|
ojp:Mode | 1:1 | Modus, mit dem der Origin erreicht werden soll. Im Moment wird nur walk unterstützt.
Werte ansonsten:
|
<ojp:Mode>walk</ojp:Mode> |
ojp:MaxDistance | 0:1 | Maximale Distanz in Metern. Damit werden die Routen minimiert. |
<ojp:MaxDistance>10000</ojp:MaxDistance> |
ojp:MaxDuration | 0:1 | Maximale Dauer. Steuert den Router bezüglich der maximalen Dauer. Das Format ist zu beachten. Es ist eine xs:duration. |
<ojp:MaxDuration>PT2H</ojp:MaxDuration> |
ojp:MinDistance | 0:1 | Minimale Distanz in Metern. Damit werden die Routen minimiert.
Das Feature wird nicht unterstützt. |
<ojp:MinDistance>1</ojp:MinDistance> |
ojp:MinDuration | 0:1 | Minimale Dauer. Steuert den Router bezüglich der minimalen Dauer. Das Format ist zu beachten. Es ist eine xs:duration.
Das Feature wird nicht unterstützt. |
<ojp:MinDuration>PT1S</ojp:MinDuration> |
ojp:Speed | 0:1 | Relative Geschwindigkeit in Prozent. Normal ist 100%. |
<ojp:Speed>100</ojp:Speed> |
Params
| Elemente | Kardinalität | Beschreibung | Beispiel |
|---|---|---|---|
ojp:PtModeFilter | 0:1 | Der Filter sagt, welche Modes berücksichtigt werden sollen.
Die Listen der Modes sind im XSD aufgeführt. Filterung auf Submodes hat kein Effekt. |
<ojp:PtModeFilter> <ojp:Exclude>true</ojp:Exclude> <ojp:PtMode>rail</ojp:PtMode> </ojp:PtModeFilter> |
ojp:LineFilter | 0:1 | Linien, die ein- oder ausgeschlossen werden sollen.
|
<ojp:LineFilter>
<ojp:Line>
<LineRef>sbb:92080::R</LineRef>
</ojp:Line>
<ojp:Line>
<LineRef>sbb:91012:B:H</LineRef>
</ojp:Line>
<ojp:Exclude>true</ojp:Exclude>
</ojp:LineFilter>
|
ojp:OperatorFilter | 0:1 | Betreiber, die ein- oder ausgeschlossen werden sollen.
|
<ojp:OperatorFilter>
<ojp:Exclude>false</ojp:Exclude>
<ojp:OperatorRef>sbb:11:SchweizerischeBundesbahnenSBB</ojp:OperatorRef>
</ojp:OperatorFilter>
|
ojp:PrivateModeFilter | 0:1 | Sollen private Modi verwendet werden oder nicht.
Das Feature steht nicht zur Verfügung. | n/a |
ojp:NoSingleStep | 0:1 | Der Benutzer kann keinen Absatz überwinden.
Das Feature steht nicht zur Verfügung. | n/a |
ojp:NoStairs | 0:1 | Der Benutzer kann keine Treppe benutzen. Das Feature steht nicht zur Verfügung. | n/a |
ojp:NoEscalator | 0:1 | Der Benutzer kann keine Rolltreppe benutzen. Das Feature steht nicht zur Verfügung. | n/a |
ojp:NoElevator | 0:1 | Der Benutzer kann keinen Fahrstuhl benützen. Das Feature steht nicht zur Verfügung. | n/a |
ojp:NoRamp | 0:1 | Der Benutzer kann keine Rampe benützen
Das Feature steht nicht zur Verfügung. | n/a |
ojp:LevelEntrance | 0:1 | Der Benutzer benötigt ebenerdige Eingänge/Übergänge Das Feature steht nicht zur Verfügung. | n/a |
ojp:BikeTransport | 0:1 | Der Benutzer möchte ein Fahrrad mitnehmen Das Feature steht nicht zur Verfügung. | n/a |
ojp:WalkSpeed | 0: | Abweichung vor normalen Laufgeschwindigkeit. 100% normal. Das Feature steht nicht zur Verfügung. | n/a |
ojp:NumberOfResults | 0:1 | Wenn Resultate vom Suchalgorithmus gleich gewichtet werden, werden mehr Resultate zurückgegeben. Falls nicht die gewünschte Anzahl an Verbindungen gefunden werden kann, werden weniger Resultate zurückgegeben. Ansonsten wird die gewünschte Anzahl an Resultate zurückgegeben. |
<ojp:NumberOfResults>10</ojp:NumberOfResults> |
ojp:NumberOfResultsBefore | 0:1 | Anzahl Resultate vor einer gegebenen Zeit (am Ziel oder am Start). Will ein OJP-Client zu den bereits erhaltenen Fahrten noch früher abgehende erhalten, so muss er einen neuen Request mit NumberOfResultsBefore=n und Destination.DepArrTime = früheste gefundene EndTime in der letzten Antwort minus 1 Minute senden. |
<ojp:NumberOfResultsBefore>4</ojp:NumberOfResultsBefore> |
ojp:NumberOfResultsAfter | 0:1 | Anzahl Resultate nach einer gegebenen Zeit (am Ziel oder am Start). Will ein OJP-Client zu den bereits erhaltenen Fahrten noch nächst spätere erhalten, so muss er einen neuen Request mit NumberOfResultsAfter=n und Origin.DepArrTime = späteste gefundene StartTime in der letzten Antwort plus 1 Minute senden. |
<ojp:NumberOfResultsAfter>6</ojp:NumberOfResultsAfter> |
ojp:IgnoreRealtimeData | 0:1 | Sollen Echtzeitdaten mit berücksichtigt werden? |
<ojp:IgnoreRealtimeData>true</ojp:IgnoreRealtimeData> |
ojp:ImmediateTripStart | 0:1 | Soll angenommen werden, dass der Benutzer bereits auf dem Weg ist?
Wird nicht unterstützt. | n/a |
ojp:TransferLimit | 0:1 | Maximale Anzahl Umstiege |
<ojp:TransferLimit>3</ojp:TransferLimit> |
ojp:OptimisationMethod | 0:1 | Welche Optimisierungsmethode soll verwendet werden? fastest, least walking, etc Das Feature steht nicht zur Verfügung. | n/a |
ojp:ItModesToCover | 0:* | Für jeden Modus in der Liste soll ein separater monomodaler Trip gefunden werden, zusätzlich zu den intermodalen Trips.
Wird neu seit August 2022 für Sharing-Angebote unterstützt. | Siehe Kapitel zu Sharing unten. |
ojp:IncludeTrackSection | 0:1 | Ob das Ergebnis TrackSection-Elemente enthalten soll, um den geografischen Verlauf dieser Fahrzeugfahrt zu beschreiben. |
<ojp:IncludeTrackSections>true</ojp:IncludeTrackSections> |
ojp:IncludeLegProjection | 0:1 | Soll das Resultat die geographische Präsentation eines Legs beinhalten. |
<ojp:IncludeLegProjection>true</ojp:IncludeLegProjection> |
ojp:IncludeTurnDescription | 0:1 | Eine detaillierte Wegbeschreibung für jedes Leg wird angegeben in den PathGuidance. |
<ojp:IncludeTurnDescription>true</ojp:IncludeTurnDescription> |
ojp:IncludeAccessibility | 0:1 | Sollen BehiG-Informationen eingefügt werden. |
<ojp:IncludeAccessibility>true</ojp:IncludeAccessibility> |
ojp:IncludeIntermediateStops | 0:1 | Gibt an, ob Haltestellen auch angegeben werden sollen, während der einzelnen Fahrt. d.h. alle Zwischenhalte. |
<ojp:IncludeIntermediateStops>true</ojp:IncludeIntermediateStops> |
ojp:IncludeFare | 0:1 | Sollen Preisangaben eingefügt werden.
Das Feature wird im Moment nicht unterstützt. |
<ojp:IncludeFare>true</ojp:IncludeFare> |
ojp:Extension | 0:1 | Wird für gewisse Sharing-Modi verwendet. | Siehe Kapitel zu Sharing unten. |
Response
Ein Beispiel einer ganzen Antwort: tripresponse
Zuerst wird ojp:TripResponseContext geliefert. Dieser enthält Angaben zu allen verwendeten Places (Haltestellen, Ortschaften, Adressen,..) im Element ojp:Places:
<ojp:Location>
<ojp:StopPlace>
<ojp:StopPlaceRef>8591252</ojp:StopPlaceRef>
<ojp:StopPlaceName>
<ojp:Text>Zürich, Letzigrund</ojp:Text>
</ojp:StopPlaceName>
<ojp:TopographicPlaceRef>23026261:27</ojp:TopographicPlaceRef>
</ojp:StopPlace>
<ojp:LocationName>
<ojp:Text xml:lang="de">Zürich, Letzigrund</ojp:Text>
</ojp:LocationName>
<ojp:GeoPosition>
<siri:Longitude>8.50373</siri:Longitude>
<siri:Latitude>47.38124</siri:Latitude>
</ojp:GeoPosition>
</ojp:Location>In Zukunft kann der Kontext auch die Situations (Störungen) beinhalten.
Danach kommen 0:* TripResult. Nach dem Header
<ojp:TripResult>
<ojp:ResultId>ID-153A06C3-1F00-4048-9141-A217840479A6</ojp:ResultId>
<ojp:Trip>
<ojp:TripId>ID-153A06C3-1F00-4048-9141-A217840479A6</ojp:TripId>
<ojp:Duration>PT29M</ojp:Duration>
<ojp:StartTime>2020-01-20T11:57:00Z</ojp:StartTime>
<ojp:EndTime>2020-01-20T12:26:00Z</ojp:EndTime>
<ojp:Transfers>1</ojp:Transfers>
<!-- ... -->folgen einzelne Trips.
Wenn nicht von und zu einer Haltestelle geroutet wurde, dann kommen zuerst Continous-Legs, die zur Haltestelle führen.
Ansonsten kommt ein TimedLeg.
<ojp:TripLeg>
<ojp:LegId>1</ojp:LegId>
<ojp:TimedLeg>
<ojp:LegBoard>
<siri:StopPointRef>8591252</siri:StopPointRef>
<ojp:StopPointName>
<ojp:Text>Zürich, Letzigrund</ojp:Text>
</ojp:StopPointName>
<ojp:ServiceDeparture>
<ojp:TimetabledTime>2020-01-20T11:57:00Z</ojp:TimetabledTime>
</ojp:ServiceDeparture>
<ojp:Order>1</ojp:Order>
</ojp:LegBoard>
<ojp:LegIntermediates>
<siri:StopPointRef>8591038</siri:StopPointRef>
<ojp:StopPointName>
<ojp:Text>Zürich, Albisriederplatz</ojp:Text>
</ojp:StopPointName>
<ojp:ServiceArrival>
<ojp:TimetabledTime>2020-01-20T11:59:00Z</ojp:TimetabledTime>
</ojp:ServiceArrival>
<ojp:ServiceDeparture>
<ojp:TimetabledTime>2020-01-20T11:59:00Z</ojp:TimetabledTime>
</ojp:ServiceDeparture>
<ojp:Order>2</ojp:Order>
</ojp:LegIntermediates>
<!-- weitere LegIntermediate --->
<ojp:LegAlight>
<siri:StopPointRef>8591105</siri:StopPointRef>
<ojp:StopPointName>
<ojp:Text>Zürich, Bürkliplatz</ojp:Text>
</ojp:StopPointName>
<ojp:ServiceArrival>
<ojp:TimetabledTime>2020-01-20T12:13:00Z</ojp:TimetabledTime>
</ojp:ServiceArrival>
<ojp:Order>11</ojp:Order>
</ojp:LegAlight>
<ojp:Service>
<ojp:OperatingDayRef>2020-01-20</ojp:OperatingDayRef>
<ojp:JourneyRef>sbb:91002::H:j20:1253</ojp:JourneyRef>
<siri:LineRef>sbb:91002:</siri:LineRef>
<siri:DirectionRef>H</siri:DirectionRef>
<ojp:Mode>
<ojp:PtMode>tram</ojp:PtMode>
<siri:TramSubmode>cityTram</siri:TramSubmode>
<ojp:Name>
<ojp:Text xml:lang="de">Tram</ojp:Text>
</ojp:Name>
</ojp:Mode>
<ojp:PublishedLineName>
<ojp:Text>2</ojp:Text>
</ojp:PublishedLineName>
<ojp:OperatorRef>sbb:3849</ojp:OperatorRef>
<ojp:Attribute>
<ojp:Text>
<ojp:Text xml:lang="de">Niederflureinstieg</ojp:Text>
</ojp:Text>
<ojp:Code>A__NF</ojp:Code>
</ojp:Attribute>
<ojp:DestinationStopPointRef>de:00000:-1</ojp:DestinationStopPointRef>
<ojp:DestinationText>
<ojp:Text xml:lang="de">Zürich Tiefenbrunnen, Bahnhof</ojp:Text>
</ojp:DestinationText>
</ojp:Service>
</ojp:TimedLeg>
</ojp:TripLeg>Bemerkungen:
- Alle XXXRef werden mit den neuen stabilen schweizerischen Identifikatoren nach und nach angepasst SID4PT.
- Die Attribute bilden sich aus den bekannten Attributen aus HRDF mit A__ . Die Namen sind aus den Verkehrshinweisen abgeleitet. In einigen Fällen entsprechen diese auch einer Kombination von SIRI Facilities. Das Mapping erfolgt dabei gemäss Notes2FacilitiesMappingFile in OJP 1.0 sind nicht alle vorhanden. In solchen Fällen findet kein Mapping statt.
Einige Punkte sind mittels Extensions realisiert:
- Name für den (e.g. “Zug”) Transport Mode (Verkehrsmittelkategorie, download from https://data.opentransportdata.swiss/dataset/vm-liste)
- ShortName (e.g. “IC”) Transport submode Abkürzung (Angebotskategorie-Kurzbez., download unter https://data.opentransportdata.swiss/dataset/vm-liste)
- PublishedLineName (e.g. “IC8” or “S1”) passenger relevant route text
- TimedLeg.Extension.TransportTypeName (e.g. “InterCity”) Transport submode name (Angebotskategorie-Name, download unter https://data.opentransportdata.swiss/dataset/vm-liste)
- TimedLeg.Extension.PublishedJourneyNumber (e.g. “829”) Zugnummer
TimedLeg.Extension.OperatorName(e.g. “Schweizerische Bundesbahnen SBB”) OperatorName
Beim Umsteigen werden TransferLegs verwendet:
<ojp:TransferLeg>
<ojp:TransferMode>walk</ojp:TransferMode>
<ojp:LegStart>
<siri:StopPointRef>8591105</siri:StopPointRef>
<ojp:LocationName>
<ojp:Text xml:lang="de">Zürich, Bürkliplatz</ojp:Text>
</ojp:LocationName>
</ojp:LegStart>
<ojp:LegEnd>
<siri:StopPointRef>8591105</siri:StopPointRef>
<ojp:LocationName>
<ojp:Text xml:lang="de">Zürich, Bürkliplatz</ojp:Text>
</ojp:LocationName>
</ojp:LegEnd>
<ojp:TimeWindowStart>2020-01-20T12:13:00Z</ojp:TimeWindowStart>
<ojp:TimeWindowEnd>2020-01-20T12:15:00Z</ojp:TimeWindowEnd>
<ojp:Duration>PT2M</ojp:Duration>
<ojp:WalkDuration>PT2M</ojp:WalkDuration>
<ojp:BufferTime>PT0M</ojp:BufferTime>
</ojp:TransferLeg>
Gerade bei den Transfers werden im Rahmen des BehiG Verbesserungen notwendig sein.
Verwendete geographische Information
Das Fusswegrouting basiert auf OpenStreetMap (OSM). Die folgenden Teile basieren im Moment ausschliesslich auf OSM:
Im ContinuousLeg und TransferLeg (TransferMode=walk):
- TrackSection
- TurnAction
- im TimedLeg
- LegIntermediates
- IncludeAccessibility
OSM-Daten sind verfügbar unter der Open Data Commons Open Database-Lizenz (ODbL). Anwendungen, die OSM nutzen, müssen OSM als Quelle angeben. Auf welche Art dies geschehen steht in folgender Richtlinie OSM Richtlinien für Namensnennungen.
OJP-TripRequest mit Sharing-Anbietern
Seit August 2022 können mit dem OJP TripRequest Reiseketten mit Sharing-Fahrzeugen (Fahrrad, eScooter, Leihrad oder Carsharer) am Anfang und/oder Ende (erste und/oder letzte Meile) berechnet werden.
Allgemeine Hinweise
Die Funktionalität hat vorerst experimentellen Charakter. Es können unerwartete oder wenig praxistaugliche Reiseketten resultieren. Das SKI+-Team nimmt gerne Feedback dazu entgegen.
Soweit möglich wurden Elemente des OJP-1.0-Standard verwendet. Einige Erweiterungen mussten jedoch mittels Extensions umgesetzt werden. Mit Einführung des OJP 2.0 Protokolls wird die Multi- und Intermodalität gemäss der Definition im Standard umgesetzt.
Die Berechnungen basieren auf dieser Datenquelle.
Die Standorte der Sharing-Fahrzeugen kann auch mit dem folgenden Service abgerufen werden: OJPLocationInformationRequest
Parameter zur Steuerung des TripRequest
Die Steuerung der Abfrage im TripRequest erfolgt über Parameter (zusätzliche XML-Elemente) an vier möglichen Stellen:
1. Monomodale Reisen mit Fahrrad
Gemäss OJP-1.0-Standard wird dafür <ojp:Params> mit dem Element <ojp:ItModesToCover> ergänzt, mit dem Wert “cycle”:
<ojp:ItModesToCover>cycle</ojp:ItModesToCover>2. Monomodale Reisen mit eScooter, Leihrad oder Carsharing
<ojp:Params> wird mit einer Extension erweitert:
<ojp:Extension> ...
<ojp:ItModesToCover>escooter_rental</ojp:ItModesToCover> ...
</ojp:Extension>mit “escooter_rental”, “bicycle_rental” oder “car_sharing”, respektive.
3. Intermodale Reisen mit öV und mit einem Fahrrad am Anfang und/oder Ende
Gemäss OJP-1.0-Standard erhalten <ojp:Origin> und/oder <ojp:Destination> das Element <ojp:IndividualTransportOptions>. Darin werden Mode (cycle), Dauer min./max. in Minuten und Distanz min./max. in Meter definiert, wie im folgenden Beispiel dargestellt.
<ojp:IndividualTransportOptions>
<ojp:Mode>cycle</ojp:Mode> <!--Fahrrad am Anfang -->
<ojp:MaxDuration>PT30M</ojp:MaxDuration> <!--Optional: maximale Dauer -->
<ojp:MinDuration>PT2M</ojp:MinDuration> <!--Optional: minimale Dauer -->
<ojp:MaxDistance>20000</ojp:MaxDistance> <!--Optional: maximale Fahrdistanz -->
<ojp:MinDistance>100</ojp:MinDistance> <!--Optional: minimale Fahrdistanz -->
</ojp:IndividualTransportOptions>4. Intermodale Reisen mit öV und mit einem eScooter, Leihrad oder Carsharing am Anfang und/oder Ende
<ojp:Params> wird mit einer Extension erweitert, mit sinngemäss <ojp:Origin> und/oder <ojp:Destination> und mit Mode escooter_rental, bicycle_rental oder car_sharing, respektive, wie im folgenden Beispiel dargestellt:
<ojp:Extension>
<ojp:Origin>
<ojp:Mode>escooter_rental</ojp:Mode> <!--eScooter zu Beginn-->
<ojp:MaxDuration>PT30M</ojp:MaxDuration> <!--Optional: maximale Dauer-->
<ojp:MinDuration>PT2M</ojp:MinDuration> <!--Optional: minimale Dauer-->
<ojp:MaxDistance>20000</ojp:MaxDistance> <!--Optional: maximale Fahrdistanz-->
<ojp:MinDistance>100</ojp:MinDistance> <!--Optional: minimale Fahrdistanz-->
</ojp:Origin>
</ojp:Extension>
Überblick der Kombinationsmöglichkeiten
Die folgende Tabelle zeigt, welche Kombinationen für monomodale und multimodale Reisen sinnvoll sind. (Beachte: der öffentliche Verkehr wird hier als ein Modus betrachtet, auch wenn mit verschiedenen Verkehrsmitteln und Umsteigen verbunden):
| Kombination | Monomodale Reise | Multimodal — Modus am Anfang | Multimodal — Modus am Ende | Modus Anfang & Ende |
|---|---|---|---|---|
| öffentlicher Verkehr | (default) | — | — | — |
| zu Fuss | ItModesToCover=walk oder | (default) | (default) | (default) |
| mit eigenem Fahrrad | ItModesToCover= | IndividualTransportOptions | — | — |
| mit eigenem Auto | ItModesToCover= | — | — | — |
| Fahrrad Sharing | Ext./ItModesToCover= | Ext./Origin/Mode= | Ext./Destin./Mode= | möglich, wenn Origin und Destin. Modes gleich |
| e-Scooter Sharing | Ext./ItModesToCover= | Ext./Origin/Mode= | Ext./Destin./Mode= | möglich, wenn Origin und Destin. Modes gleich |
| Car Sharing | Ext./ItModesToCover= | — | Ext./Destin./Mode= | — |
Autotunnelzüge suchen
Beispiel der Anfrage für einen Autotunnelzug (ATZ):
<siri:OJP xmlns="http://www.vdv.de/ojp" xmlns:siri="http://www.siri.org.uk/siri" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xsi:schemaLocation="http://www.vdv.de/ojp" version="1.0"> <siri:OJPRequest>
<siri:ServiceRequest>
<siri:RequestTimestamp>2024-03-21T16:22:30.112Z</siri:RequestTimestamp>
<siri:RequestorRef>OJP_JS_SDK_v0.9.31</siri:RequestorRef>
<OJPTripRequest>
<siri:RequestTimestamp>2024-03-21T16:22:30.112Z</siri:RequestTimestamp>
<Origin>
<PlaceRef>
<StopPlaceRef>8511171</StopPlaceRef>
<LocationName>
<Text>Kandersteg Autoverlad</Text>
</LocationName>
</PlaceRef>
</Origin>
<Destination>
<PlaceRef>
<StopPlaceRef>8519655</StopPlaceRef>
<LocationName>
<Text>Goppenstein Autoverlad</Text>
</LocationName>
</PlaceRef>
</Destination>
<ojp:Params>
<ojp:PrivateModeFilter>
<ojp:Exclude>false</ojp:Exclude>
</ojp:PrivateModeFilter>
<ojp:NumberOfResults>3</ojp:NumberOfResults>
<ojp:IncludeTrackSections>false</ojp:IncludeTrackSections>
<ojp:IncludeLegProjection>false</ojp:IncludeLegProjection>
<ojp:IncludeTurnDescription>false</ojp:IncludeTurnDescription>
<ojp:IncludeIntermediateStops>true</ojp:IncludeIntermediateStops>
</ojp:Params>
</OJPTripRequest>
</siri:ServiceRequest>
</siri:OJPRequest>
</siri:OJP>
