mobidata-bw / TRIAS

Alles zur TRIAS-API (Doku) sowie einen Diskussions-Thread zu allen Themen rund um die Schnittstelle.
9 stars 0 forks source link

Verbindungsauskunft mit Ankunftszeit gibt Verbindungen nach gewünschter Ankunftszeit zurück #13

Closed tobiasfabian closed 8 months ago

tobiasfabian commented 8 months ago

Anfrage: Ich möchte von A nach B fahren und um 15:00 Uhr ankommen.
Rückgabe: Verbindungen mit Ankunftszeit nach 15:00 Uhr.
Erwartet Rückgabe: Verbindungen mit Ankunftszeit vor 15:00 Uhr.

Übersetzt in eine TripRequest-Anfrage schaut das beispielsweise so aus:

Request

<TripRequest>
  <Origin>
    <LocationRef>
      <StopPointRef>de:08111:6115</StopPointRef>
    </LocationRef>
  </Origin>
  <Destination>
    <LocationRef>
      <StopPointRef>de:08415:22006</StopPointRef>
    </LocationRef>
    <DepArrTime>2024-03-04T15:00:00+01:00</DepArrTime>
  </Destination>
  <Params>
    <NumberOfResultsAfter>3</NumberOfResultsAfter>
  </Params>
</TripRequest>

Response

Es werden TripResult-Element mit einer EndTime zurückgegeben, die nach 15:00 Uhr (DepArrTime 2024-03-04T15:00:00+01:00) liegen. Z.B. 15:11 Uhr (trias:EndTime2024-03-04T14:11:00Z)

<trias:TripResult>
  <trias:ResultId>ID-775BA002-4D0E-4F80-BE5B-C43B9B5B3AD2</trias:ResultId>
  <trias:Trip>
    <trias:TripId>ID-775BA002-4D0E-4F80-BE5B-C43B9B5B3AD2</trias:TripId>
    <trias:Duration>PT48M</trias:Duration>
    <trias:StartTime>2024-03-04T13:23:00Z</trias:StartTime>
    <trias:EndTime>2024-03-04T14:11:00Z</trias:EndTime>
    <trias:Interchanges>0</trias:Interchanges>
    <trias:Distance>56556</trias:Distance>
    <trias:TripLeg>
      <trias:LegId>1</trias:LegId>
      <trias:TimedLeg>
        <trias:LegBoard>
          // …
        </trias:LegBoard>
        <trias:LegAlight>
          <trias:StopPointRef>de:08415:22006:3:2</trias:StopPointRef>
          <trias:StopPointName>
            <trias:Text>Reutlingen Hauptbahnhof</trias:Text>
            <trias:Language>de</trias:Language>
          </trias:StopPointName>
          <trias:PlannedBay>
            <trias:Text>2</trias:Text>
            <trias:Language>de</trias:Language>
          </trias:PlannedBay>
          <trias:ServiceArrival>
            <trias:TimetabledTime>2024-03-04T14:11:00Z</trias:TimetabledTime>
            <trias:EstimatedTime>2024-03-04T14:11:00Z</trias:EstimatedTime>
          </trias:ServiceArrival>
          <trias:StopSeqNumber>8</trias:StopSeqNumber>
        </trias:LegAlight>
        <trias:Service>
          // …
        </trias:Service>
      </trias:TimedLeg>
    </trias:TripLeg>
  </trias:Trip>
</trias:TripResult>

Meiner Meinung nach sollten nur Verbindungen mit einer Ankunftszeit vor 15:00 Uhr zurückgegeben werden. Oder übersehe ich etwas?

In der Spezifikation heißt es zu DepArrTime (7.6.16): Beabsichtigte Abfahrts- oder Ankunftszeit an dem in Location oder TripLocation bezeichneten Ort.


Das Problem kann auf folgender Seite nachvollzogen werden:
reutlinger-stadtverkehr.de/fahrplaene/verbindungsauskunft

GerdC commented 8 months ago

(ich bin nur ein Anwender)

Meines Erachtens ist <NumberOfResultsAfter>3</NumberOfResultsAfter> an der Stelle undefiniert und wird deshalb ignoriert.

Korrekt müsste sein: als Parameter... Entweder <NumberOfResults> mitgeben. Oder <NumberOfResultsGroup> mitgeben innerhalb dieses Elements sowohl <NumberOfResultsBefore> als auch <NumberOfResultsAfter> mitgeben.

Bei dem Ergebnis, das du haben willst, solltest du <NumberOfResultsBefore> füllen.

tobiasfabian commented 8 months ago

Tausend Dank.

Genau das ist die Lösung des Problems. Ich haben einfach konsequent den Parameter NumberOfResultsAfter übersehen.