MOTIS Project

Technische Universität Darmstadt
FB Informatik / Fachgebiet Algorithmik
Karolinenpl. 5,64287 Darmstadt

Kontakt: guendling at cs.tu-darmstadt.de

Multikriterielle Fahrplanauskunft

Das seit der Jahrtausendwende an der TU Darmstadt entwickelte Fahrplanauskunftssystem MOTIS wurde von Anfang an mit dem Gedanken an mehrere Zielkriterien entworfen. So sind z.B. die schnellste Verbindung, die mit den wenigsten Umsteigen und eine Kombination (etwas langsamer als die schnellste, dafür einen Umstieg weniger) alle im multi-kriteriellen Sinne optimal. Ähnliche Verbindungen werden abhängig von ihrem zeitlichen Abstand angeboten.

Echtzeit

Das Fahrplanmodell kann durch die Einarbeitung von Echtzeitinformationen aktualisiert werden. Auf diese Weise können Verbindungen in Echtzeit überwacht werden. Bei Problemen können gültige Alternativen ermittelt werden.

RailViz

Unser Zugmonitor mit der aktuellen Position (laut Fahrplan plus Echtzeitinformationen) von Bussen, Bahnen und Zügen. Die echten Fahrtverläufe werden aus OpenStreetMap abgeleitet und unter der Path-Api zur Verfügung gestellt.

OnTrip / PreTrip

Nicht nur die klassische Planung einer Reise im Vorfeld, also PreTrip wird unterstützt. Möchte man nach einem Termin sofort die Reise beginnen, ist es sinnvoll die Wartezeit bis zur Abfahrt in die Reisezeit einzubeziehen. In diesem OnTrip Szenario nutzt einem eine dreißig Minuten spätere Verbindung, die zehn Minuten schneller ist, leider nichts; man kommt immer noch zwanzig Minuten später an.

JSON API

Sämtliche Funktionalitäten werden als JSON Schnittstelle angeboten.

Intermodal BETA

Mit dem fahrplangebundenen ÖV als Rückgrat der Tür-zu-Tür-Auskunft ist es möglich, Teilstrecken zu Fuß, mit dem Fahrrad, mit dem eigenen Auto, Taxi, Leihrad, Mitfahrzentrale etc. zurückzulegen. Das Auskunftssystem ermittelt wieder im multi-kriteriellen Sinne attraktive Verbindungen, die den Nutzer von der Start- zur Zieladresse bringen.

Stationen im Radius

Über diese Schnittstelle können alle Stationen in einem Radius um eine Geokoordinate abgefragt werden.

{
  "destination": {
    "target": "/lookup/geo_station"
  },
  "content_type": "LookupGeoStationRequest",
  "content": {
    "pos": {
      "lat": 49.8774869,
      "lng": 8.6546632
    },
    "min_radius": 250.00,
    "max_radius": 500.00
  }
}
Name Beschreibung
pos Geokoordinaten
min_radius minimaler Radius in Metern
max_radius maximaler Radius in Metern
{
  "destination": {
    "target": ""
  },
  "content_type": "LookupGeoStationResponse",
  "content": {
    "stations": [
      {
        "id": "0124747",
        "name": "Willy-Brandt-Platz, Darmstadt",
        "pos": {
          "lat": 49.876022,
          "lng": 8.650265
        }
      },
      {
        "id": "0102668",
        "name": "Kongresszentrum, Darmstadt",
        "pos": {
          "lat": 49.873872,
          "lng": 8.656113
        }
      },
      {
        "id": "0104722",
        "name": "Mathildenplatz, Darmstadt",
        "pos": {
          "lat": 49.874663,
          "lng": 8.650039
        }
      },
      {
        "id": "0124011",
        "name": "Alexanderstra\u00DFe/TU, Darmstadt",
        "pos": {
          "lat": 49.875765,
          "lng": 8.66054
        }
      }
    ]
  },
  "id": 1
}
Name Beschreibung
stations[i].id Stations-ID
stations[i].name Stationsname
stations[i].pos Postition der Station (Geokoordinate)

Ankunft-/Abfahrtstabelle

Über diese Schnittstelle können Abfahrts- und Ankunftsevents an einer bestimmten Station abgefragt werden.

{
  "destination": {
    "target": "/railviz/get_station"
  },
  "content_type": "RailVizStationRequest",
  "content": {
    "station_id": "8000105",
    "time": 1476093600,
    "event_count": 5,
    "direction": "BOTH",
    "by_schedule_time": true
  }
}
Name Beschreibung
station_id Stations-ID
time Zeitpunkt zu dem die Ankunfts-/Abfahrtsevents abgefragt werden sollen
event_count Anzahl der Events, die ausgegeben werden sollen
direction

LATER
Nur Events ausgeben, die später stattfinden als der angegebene Zeitpunkt

EARLIER
Nur Events ausgeben, die früher stattfinden als der angegebene Zeitpunkt

BOTH
Die event_count nächsten Events um den angegebenen Zeitpunkt ausgeben

by_schedule_time Sortierung nach Echtzeit (false) oder nach Fahrplanzeit (true)
{
  "destination": {
    "target": ""
  },
  "content_type": "RailVizStationResponse",
  "content": {
    "station": {
      "id": "8000105",
      "name": "Frankfurt(Main)Hbf",
      "pos": {
        "lat": 50.107145,
        "lng": 8.663789
      }
    },
    "events": [
      {
        "trips": [
          {
            "id": {
              "station_id": "8000199",
              "train_nr": 73,
              "time": 1476076380,
              "target_station_id": "8503000",
              "target_time": 1476108000,
              "line_id": ""
            },
            "transport": {
              "category_name": "ICE",
              "category_id": 10,
              "train_nr": 73,
              "line_id": "",
              "name": "ICE 73",
              "provider": "Deutsche Bahn AG",
              "direction": "Z\u00FCrich HB"
            }
          }
        ],
        "type": "ARR",
        "event": {
          "time": 1476093600,
          "schedule_time": 1476093600,
          "track": "6"
        }
      },
      {
        "trips": [
          {
            "id": {
              "station_id": "8000362",
              "train_nr": 15830,
              "time": 1476090840,
              "target_station_id": "8000105",
              "target_time": 1476093660,
              "line_id": "61"
            },
            "transport": {
              "category_name": "RE",
              "category_id": 4,
              "clasz": 3,
              "train_nr": 15830,
              "line_id": "61",
              "name": "RE 15830",
              "provider": "DB Netz 05 Mitte",
              "direction": "Frankfurt(Main)Hbf"
            }
          }
        ],
        "type": "ARR",
        "event": {
          "time": 1476093660,
          "schedule_time": 1476093660,
          "track": "12"
        }
      }
    ]
  },
  "id": 1
}
Name Beschreibung
station Stationsname, Geokoordinaten und Stations-ID
events[i].type DEP Abfahrtsevent
ARR Ankunftsevent
events[i].event.time Zeitpunkt des Events nach der aktuellen Situation
events[i].event.schedule_time Zeitpunkt des Events laut Fahrplan
events[i].event.track Gleisangabe
events[i].trips Array, das alle Fahrten referenziert, die bei dem Event abfahren/ankommen (meist ein Eintrag, bei Flügelzügen mehrere). Der id Eintrag kann beispielsweise verwendet werden, um den jeweiligen Zuglauf des Fahrzeugs abzufragen. Der transport Eintrag enthält Anzeigeinformationen (z.B. den Zugnamen).

Zug-Geo

Mit dieser Abfrage können Züge in einem bestimmten Zeitraum, die sich in einem angegebenen Rechteck befinden, abgefragt werden.

{
  "destination": {
    "target": "/railviz/get_trains"
  },
  "content_type": "RailVizTrainsRequest",
  "content": {
    "zoom_level": 16,
    "corner1": { "lat": 50.0, "lng": 9.0 },
    "corner2": { "lat": 49.0, "lng": 10.0 },
    "start_time": 1476093600,
    "end_time": 1476093660,
    "max_trains": 1
  }
}
Name Beschreibung
zoom_level Zoomlevel (1-18), siehe Leaflet.js, Google Maps, etc.
corner1, corner2 Geokoordinaten für das Rechteck
start_time, end_time zeitliche Einschränkung
max_trains Anzahl der zu liefernden Züge. Es werden zuerst ICEs ausgegeben, sollte dann max_trains nicht erreicht sein auch ICs, usw.
{
  "destination": {
    "target": ""
  },
  "content_type": "RailVizTrainsResponse",
  "content": {
    "trains": [
      {
        "names": [ "ICE 578" ],
        "d_time": 1476091500,
        "a_time": 1476093840,
        "sched_d_time": 1476091500,
        "sched_a_time": 1476093840,
        "trip": [
          {
            "station_id": "8000096",
            "train_nr": 578,
            "time": 1476091500,
            "target_station_id": "8002553",
            "target_time": 1476111000,
            "line_id": ""
          }
        ]
      }
    ],
    "routes": [
      {
        "segments": [
          {
            "from_station_id": "8000096",
            "to_station_id": "8000244",
            "coordinates": {
              "coordinates": [
                48.784084,
                9.181635,
                49.479354,
                8.468921
              ]
            }
          },
          {
            "from_station_id": "8002549",
            "to_station_id": "8002548",
            "coordinates": {
              "coordinates": [
                53.552736,
                10.006909,
                53.560751,
                9.989566
              ]
            }
          },
          {
            "from_station_id": "8000128",
            "to_station_id": "8000152",
            "coordinates": {
              "coordinates": [
                51.536815,
                9.926072,
                52.376761,
                9.741021
              ]
            }
          },
          {
            "from_station_id": "8000244",
            "to_station_id": "8070003",
            "coordinates": {
              "coordinates": [
                49.479354,
                8.468921,
                50.053167,
                8.570185
              ]
            }
          },
          {
            "from_station_id": "8003200",
            "to_station_id": "8000128",
            "coordinates": {
              "coordinates": [
                51.313114,
                9.446898,
                51.536815,
                9.926072
              ]
            }
          },
          {
            "from_station_id": "8070003",
            "to_station_id": "8000105",
            "coordinates": {
              "coordinates": [
                50.053167,
                8.570185,
                50.107145,
                8.663789
              ]
            }
          },
          {
            "from_station_id": "8000152",
            "to_station_id": "8002549",
            "coordinates": {
              "coordinates": [
                52.376761,
                9.741021,
                53.552736,
                10.006909
              ]
            }
          },
          {
            "from_station_id": "8000105",
            "to_station_id": "8003200",
            "coordinates": {
              "coordinates": [
                50.107145,
                8.663789,
                51.313114,
                9.446898
              ]
            }
          },
          {
            "from_station_id": "8002548",
            "to_station_id": "8002553",
            "coordinates": {
              "coordinates": [
                53.560751,
                9.989566,
                53.552695,
                9.935175
              ]
            }
          }
        ]
      }
    ],
    "stations": [
      {
        "id": "8000096",
        "name": "Stuttgart Hbf",
        "pos": {
          "lat": 48.784084,
          "lng": 9.181635
        }
      },
      {
        "id": "8000105",
        "name": "Frankfurt(Main)Hbf",
        "pos": {
          "lat": 50.107145,
          "lng": 8.663789
        }
      },
      {
        "id": "8000128",
        "name": "G\u00F6ttingen",
        "pos": {
          "lat": 51.536815,
          "lng": 9.926072
        }
      },
      {
        "id": "8000152",
        "name": "Hannover Hbf",
        "pos": {
          "lat": 52.376761,
          "lng": 9.741021
        }
      },
      {
        "id": "8000244",
        "name": "Mannheim Hbf",
        "pos": {
          "lat": 49.479354,
          "lng": 8.468921
        }
      },
      {
        "id": "8002548",
        "name": "Hamburg Dammtor",
        "pos": {
          "lat": 53.560751,
          "lng": 9.989566
        }
      },
      {
        "id": "8002549",
        "name": "Hamburg Hbf",
        "pos": {
          "lat": 53.552736,
          "lng": 10.006909
        }
      },
      {
        "id": "8002553",
        "name": "Hamburg-Altona",
        "pos": {
          "lat": 53.552695,
          "lng": 9.935175
        }
      },
      {
        "id": "8003200",
        "name": "Kassel-Wilhelmsh\u00F6he",
        "pos": {
          "lat": 51.313114,
          "lng": 9.446898
        }
      },
      {
        "id": "8070003",
        "name": "Frankfurt(M) Flughafen Fernbf",
        "pos": {
          "lat": 50.053167,
          "lng": 8.570185
        }
      }
    ]
  },
  "id": 1
}
Name Beschreibung
trains[i].names Zugnamen (ggf. mehrere für Flügelzüge)
trains[i].clasz Klasse des Fahrzeugs. In der folgenden Liste ist für jede Klasse (0 bis 9) ein Repräsentant aufgeführt. Es gibt aber häufig mehrere Gattungen, die diese Klasse haben (z.B. ICE und TGV sind beide in Klasse 0).

  • 0 = ICE (default, wenn nicht gesetzt)
  • 1 = IC
  • 2 = Nachtzüge CNL, EN
  • 3 = Regional Express (RE)
  • 4 = Regional Bahn (RB)
  • 5 = S-Bahn
  • 6 = U-Bahn
  • 7 = Straßenbahn
  • 8 = Busse
  • 9 = sonstiges (Flüge, etc.)

d_time, a_time Abfahrtszeit, Ankunftszeit
route_index Index des geographischen Fahrtverlaufs (des gesamten Zugs) im routes Array.
segment_index Index des Routensegments, auf dem sich der Zug befindet
(routes[route_index][segment_index]).
segments[j].coordinates Abwechselnd Breiten- und Längengrade des geographischen Fahrtverlaufs
segments[j].from_station_id, segments[j].to_station_id Stationspaar dieses Segments
stations Informationen (Stations-ID, Name und Geokoordinaten) der Stationen, die in mind. einem der Zugläufe vorkommen

Guesser

Diese Schnittstelle wird genutzt, um Nutzereingaben automatisch und fehlertolerant zu vervollständigen.

{
  "destination": {
    "target": "/guesser"
  },
  "content_type": "StationGuesserRequest",
  "content": {
    "input": "Darmst",
    "guess_count": 3
  }
}
Name Beschreibung
input Nutzereingabe
guess_count Anzahl von Vorschägen
{
  "destination": {
    "target": ""
  },
  "content_type": "StationGuesserResponse",
  "content": {
    "guesses": [
      {
        "id": "8000068",
        "name": "Darmstadt Hbf",
        "pos": {
          "lat": 49.872503,
          "lng": 8.629636
        }
      },
      {
        "id": "8001377",
        "name": "Darmstadt Süd",
        "pos": {
          "lat": 49.855426,
          "lng": 8.636586
        }
      },
      {
        "id": "8001376",
        "name": "Darmstadt Ost",
        "pos": {
          "lat": 49.874743,
          "lng": 8.673867
        }
      }
    ]
  },
  "id": 1
}
Name Beschreibung
guesses[i].id Stations-ID
guesses[i].name Stationsname
guesses[i].pos Postition der Station (Geokoordinate)

Intermodal

Diese Schnittstelle stellt Tür-zu-Tür Verbindungen zur Verfügung und erweitert das PreTrip/OnTrip Routing um Fahrradfahren und Laufen (im Vor- und Nachlauf)

Für mehr Informationen bitte nachfragen.

{
  "destination": {
    "type": "Module",
    "target": "/intermodal"
  },
  "content_type": "IntermodalRoutingRequest",
  "content": {
    "start_type": "IntermodalOntripStart",
    "start": {
      "position": { "lat": 49.8780915, "lng": 8.6546392},
      "departure_time": 1476095400
    },
    "start_modes": [{
      "mode_type": "Foot",
      "mode": { "max_duration": 900 }
    }],
    "destination_type": "InputPosition",
    "destination": { "lat": 50.1095955, "lng": 8.6692976},
    "destination_modes":  [{
      "mode_type": "Foot",
      "mode": { "max_duration": 900 }
    }],
    "search_type": "SingleCriterion"
  }
}
{
  "destination": {
    "target": ""
  },
  "content_type": "StationGuesserResponse",
  "content": {
    "guesses": [
      {
        "id": "8000068",
        "name": "Darmstadt Hbf",
        "pos": {
          "lat": 49.872503,
          "lng": 8.629636
        }
      },
      {
        "id": "8001377",
        "name": "Darmstadt Süd",
        "pos": {
          "lat": 49.855426,
          "lng": 8.636586
        }
      },
      {
        "id": "8001376",
        "name": "Darmstadt Ost",
        "pos": {
          "lat": 49.874743,
          "lng": 8.673867
        }
      }
    ]
  },
  "id": 1
}

PreTrip Routing

Hiermit kann der Routingalgorithmus von MOTIS angesprochen werden. Bei der PreTrip Variante wird ein Abfahrts-/Ankunftsinterval abgefragt.

{
  "destination": {
    "target": "/routing"
  },
  "content_type": "RoutingRequest",
  "content": {
    "start_type": "PretripStart",
    "start": {
      "station": {
        "name": "Darmstadt Hbf",
        "id": ""
      },
      "interval": {
        "begin": 1476094200,
        "end": 1476097800
      },
      "min_connection_count": 1,
      "extend_interval_earlier": true,
      "extend_interval_later": true
    },
    "destination": {
      "name": "Hanau Hbf",
      "id": ""
    },
    "search_dir": "Forward",
    "additional_edges": [],
    "via": []
  }
}
Name Beschreibung
start.station, destination Identifiziert Start- und Zielstation:
(1) Entweder id auf eine gültige Stations-ID setzen und name auf einen leeren String
(2) oder id auf einen leeren String setzen und name auf einen Stationsnamen setzen. Dieser wird serverseitig aufgelöst (erstes Ergebnis aus der Stations-Autovervollständigung).
search_dir

Forward
Das angegebene Intervall wird als Abfahrtsintervall interpretiert. Sucht von start nach destination

Backward
Das angegebene Intervall wird als Ankunftsintervall interpretiert. Sucht von destination nach start

interval.begin, interval.end Unix-Zeitstempel (müssen im Fahrplanzeitraum liegen). Abfahrts- / Ankunftsintervall (abhängig von search_dir)
min_connection_count Mindestanzahl an Verbindungen. Die Antwort kann am Anfang/Ende vom Fahrplan oder wenn weder extend_interval_earlier, noch extend_interval_later den Wert true haben unterschritten werden.
extend_interval_earlier, extend_interval_later Gibt an, in welche Richtung (später/früher) weitergesucht werden soll, wenn min_connection_count gesetzt ist und im initial angegebenen Intervall weniger als min_connection_count Verbindungen gefunden wurden.
Die Antwort enthält die grenzen des erweiterten Intervalls (nötig, um Verbindungen nicht doppelt anzuzeigen).
via noch nicht unterstützt
additional_edges intern (intermodale Suche)

{
  "destination": {
    "target": ""
  },
  "content_type": "RoutingResponse",
  "content": {
    "statistics": { ... },
    "connections": [
      {
        "stops": [
          {
            "station": {
              "id": "8000068",
              "name": "Darmstadt Hbf",
              "pos": { "lat": 49.872503, "lng": 8.629636 }
            },
            "arrival": { "track": "" },
            "departure": {
              "time": 1476095400,
              "schedule_time": 1476095400,
              "track": "7"
            },
            "enter": true
          },
          {
            "station": {
              "id": "8003523",
              "name": "Langen(Hess)",
              "pos": { "lat": 49.993612, "lng": 8.656787 }
            },
            "arrival": {
              "time": 1476095880,
              "schedule_time": 1476095880,
              "track": "1"
            },
            "departure": {
              "time": 1476095940,
              "schedule_time": 1476095940,
              "track": "1"
            }
          },
          {
            "station": {
              "id": "8000105",
              "name": "Frankfurt(Main)Hbf",
              "pos": { "lat": 50.107145, "lng": 8.663789 }
            },
            "arrival": {
              "time": 1476096480,
              "schedule_time": 1476096480,
              "track": "12"
            },
            "departure": {
              "time": 1476097980,
              "schedule_time": 1476097980,
              "track": "9"
            },
            "exit": true,
            "enter": true
          },
          {
            "station": {
              "id": "8000150",
              "name": "Hanau Hbf",
              "pos": { "lat": 50.120953, "lng": 8.929 }
            },
            "arrival": {
              "time": 1476098820,
              "schedule_time": 1476098820,
              "track": "7"
            },
            "departure": { "track": "" },
            "exit": true
          }
        ],
        "transports": [
          {
            "move_type": "Transport",
            "move": {
              "range": { "from": 0, "to": 2 },
              "category_name": "RB",
              "category_id": 1,
              "clasz": 4,
              "train_nr": 15354,
              "line_id": "60",
              "name": "RB 15354",
              "provider": "DB Netz 06 S\u00FCdwest",
              "direction": "Frankfurt(Main)Hbf"
            }
          },
          {
            "move_type": "Transport",
            "move": {
              "range": { "from": 2, "to": 3 },
              "category_name": "ICE",
              "category_id": 15,
              "train_nr": 370,
              "line_id": "",
              "name": "ICE 370",
              "provider": "Deutsche Bahn AG",
              "direction": ""
            }
          }
        ],
        "trips": [
          {
            "range": { "from": 0, "to": 2 },
            "id": {
              "station_id": "8000156",
              "train_nr": 15354,
              "time": 1476091260,
              "target_station_id": "8000105",
              "target_time": 1476096480,
              "line_id": "60"
            }
          },
          {
            "range": { "from": 2, "to": 3 },
            "id": {
              "station_id": "8500010",
              "train_nr": 370,
              "time": 1476087180,
              "target_station_id": "8010255",
              "target_time": 1476113940,
              "line_id": ""
            }
          }
        ],
        "attributes": [
          {
            "range": { "from": 0, "to": 2 },
            "code": "EH",
            "text": "Fahrzeuggebundene Einstiegshilfe vorhanden"
          },
          {
            "range": { "from": 0, "to": 2 },
            "code": "G ",
            "text": "Fahrradmitnahme begrenzt möglich"
          },
          {
            "range": { "from": 0, "to": 2 },
            "code": "KL",
            "text": "Klimaanlage"
          },
          {
            "range": { "from": 2, "to": 3 },
            "code": "BR",
            "text": "Bordrestaurant"
          }
        ]
      }
    ],
    "interval_begin": 1476094200,
    "interval_end": 1476097800
  },
  "id": 1
}

Stops

Umstiege werden ausschließlich über exit und enter markiert (siehe Tabelle). Die range Angaben der transports und trips lassen keine Aussagen über Umstiege zu.

Da das System Fußwege unterstützt, kann es dazu kommen, dass exit und enter nicht immer zusammen auftreten. Beispiel: Zug von A nach B, Fußweg von B nach C, Zug von C nach D.

Name Beschreibung
stops[i].station Informationen über die Station (ID, Name, Geokoordinaten)
stops[i].departure, stops[i].arrival

time
Zeitpunkt des Abfahrts-/Ankunftsevents in Echtzeit

schedule_time
Zeitpunkt des Abfahrts/Ankunftsevents laut Fahrplan

track
Abfahrts / Ankunftsgleis (fast immer gleich)

stops[i].enter, stops[i].exit Der Reisende steigt an diesem Halt ein enter=true oder verlässt diesen exit=true. Standard: false (Attribut ist nicht gesetzt)

Transports

transports enthalten Informationen über den Zugnamen, seine Gattung, usw.

Achtung: es kann zu Umbenennungen (Zugnummer / Gattung ändert sich) kommen. Es kann also mehrere Transports geben, obwohl der Reisende weiterhin im selben Fahrzeug sitzt und nicht umsteigt (Umstiege können nur mit stops[i].enter und stops[i].leave erkannt werden).

Wichtig ist hauptsächlich das name Attribut. Es ist nicht empfehlenswert, category, train_nr und line_id selbst zu einem Namen zusammenzusetzen.

Name Beschreibung
transports[i].range Gibt an von welchem stop bis zu welchem stop (Array Index) die Information in diesem Transport gilt.
transports[i].name Ausgabename für den Nutzer
transports[i].clasz Klasse des Fahrzeugs. In der folgenden Liste ist für jede Klasse (0 bis 9) ein Repräsentant aufgeführt. Es gibt aber häufig mehrere Gattungen, die diese Klasse haben (z.B. ICE und TGV sind beide in Klasse 0).

  • 0 = ICE (default, wenn nicht gesetzt)
  • 1 = IC
  • 2 = Nachtzüge CNL, EN
  • 3 = Regional Express (RE)
  • 4 = Regional Bahn (RB)
  • 5 = S-Bahn
  • 6 = U-Bahn
  • 7 = Straßenbahn
  • 8 = Busse
  • 9 = sonstiges (Flüge, etc.)

Trips

Diese Informationen identifizieren das Fahrzeug eindeutig. Damit ist es möglich, weitere Informationen zu dem Fahrzeug abzufragen (siehe Zuglauf Abfrage API). Man kann dies also ähnlich wie eine "Zug-ID" betrachten, oder wie eine Referenz ("href").

Keine weitere Beschreibung, da diese Informationen nicht zur Anzeige für den Nutzer geeignet sind, sondern Systemintern als Referenzierung verwendet werden.

Attributes

Attribute geben bestimmte Eigenschaften des Fahrzeugs an. Beispielsweise Fahrradmitnahme, Boardrestaurant, WLAN, etc.

Achtung: zusammengefasste Attribute. Wenn ein Attribut über mehrere Umstiege hinweg gilt, gibt es nicht mehrere Attribut-Einträge. In dem Fall hat das Attribut eine range, die die Umstiege überspannt.

Name Beschreibung
attributes[i].range Gibt an von welchem stop bis zu welchem stop (Array Index) die Information in diesem Attribut gilt.
attributes[i].code Eindeutige Attribut ID
attributes[i].text Beschreibungstext für den Kunden

Interval

Mit interval_begin und interval_end (Unix-Timestamps) wird angegeben, welches Zeitintervall abgesucht wurde. Diese Information kann nur von dem in der Anfrage angegebenen Intervall abweichen, wenn dort (PreTrip Anfrage) min_connection_count auf true gesetzt ist.

OnTrip Routing

Dieser Anfragetyp hat fast die gleichen Eigenschaften wie die PreTrip Anfrage. Der einzige Unterschied ist, dass statt eines Abfahrts-/Ankunftsintervalls hier ein einzelner Zeitpunkt (departure_time) angegeben wird. In der Suche wird die Wartezeit bis zur ersten Abfahrt in die Reisezeit eingerechnet.

{
  "destination": {
    "target": "/routing"
  },
  "content_type": "RoutingRequest",
  "content": {
    "start_type": "OntripStationStart",
    "start": {
      "station": {
        "name": "Darmstadt Hbf",
        "id": ""
      },
      "departure_time": 1476094200
    },
    "destination": {
      "name": "Hanau Hbf",
      "id": ""
    },
    "search_dir": "Forward",
    "additional_edges": [],
    "via": []
  }
}

Die Antwort ist genauso aufgebaut wie die PreTrip Antwort.

Zuglauf

Mit diesem Anfragetyp kann der gesamte Fahrweg eines Fahrzeugs abgefragt werden. Hierfür wird die eindeutige TripId verwendet, die beispielsweise auch bei Routing Antworten enthalten ist.

{
  "destination": {
    "target": "/trip_to_connection"
  },
  "content_type": "TripId",
  "content": {
    "station_id": "8000156",
    "train_nr": 15354,
    "time": 1476091260,
    "target_station_id": "8000105",
    "target_time": 1476096480,
    "line_id": "60"
  }
}

Die Antwort ist genauso aufgebaut wie die PreTrip Antwort, enthält aber nur ein Fahrzeug.