Erweiterungen

Erweiterungen

Wir nutzen die Erweiterungsfunktion von Protokollzwischenspeichern, um das Testen neuer Funktionen zu vereinfachen und Entwicklern die Möglichkeit zu bieten, zusätzliche Daten in GTFS Realtime-Feeds aufzunehmen. Mithilfe von Erweiterungen lässt sich ein Namespace in einer Protokollzwischenspeicher-Nachricht festlegen. So können Entwickler von Drittanbieter-Apps zusätzliche Felder definieren, ohne die ursprüngliche Protokolldefinition ändern zu müssen.

Wenn ein Entwickler die GTFS Realtime-Spezifikation erweitern möchte, sollte er sich an die GTFS Realtime-Mailingliste wenden. Wir weisen ihm dann die nächste verfügbare Erweiterungs-ID zu. Diese wird inkrementell aus einer Liste von IDs ausgewählt, die bei 1.000 beginnt. Diese IDs finden Sie unten im Abschnitt „Erweiterungsregistrierung“.

Die zugewiesenen Erweiterungs-IDs entsprechen den Tag-IDs, die im extension-Namespace für jede GTFS Realtime-Nachrichtendefinition verfügbar sind. Nachdem dem Entwickler eine Erweiterungs-ID zugewiesen wurde, kann er sie zur Erweiterung aller GTFS Realtime-Nachrichten verwenden. Selbst wenn der Entwickler nur eine einzelne Nachricht erweitern möchte, wird die ihm zugewiesene ID für ALLE Nachrichten reserviert.

Ein Entwickler, der die Spezifikation erweitern möchte, sollte eine neue Nachricht wie MyTripDescriptorExtension definieren, die zugrunde liegende GTFS Realtime-Nachricht mit dieser neuen Nachricht erweitern und dann dort alle neuen Felder hinzufügen. Diese Vorgehensweise wird gegenüber dem Hinzufügen eines einzelnen Feldes wie string oder int32 mit seiner Erweiterungs-ID bevorzugt. Wenn der Entwickler sich an diese Empfehlung hält, kann er Felder in seiner Erweiterungsnachricht nach Bedarf verwalten, ohne eine neue Erweiterungs-ID aus der primären Liste reservieren zu müssen.

message MyTripDescriptorExtension {
  optional string some_string = 1;
  optional bool some_bool = 2;
  ...
}
extend transit_realtime.TripDescriptor {
  optional MyTripDescriptorExtension my_trip_descriptor = YOUR_EXTENSION_ID;
}

Erweiterungsregistrierung

Erweiterungs-ID Entwickler Kontakt Details
1000 OneBusAway onebusaway-developers https://github.com/OneBusAway/onebusaway/wiki/GTFS-Realtime-Resources
1001 New York City MTA mtadeveloperresources http://mta.info/developers/
1002 Google transit-realtime-partner-support@google.com Live-Updates zu öffentlichen Verkehrsmitteln für Google Maps
1003 OVapi gtfs-rt@ovapi.nl http://gtfs.ovapi.nl
1004 Metra William Ashbaugh w.l.ashbaugh@gmail.com
1005 Metro-North Railroad John Larsen
1006 realCity David Varga http://realcity.io
1007 NSW TrainLink Gregory Nicholls Gruppendiskussion
1008 SEPTA – Southeastern Pennsylvania Transportation Authority Gregory Apessos https://github.com/septadev
1009 Swiftly mike@goswift.ly Gruppendiskussion
1010 IBI Group Ritesh Warade GitHub-Vorschlag für neue Zeitstempel in Servicebenachrichtigungen