Joining and splitting of trains
Overview
Splitting (Flügelzug) and joining (Vereinigung) describe operational patterns where a
single coupled train separates into two independent trains at an intermediate stop, or
two trains merge into one.
The Swiss example used throughout this use case is the
RE1 4171 Bern – Spiez – Brig / Zweisimmen: the coupled train runs from Bern to
Spiez (Flügelungspunkt), then splits into two branches — RE1 4271 towards Brig (via
Lötschberg) and R11 6823 towards Zweisimmen (via Simmental).
graph LR
Bern -->|"RE1 4171 (Stammfahrt)"| Spiez
Spiez -->|"RE1 4271 → Brig"| Brig
Spiez -->|"R11 6823 → Zweisimmen"| Zweisimmen
Note:
ChangeWithinVehicleshould be set totruewhen a passenger may need to move to a different part of the train at the splitting point to continue their journey. See also uc01 Durchbindung.
Mapping between HRDF and NeTEx
| HRDF | NeTEx RG1 | NeTEx RG2 | Use Case |
|---|---|---|---|
[durchbi] |
JourneyMeeting |
ServiceJourneyInterchange with StaySeated=true and ChangeWithinVehicle=true |
Splitting / Joining at splitting- / joining point |
HRDF example (Bern – Spiez – Brig/Zweisimmen):
Two [durchbi] records are needed — one per branch (Brig and Zweisimmen).
004171 000033 8507483 004271 000033 000000 8507483 %
004171 000033 8507483 006823 000033 000000 8507483 %
The coupling on the Bern–Spiez section is expressed via two [durchbi] records,
linking the feeder journey 4171 to each of the branch journeys (4271 and 6823) at
Spiez (DIDOK 8507483).
Modelling with NeTEx RG 1.0 (JourneyMeeting)
In RG 1.0, each branch required a separate JourneyMeeting at the splitting point.
Situation according to Realisation Guide 1.0
<JourneyMeeting id="ch:1:JourneyMeeting:91001N-BLS-439-1-45540_91001N-BLS-777-1-47520_..." version="any">
<validityConditions>
<AvailabilityConditionRef ref="ch:1:AvailabilityCondition:c6300" versionRef="any"/>
</validityConditions>
<AtStopPointRef ref="ch:1:ScheduledStopPoint:8507483:3" versionRef="any"/>
<FromJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4171-001_91001N.j26_439" version="any"/>
<ToJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4271-001_91001N.j26_777" version="any"/>
<EarliestTime>13:10:00</EarliestTime>
<LatestTime>13:12:00</LatestTime>
</JourneyMeeting>
<JourneyMeeting id="ch:1:JourneyMeeting:91001N-BLS-440-1-45540_91011N-BLS-149-1-47520_..." version="any">
<validityConditions>
<AvailabilityConditionRef ref="ch:1:AvailabilityCondition:u7600" versionRef="any"/>
</validityConditions>
<AtStopPointRef ref="ch:1:ScheduledStopPoint:8507483:3" versionRef="any"/>
<FromJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4171-001_91001N.j26_440" version="any"/>
<ToJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:6823-001_91011N.j26_149" version="any"/>
<Description>LineChange</Description>
<EarliestTime>13:10:00</EarliestTime>
<LatestTime>13:12:00</LatestTime>
</JourneyMeeting>
Modelling with NeTEx RG 2.0 (ServiceJourneyInterchange)
In RG 2.0, splitting and joining are modelled exclusively using ServiceJourneyInterchange. One interchange per branch is required.
JourneyPart and JourneyPartCouple are not used in the RG 2.0 for
splitting and joining.
Situation with Realisation Guide 2.0
<ServiceJourneyInterchange version="2.0" id="ch:1:ServiceJourneyInterchange:4171-4271-Spiez">
<validityConditions>
<AvailabilityConditionRef ref="ch:1:AvailabilityCondition:c6300" version="any"/>
</validityConditions>
<Description>Flügelung Spiez → Brig</Description>
<StaySeated>true</StaySeated>
<CrossBorder>false</CrossBorder>
<ChangeWithinVehicle>true</ChangeWithinVehicle>
<MaximumWaitTime>PT2M</MaximumWaitTime>
<FromPointRef ref="ch:1:ScheduledStopPoint:8507483:3" version="any"/>
<ToPointRef ref="ch:1:ScheduledStopPoint:8507483:3" version="any"/>
<FromServiceJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4171-001_91001N.j26_439" version="any"/>
<ToServiceJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4271-001_91001N.j26_777" version="any"/>
</ServiceJourneyInterchange>
<ServiceJourneyInterchange version="2.0" id="ch:1:ServiceJourneyInterchange:4171-6823-Spiez">
<validityConditions>
<AvailabilityConditionRef ref="ch:1:AvailabilityCondition:u7600" version="any"/>
</validityConditions>
<Description>Flügelung Spiez → Zweisimmen</Description>
<StaySeated>true</StaySeated>
<CrossBorder>false</CrossBorder>
<ChangeWithinVehicle>true</ChangeWithinVehicle>
<MaximumWaitTime>PT2M</MaximumWaitTime>
<FromPointRef ref="ch:1:ScheduledStopPoint:8507483:3" version="any"/>
<ToPointRef ref="ch:1:ScheduledStopPoint:8507483:3" version="any"/>
<FromServiceJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:4171-001_91001N.j26_440" version="any"/>
<ToServiceJourneyRef ref="ch:1:ServiceJourney:ch:1:sjyid:100015:6823-001_91011N.j26_149" version="any"/>
</ServiceJourneyInterchange>
StaySeated=trueindicates that the passenger does not need to leave the vehicle — the train continues physically as one unit until the splitting point.ChangeWithinVehicle=trueindicates that passengers must move to the correct coach within the train before the split, as each coach continues to a different destination after the splitting point.
The detailed handling is described for the element ServiceJourneyInterchange.