OJPTripRequest

Wichtige Konzepte

  • Haltestellen: Hierfür können auch die Datensätze Dienststellen beigezogen werden.
  • Fahrten: Eine Fahrt ist die Beförderung von Kunden auf einem bestimmten Weg, einer bestimmten Fahrplan-Verbindung, mit einem bestimmten Verkehrsmittel-Fahrt, 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 Prognose sind die in der Zukunft liegenden Verkehrszeiten eines Zuges, die ausgehende vom aktuellen Standort des Zuges berechnet werden. Dabei werden Konflikte und deren aktuell intendierten Regelungen in den nächsten x Minuten berücksichtigt. Der weitere Verlauf der Prognose wird nach einer weniger aufwendigen Methode berechnet

OJP Trip Service

TripRequest ist der zentrale Dienst. Mit Angabe von Origin und Destination wird ein Trip geplant.

Ein Trip hat verschiedene “Legs” (Abschnitte).

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>
ElementKardinalitätBeschreibungBeispiel
RequestTimestamp1:1Der Timestamp des Requests. Bevorzugt als Zulu-Time.
<RequestTimestamp>2020-01-31T12:30:00Z</RequestTimestamp>
MessageIdentifier0:1Der Identifier der Message. Am liebsten strikt monoton steigend.
<MessageIdentifier>756</MessageIdentifier>
ojp:Origin1:*Der Startpunkt der Suche. OJP bietet relativ viele Möglichkeiten, dies zu modellieren.

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:Destination1:*Der Zielpunkt der Suche. OJP bietet relativ viele Möglichkeiten, dies zu modellieren.

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:Via0:1Ein Via wird unterstützt. Müssen mehrere Vias berücksichtigt werden oder soll ein Rundkurs berechnet werden, so muss das anfragende System den selber aufteilen in einzelne Trips, die separat gesucht werden.
<ojp:Via>
	<ojp:ViaPoint>
		<StopPointRef>8506000</StopPointRef>
		<ojp:LocationName>
			<ojp:Text>Winterthur</ojp:Text>
		</ojp:LocationName>
	</ojp:ViaPoint>
</ojp:Via>
ojp:Params0:1Die weiteren Parameter. Siehe 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

ElementeKardinalitätBeschreibungBeispiel
 ojp:PlaceRef/siri:StopPointRef0:1Verweis 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:StopPlaceRef0:1Referenz auf eine Haltestelle
<ojp:PlaceRef>
	<StopPointRef>8530813</StopPointRef>
	<ojp:LocationName>
		<ojp:Text>Zürich Kreuzplatz</ojp:Text>
	</ojp:LocationName>
</ojp:PlaceRef>
ojp:PlaceRef/ojp:GeoPosition0:1WGS84 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:TopographicPlaceRef0:1Verweis 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:PointOfInterestRef0:1Verweis 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:AddressRef0:1Verweis 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:LocationName1: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:DepArrTime0:1Zeit, 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:TimeAllowance0:1Anstelle von DepArrTime. Zusatzzeit, die für das Erreichen und Verlassen der Location nötig ist.
<ojp:TimeAllowance>PT2H</ojp:TimeAllowance>
IndividualTransportOptions0:*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

ElementeKardinalitätBeschreibungBeispiel
 ojp:Mode1:1Modus, mit dem der Origin erreicht werden soll. Im Moment wird nur walk unterstützt.

Werte ansonsten:

  • walk
  • cycle
  • taxi
  • self-drive-car
  • others-drive-car
  • motorcycle
  • truck
<ojp:Mode>walk</ojp:Mode>
ojp:MaxDistance0:1Maximale Distanz in Metern. Damit werden die Routen minimiert.
<ojp:MaxDistance>10000</ojp:MaxDistance>
ojp:MaxDuration0:1Maximale 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:MinDistance0:1Minimale Distanz in Metern. Damit werden die Routen minimiert.

Das Feature wird nicht unterstützt.

<ojp:MinDistance>1</ojp:MinDistance>
ojp:MinDuration0:1Minimale 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:Speed0:1Relative Geschwindigkeit in Prozent. Normal ist 100%.
<ojp:Speed>100</ojp:Speed>

Params

ElementeKardinalitätBeschreibungBeispiel
ojp:PtModeFilter 0:1Der 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:1Linien, 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:OperatorFilter0:1Betreiber, die ein- oder ausgeschlossen werden sollen.

 

<ojp:OperatorFilter>
    <ojp:Exclude>false</ojp:Exclude>
    <ojp:OperatorRef>sbb:11:SchweizerischeBundesbahnenSBB</ojp:OperatorRef>
</ojp:OperatorFilter>
ojp:PrivateModeFilter0:1Sollen private Modi verwendet werden oder nicht.

Das Feature steht nicht zur Verfügung.

n/a
ojp:NoSingleStep0:1Der Benutzer kann keinen Absatz überwinden.

Das Feature steht nicht zur Verfügung.

 n/a
ojp:NoStairs0:1Der Benutzer kann keine Treppe benutzen.

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:NoEscalator0:1Der Benutzer kann keine Rolltrippe benutzen.

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:NoElevator0:1Der Benutzer kann keinen Fahrstuhl benützen.

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:NoRamp0:1Der Benutzer kann keine Rampe benützen

Das Feature steht nicht zur Verfügung.

n/a
ojp:LevelEntrance0:1Der Benutzer benötigt ebenerdige Eingänge/Übergänge

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:BikeTransport0:1Der Benutzer möchte ein Fahrrad mitnehmen

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:WalkSpeed0:Abweichung vor normalen Laufgeschwindigkeit. 100% normal.

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:NumberOfResults0:1Anzahl Resultate
<ojp:NumberOfResults>10</ojp:NumberOfResults>
ojp:NumberOfResultsBefore0:1Anzahl Resultate vor einer gegebenen Zeit (am Ziel oder am Start).

Will ein OJP-Client zu den bereits erhaltenen Fahrten noch nächst frühere 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:NumberOfResultsAfter0:1Anzahl 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:IgnoreRealtimeData0:1Sollen Echtzeitdaten mit berücksichtigt werden?
<ojp:IgnoreRealtimeData>true</ojp:IgnoreRealtimeData>
ojp:ImmediateTripStart0:1Soll angenommen werden, dass der Benutzer bereits auf dem Weg ist?

Wird nicht unterstützt.

n/a
ojp:TransferLimit0:1Maximale Anzahl Umstiege
<ojp:TransferLimit>3</ojp:TransferLimit>
ojp:OptimisationMethod0:1Welche Optimisierungsmethode soll verwendet werden?

fastest, least walking, etc

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

n/a
ojp:ItModesToCover0:*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:IncludeTrackSection0:1Soll die Information TrackSection Information beinhalten, der eine geographische Projektion eines Legs erlaubt. Es werden TrackStart, TrackEnd und Duration ausgegeben.

Die Information muss natürlich vorhanden sein (im Moment eher weniger).

<ojp:IncludeTrackSections>true</ojp:IncludeTrackSections>
ojp:IncludeLegProjection0:1Soll das Resultat die geographische Präsentation eines Legs beinhalten. Bei öV-Legs wird dies im Moment unterdrückt, da der Linienverlauf nicht bekannt ist. Für die “walk”-Legs wird dies noch gemacht werden.

 

<ojp:IncludeLegProjection>true</ojp:IncludeLegProjection>
ojp:IncludeTurnDescription0:1eine detaillierte Wegbeschreibung für jedes Leg wird angegeben in den PathGuidance.
<ojp:IncludeTurnDescription>true</ojp:IncludeTurnDescription>
ojp:IncludeAccessibility0:1Sollen BehiG-Informationen eingefügt werden.

Das Feature ist geplant, aber in der aktuellen Version (1.0) noch nicht verfügbar.

<ojp:IncludeAccessibility>true</ojp:IncludeAccessibility>
ojp:IncludeIntermediateStops0:1Gibt an, ob Haltestellen auch angegeben werden sollen, während der einzelnen Fahrt. d.h. alle Zwischenhalte.
<ojp:IncludeIntermediateStops>true</ojp:IncludeIntermediateStops>
ojp:IncludeFare0:1Sollen Preisangaben eingefügt werden.

Das Feature wird im Moment nicht unterstützt.

<ojp:IncludeFare>true</ojp:IncludeFare>
ojp:Extension0:1Wird 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 gerechnet wurde, dann kommen zuerst 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:

  • Die XXXRef werden mit den neuen Swiss Identifers nach und nach angepasst.
  • Die DestinationStopPointRef sind noch nicht ideal.
  • 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 in Extensions abgelegt:

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 (ohne Koordinaten, weil die LegProjection wegen fehlender Fahrtrouten nur für alle LegArten gemeinsam auskonfiguriert werden kann)
  • TurnAction
  • im TimedLeg
  • LegIntermediates

Wichtig:

  • IncludeAccessibility wird erst ab BehiG unterstützt

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 kann (je nach Art der Anwendung), kann in den OSM Richtlinien für Namensnennungen nachgelesen werden.

OJP-TripRequest mit Sharing-Anbietern

Neu 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. Im Hinblick auf die geplante neue Major-Version OJP 2.0 sind Anpassungen zu erwarten.

Die Berechnungen basieren auf dieser Datenquelle.

Alternativ zum TripRequest können die Standorte der Sharing-Fahrzeugen neu über den OJPLocationInformationRequest abgerufen werden.

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 ReiseMultimodal —
Modus am Anfang
Multimodal —
Modus am Ende
Modus Anfang & Ende
öffentlicher Verkehrdefault
zu FussItModesToCover=walk  oder
IndividualTransportOptions=walk (Wanderungen, s. oben)
defaultdefaultdefault
mit eigenem FahrradItModesToCover=
cycle
IndividualTransportOptions
… Mode=cycle
mit eigenem AutoItModesToCover=
self-drive-car
Fahrrad SharingExt./ItModesToCover=
bicycle_rental
Ext./Origin/Mode=
bicycle_rental
Ext./Destin./Mode=
bicycle_rental
möglich, wenn Origin und Destin. Modes gleich
e-Scooter SharingExt./ItModesToCover=
escooter_rental
Ext./Origin/Mode=
escooter_rental
Ext./Destin./Mode=
escooter_rental
möglich, wenn Origin und Destin. Modes gleich
Car SharingExt./ItModesToCover=
car_sharing
Ext./Destin./Mode=
car_sharing

 

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>