Dev:How To Encode Bus Replacements
|
How To Encode Bus Replacements
Bus replacements or replacements trains are a common scenario in modern train operations. When a track cannot be used due to construction work railway undertakings often provide replacement services so that passengers can still reach their destinations. Since version railML® 2.4 it is possible to describe these scenarios in railML®. You cannot only describe the actual replacement service, but also point out for which originally scheduled train this is a replacement.
Ersatzbusse oder Ersatzzüge sind ein gängiges Szenario im modernen Bahnbetrieb. Wenn eine Strecke aufgrund von Bauarbeiten nicht befahren werden kann, bieten die Eisenbahnunternehmen oft Ersatzverkehre an, damit die Fahrgäste trotzdem ihr Ziel erreichen können. Ab railML® 2.4 ist es möglich, diese Szenarien in railML® zu beschreiben. Sie können nicht nur den eigentlichen Ersatzverkehr beschreiben, sondern auch angeben, für welchen ursprünglich fahrplanmäßigen Zug es sich um einen Ersatz handelt.
<category id='c01' code='EC' name='EuroCity'/> ... <train id='trc_9114' name='9114' type='commercial'> <trainPartSequence sequence='1' categoryRef='c01'> <trainPartRef ref='tp_9114_London-Lille' position='2'/> </trainPartSequence> <trainPartSequence sequence='2' categoryRef='c01'> <trainPartRef ref='tp_9114_Lille-Bruxelles' position='1'/> </trainPartSequence> </train>
Let’s assume we need to schedule a bus replacement for the train above, where the second <trainPart> is operated by bus due to construction work on the track. In this case we would start pointing out that the second <trainPart> is cancelled. This can be achieved by specifying the attribute @cancellation=’true’.
Nehmen wir an, wir müssen einen Busersatz für den obigen Zug einplanen, bei dem der zweite <trainPart> aufgrund von Bauarbeiten an der Strecke mit einem Bus betrieben werden muss. In diesem Fall würden wir zunächst darauf hinweisen, dass der zweite <trainPart> ausfällt. Dies kann durch die Angabe des Attributs @cancellation='true' erreicht werden.
<category id='c01' code='EC' name='EuroCity'/> ... <trainPart id='tp_9114_Lille-Bruxelles' cancellation='true'> ... </trainPart> ... <train id='trc_9114' name='9114' type='commercial'> <trainPartSequence sequence='1' categoryRef='c01'> <trainPartRef ref='tp_9114_London-Lille' position='2'/> </trainPartSequence> <trainPartSequence sequence='2' categoryRef='c01'> <trainPartRef ref='tp_9114_Lille-Bruxelles' position='1'/> </trainPartSequence> </train>
Next, we need to describe the replacement service. We introduce a new train that is assigned a category that marks it as a bus replacement. Of course, if the replacement service is performed by a train then an appropriate train category needs to be chosen here. The principle however is the same.
Als nächstes müssen wir den Ersatzverkehr beschreiben. Wir fügen einen neuen Zug ein, dem eine Kategorie zugewiesen wird, die ihn als Busersatz kennzeichnet. Sofern es sich nicht um einen Bus handelt, der den Ersatzverkehr durchführt, sondern einen Zug, muss natürlich eine entsprechend andere Kategorie gewählt werden. Das Prinzip bleibt aber das selbe.
<category id='c01' code='EC' name='EuroCity'/> <category id='c02' code='Bus' name='Railway replacement service'/> ... <trainPart id='tp_9114_Lille-Bruxelles' cancellation='true'> ... </trainPart> <trainPart id='tp_9114_Lille-Bruxelles_replacement'> ... </trainPart> ... <train id='trc_9114' name='9114' type='commercial'> <trainPartSequence sequence='1' categoryRef='c01'> <trainPartRef ref='tp_9114_London-Lille' position='2'/> </trainPartSequence> <trainPartSequence sequence='2' categoryRef='c01'> <trainPartRef ref='tp_9114_Lille-Bruxelles' position='1'/> </trainPartSequence> </train> <train id='trc_9114_replacement' name='R9114' type='commercial'> <trainPartSequence sequence='1' categoryRef='c02'> <trainPartRef ref='tp_9114_Lille-Bruxelles_replacement' position='1'/> </trainPartSequence> <replacements> <replacementOf> <operatingPeriodRef ref='opp_construction'/> <uniqueTrainKey trainNumber='9114'/> </replacementOf> </replacements> </train>
It needs to be noted, that the fact that the replacement service is provided by a bus can only be encoded with a special category. The consuming system needs to know that this category is not operated by a train as this piece of information is not included in the data exchange. Es ist zu beachten, dass die Tatsache, dass der Ersatzverkehr durch einen Bus erbracht wird, nur mit einer speziellen Kategorie kodiert werden kann. Das konsumierende System muss wissen, dass diese Kategorie nicht von einem Zug bedient wird, da diese Information nicht in den Datenaustausch einbezogen ist. The identification of the replaced service can be performed by use of the <uniqueTrainKey> element, as shown in the example above, or alternatively using a <tafTapTsiTrainID> tag. When using <uniqueTrainKey> the attribute @trainNumber is used to specify the commercial train number. With <tafTapTsiTrainID> you can specify a train identifier with the typical composite key consisting of object type, company code, core identifier, variant identifier, timetable year and start date.
Die Identifizierung des ersetzten Dienstes kann mit Hilfe des Elements <uniqueTrainKey> erfolgen, wie im obigen Beispiel gezeigt, oder alternativ mit einem <tafTapTsiTrainID>-Tag. Bei Verwendung von <uniqueTrainKey> wird das Attribut @trainNumber zur Angabe der kommerziellen Zugnummer verwendet. Außerdem kann zur Angabe einer sekundären Zugnummer das Attribute additionalTrainNumber verwendet werden. Weitere Informationen zur Nutzung von sekundären Zugnummern finden Sie unter https://www.irfp.de/files/iRFP/Downloads/railml_beispiel_mzl.pdf. Mit <tafTapTsiTrainID> können Sie eine Zugkennung mit dem typischen zusammengesetzten Schlüssel bestehend aus Objektart, Unternehmenskennung, Core ID, Variantenkennung, Fahrplanjahr und Startdatum angeben.
By specifying the element <operatingPeriodRef> under <replacementOf> it is possible to declare a train as a replacement for another during only a part of the <operatingPeriod> referenced by its <trainParts>. This is useful in scenarios where the capacity of the replacement train is increase for example during the time of the construction site to compensate for the additional demand due to the cancellation of another train while otherwise still running with reduced capacity.
Durch Angabe des Elements <operatingPeriodRef> unter <replacementOf> ist es möglich, einen Zug als Ersatz für einen anderen nur während eines Teils der von seinen <trainParts> referenzierten <operatingPeriod> zu deklarieren. Dies ist in Szenarien nützlich, in denen die Kapazität des Ersatzzuges z. B. während der Zeit einer Baustelle erhöht wird, um die zusätzliche Nachfrage aufgrund des Ausfalls eines anderen Zuges zu kompensieren, während er ansonsten mit reduzierter Kapazität fährt.