IS:connection switch
{{InheritConnection |parentLink = <switch> |selfLink = <connection> |maxocc=3 |bestpractice=As the movement possibilities are given for a fully functional <switch> (true), a simple <crossing> (false and false) and a double switch crossing (true and true; within railML® a crossing with @type=doubleSwitchCrossing) the passable does not need to be defined for these element types. For fully functional switches/crossings only use @passable for each of the IS:crossing connection of a crossing@type="simpleSwitchCrossing" (single slip switch) with either the value combination true and false or false and true.
When setting a switch/crossing into a reduced state in railML®
When you pad(lock) a switch/switch crossing use the combination of state@disabled=true and passable=true/false under the switch/crossing element. The passable for passing over the switch/crossing on the track the switch is placed on (the principal/straight track) is implicit given through the @passable=true/false of the switch connection (the diverging track).
Norwegian vs. German business logic
This section is based on an example from the railML forum.
<switch>@trackContinueCourse always refers to the continuation of the <track> that the switch is placed on. If the switch is placed at that end of a <track>, this is the <connection> in the corresponding <trackBegin> or <trackEnd>. Conversely, the <[[IS:connection_%23course}, gives the course(s) of the other leg(s). The attribute <switch>@trackContinueCourse is bound to the continuation of the track, and you cannot change which leg it refers to without also swapping the connections. So you should not really be asking which leg @<switch>@trackContinueCourse should refer to, but which leg that belongs in trackBegin/connection (or trackEnd/connection) and which leg that belongs in switch/connection.
What is important, to be able to determine the topology, is that the courses given on the same switch are different. In the case of a symmetrical switch, it is maybe most intuitive that one is "left" and the other is "right". If one is considered "straight" then the other should be "left" or "right". If we make a rule that depends on radius, what will we do when the radius is unknown?
To return to the example of the switch 70W02 in the advanced example, here is a simplified code example with some placeholders in CAPITAL letters:
<track id="tr1" type="mainTrack"> <trackTopology> <trackBegin id="tb1" pos="0.0" absPos="6505.0"> <connection id="ctb1" ref="REF1"/> </trackBegin> <!-- ... --> <connections> <switch id="sw1" name="70W02" pos="0.0" absPos="6505.0" trackContinueCourse="TRACK_COURSE"> <connection id="csw1" orientation="incoming" course="SW_COURSE" ref="REF_SW"/> </switch> </connections> <!-- ... --> </trackTopology> <!-- ... --> </track> <track id="tr2" name="1" type="mainTrack"> <trackTopology> <!-- ... --> <trackEnd id="te2" pos="1180.0" absPos="6505.0"> <connection id="cte2" ref="REF2"/> </trackEnd> <!-- ... --> </trackTopology> <!-- ... --> </track> <track id="tr3" name="2" type="secondaryTrack"> <trackTopology> <!-- ... --> <trackEnd id="te3" pos="1180.0" absPos="6505.0"> <connection id="cte3" ref="REF3"/> </trackEnd> <!-- ... --> </trackTopology> <!-- ... --> </track>
With the "German definition" we would have
REF1: cte3
TRACK_COURSE: straight
REF_SW: cte2
SW_COURSE: right
REF2: csw1
REF3: ctb1
With the "Norwegian definition" we get
REF1: cte2
TRACK_COURSE: right
REF_SW: cte3
SW_COURSE: straight
REF2: ctb1
REF3: csw1
So, we are only swapping the two connections. The topology is unchanged, and in both cases the connection from tr1 to tr2 is "right" and the connection from tr1 to tr3 is "straight".
Please also refer to Dev:Connection_between_tracks for information on how to use connections and switches/crossings.|connection]]>@course}, gives the course(s) of the other leg(s). The attribute <switch>@trackContinueCourse is bound to the continuation of the track, and you cannot change which leg it refers to without also swapping the connections. So you should not really be asking which leg @<switch>@trackContinueCourse should refer to, but which leg that belongs in trackBegin/connection (or trackEnd/connection) and which leg that belongs in switch/connection.
What is important, to be able to determine the topology, is that the courses given on the same switch are different. In the case of a symmetrical switch, it is maybe most intuitive that one is "left" and the other is "right". If one is considered "straight" then the other should be "left" or "right". If we make a rule that depends on radius, what will we do when the radius is unknown?
To return to the example of the switch 70W02 in the advanced example, here is a simplified code example with some placeholders in CAPITAL letters:
<track id="tr1" type="mainTrack"> <trackTopology> <trackBegin id="tb1" pos="0.0" absPos="6505.0"> <connection id="ctb1" ref="REF1"/> </trackBegin> <!-- ... --> <connections> <switch id="sw1" name="70W02" pos="0.0" absPos="6505.0" trackContinueCourse="TRACK_COURSE"> <connection id="csw1" orientation="incoming" course="SW_COURSE" ref="REF_SW"/> </switch> </connections> <!-- ... --> </trackTopology> <!-- ... --> </track> <track id="tr2" name="1" type="mainTrack"> <trackTopology> <!-- ... --> <trackEnd id="te2" pos="1180.0" absPos="6505.0"> <connection id="cte2" ref="REF2"/> </trackEnd> <!-- ... --> </trackTopology> <!-- ... --> </track> <track id="tr3" name="2" type="secondaryTrack"> <trackTopology> <!-- ... --> <trackEnd id="te3" pos="1180.0" absPos="6505.0"> <connection id="cte3" ref="REF3"/> </trackEnd> <!-- ... --> </trackTopology> <!-- ... --> </track>
With the "German definition" we would have
REF1: cte3
TRACK_COURSE: straight
REF_SW: cte2
SW_COURSE: right
REF2: csw1
REF3: ctb1
With the "Norwegian definition" we get
REF1: cte2
TRACK_COURSE: right
REF_SW: cte3
SW_COURSE: straight
REF2: ctb1
REF3: csw1
So, we are only swapping the two connections. The topology is unchanged, and in both cases the connection from tr1 to tr2 is "right" and the connection from tr1 to tr3 is "straight".
Please also refer to Dev:Connection_between_tracks for information on how to use connections and switches/crossings.