Dev:Double and single switch crossing

From railML 3 Wiki
Revision as of 15:46, 5 August 2024 by RailML Orga Ontology (talk | contribs) (fixed code at "combination of switches and crossing")
Jump to navigation Jump to search

This page was requested by [tickets 1]. A railway crossing is a point where two tracks cross each other and either enable trains to move from one track to the other or not.

In railML® 3 <switchIS> element is used to describe “switchable” railway crossings, e.g. single and double switch crossings, see Figure 1. They enable trains to move from one track to the other.

Figure 1 - railML® 3 crossing types

Simple crossings do not enable trains to move from one track to the other. They are described with <crossing> element of railML® 3.

As single element

Below you can see a source code of a double switch crossing description.

1  <infrastructure id="is_01">
2   <topology>
3       <netElements>
4           <netElement id="ne21">
5               <relation ref="nr_ne21ne79_dsw317"/>
6               <relation ref="nr_ne21ne77_dsw317"/>
7               <relation ref="nr_ne21ne94_dsw317"/>
8               <associatedPositioningSystem id="ne21_aps01">
9                   <intrinsicCoordinate id="ne21_aps01_ic01"
10                                       intrinsicCoord="0">
11                      <geometricCoordinate positioningSystemRef="gps01"
12                                           x="2760.000"
13                                           y="-150.000"/>
14                  </intrinsicCoordinate>
15                  <intrinsicCoordinate id="ne21_aps01_ic02"
16                                       intrinsicCoord="1">
17                      <geometricCoordinate positioningSystemRef="gps01"
18                                           x="3870.000"
19                                           y="-150.000"/>
20                      <linearCoordinate positioningSystemRef="loc-1"
21                                        measure="5.15"/>
22                  </intrinsicCoordinate>
23              </associatedPositioningSystem>
24          </netElement>
25          <netElement id="ne77">
26              <relation ref="nr_ne21ne77_dsw317"/>
27              <relation ref="nr_ne77ne79_dsw317"/>
28              <relation ref="nr_ne77ne94_dsw317"/>
29              <associatedPositioningSystem id="ne77_aps01">
30                  <intrinsicCoordinate id="ne77_aps01_ic01"
31                                       intrinsicCoord="0">
32                      <geometricCoordinate positioningSystemRef="gps01"
33                                           x="2760.000"
34                                           y="0.000"/>
35                  </intrinsicCoordinate>
36                  <intrinsicCoordinate id="ne77_aps01_ic02"
37                                       intrinsicCoord="0.5">
38                      <geometricCoordinate positioningSystemRef="gps01"
39                                           x="3720.000"
40                                           y="-0.000"/>
41                  </intrinsicCoordinate>
42                  <intrinsicCoordinate id="ne77_aps01_ic03"
43                                       intrinsicCoord="1">
44                      <geometricCoordinate positioningSystemRef="gps01"
45                                           x="3870.000"
46                                           y="-150.000"/>
47                      <linearCoordinate positioningSystemRef="loc-1"
48                                        measure="5.15"/>
49                  </intrinsicCoordinate>
50              </associatedPositioningSystem>
51          </netElement>
52          <netElement id="ne79">
53              <relation ref="nr_ne21ne79_dsw317"/>
54              <relation ref="nr_ne77ne79_dsw317"/>
55              <relation ref="nr_ne79ne94_dsw317"/>
56              <associatedPositioningSystem id="ne79_aps01">
57                  <intrinsicCoordinate id="ne79_aps01_ic01"
58                                       intrinsicCoord="0">
59                      <geometricCoordinate positioningSystemRef="gps01"
60                                           x="3870.000"
61                                           y="-150.000"/>
62                      <linearCoordinate positioningSystemRef="loc-1"
63                                        measure="5.15"/>
64                  </intrinsicCoordinate>
65                  <intrinsicCoordinate id="ne79_aps01_ic02"
66                                       intrinsicCoord="1">
67                      <geometricCoordinate positioningSystemRef="gps01"
68                                           x="4020.000"
69                                           y="-300.000"/>
70                      <linearCoordinate positioningSystemRef="loc-1"
71                                        measure="5.25"/>
72                  </intrinsicCoordinate>
73              </associatedPositioningSystem>
74          </netElement>
75          <netElement id="ne94">
76              <relation ref="nr_ne21ne94_dsw317"/>
77              <relation ref="nr_ne77ne94_dsw317"/>
78              <relation ref="nr_ne79ne94_dsw317"/>
79              <associatedPositioningSystem id="ne94_aps01">
80                  <intrinsicCoordinate id="ne94_aps01_ic01"
81                                       intrinsicCoord="0">
82                      <geometricCoordinate positioningSystemRef="gps01"
83                                           x="4465.730"
84                                           y="-150.000"/>
85                  </intrinsicCoordinate>
86                  <intrinsicCoordinate id="ne94_aps01_ic02"
87                                       intrinsicCoord="1">
88                      <geometricCoordinate positioningSystemRef="gps01"
89                                           x="3870.000"
90                                           y="-150.000"/>
91                      <linearCoordinate positioningSystemRef="loc-1"
92                                        measure="5.15"/>
93                  </intrinsicCoordinate>
94              </associatedPositioningSystem>
95          </netElement>
96      </netElements>
97      <netRelations>
98          <netRelation id="nr_ne21ne79_dsw317"
99                       positionOnA="1"
100                      positionOnB="0"
101                      navigability="Both">
102             <elementA ref="ne21"/>
103             <elementB ref="ne79"/>
104         </netRelation>
105         <netRelation id="nr_ne21ne77_dsw317"
106                      positionOnA="1"
107                      positionOnB="1"
108                      navigability="None">
109             <elementA ref="ne21"/>
110             <elementB ref="ne77"/>
111         </netRelation>
112         <netRelation id="nr_ne21ne94_dsw317"
113                      positionOnA="1"
114                      positionOnB="1"
115                      navigability="Both">
116             <elementA ref="ne21"/>
117             <elementB ref="ne94"/>
118         </netRelation>
119         <netRelation id="nr_ne77ne79_dsw317"
120                      positionOnA="1"
121                      positionOnB="0"
122                      navigability="Both">
123             <elementA ref="ne77"/>
124             <elementB ref="ne79"/>
125         </netRelation>
126         <netRelation id="nr_ne77ne94_dsw317"
127                      positionOnA="1"
128                      positionOnB="1"
129                      navigability="Both">
130             <elementA ref="ne77"/>
131             <elementB ref="ne94"/>
132         </netRelation>
133         <netRelation id="nr_ne79ne94_dsw317"
134                      positionOnA="0"
135                      positionOnB="1"
136                      navigability="None">
137             <elementA ref="ne79"/>
138             <elementB ref="ne94"/>
139         </netRelation>
140     </netRelations>
141 </topology>
142 <functionalInfrastructure>
143     <tracks>
144         <track id="trk3"
145                mainDirection="both"
146                type="mainTrack"
147                infrastructureManagerRef="ou_01">
148             <name name="track3"
149                   language="en"/>
150             <linearLocation id="trk3_lloc01"
151                             applicationDirection="both">
152                 <associatedNetElement keepsOrientation="true"
153                                       netElementRef="ne94"/>
154             </linearLocation>
155             <designator register="_Example"
156                         entry="TRACK track3"/>
157             <length value="7.855"
158                     type="physical"/>
159             <trackBegin ref="bus5"/>
160             <trackEnd ref="dsw317"/>
161         </track>
162         <track id="trk27"
163                mainDirection="both"
164                type="mainTrack"
165                infrastructureManagerRef="ou_01">
166             <name name="track27"
167                   language="en"/>
168             <linearLocation id="trk27_lloc01"
169                             applicationDirection="both">
170                 <associatedNetElement keepsOrientation="true"
171                                       netElementRef="ne77"/>
172             </linearLocation>
173             <designator register="_Example"
174                         entry="TRACK track27"/>
175             <length value="1172.132"
176                     type="physical"/>
177             <trackBegin ref="swi55"/>
178             <trackEnd ref="dsw317"/>
179         </track>
180         <track id="trk30"
181                mainDirection="both"
182                type="mainTrack"
183                infrastructureManagerRef="ou_01">
184             <name name="track30"
185                   language="en"/>
186             <linearLocation id="trk30_lloc01"
187                             applicationDirection="both">
188                 <associatedNetElement keepsOrientation="true"
189                                       netElementRef="ne21"/>
190             </linearLocation>
191             <designator register="_Example"
192                         entry="TRACK track30"/>
193             <length value="1110.000"
194                     type="physical"/>
195             <trackBegin ref="swi312"/>
196             <trackEnd ref="dsw317"/>
197         </track>
198         <track id="trk33"
199                mainDirection="both"
200                type="mainTrack"
201                infrastructureManagerRef="ou_01">
202             <name name="track33"
203                   language="en"/>
204             <linearLocation id="trk33_lloc01"
205                             applicationDirection="both">
206                 <associatedNetElement keepsOrientation="false"
207                                       netElementRef="ne79"/>
208             </linearLocation>
209             <designator register="_Example"
210                         entry="TRACK track33"/>
211             <length value="0.100"
212                     type="physical"/>
213             <trackBegin ref="swi316"/>
214             <trackEnd ref="dsw317"/>
215         </track>
216     </tracks>
217     <switchesIS>
218         <switchIS id="dsw317"
219                   type="doubleSwitchCrossing">
220             <name name="Sw07"
221                   language="en"/>
222             <spotLocation id="dsw317_loc-1"
223                           netElementRef="ne79"
224                           applicationDirection="reverse"
225                           intrinsicCoord="0.0000">
226                 <linearCoordinate positioningSystemRef="loc-1"
227                                   lateralSide="both"
228                                   measure="5.15"/>
229             </spotLocation>
230             <designator register="_Example"
231                         entry="SLIP SWITCH Sw07"/>
232             <straightBranch netRelationRef="nr_ne77ne79_dsw317"
233                             radius="0"/>
234             <straightBranch netRelationRef="nr_ne21ne94_dsw317"
235                             radius="0"/>
236             <turningBranch netRelationRef="nr_ne21ne79_dsw317"
237                            branchingSpeed="60"
238                            joiningSpeed="60"
239                            radius="500"/>
240             <turningBranch netRelationRef="nr_ne77ne94_dsw317"
241                            branchingSpeed="60"
242                            joiningSpeed="60"
243                            radius="500"/>
244         </switchIS>
245     </switchesIS>
246 </functionalInfrastructure>
247</infrastructure>

Topological layer of a “switchable” crossing

To describe a double switch crossing at the topological level, at least four net elements must be defined (ellipses) to go through the crossing in a “turning” branch ‒ from track 27 to track 3 and from track 30 to track 33 ‒ and “straight” one ‒ from track 27 to track 33 and from track 30 to track 3. Please note that railway switch description makes use of only branching and continue branches for its description, while the switchable crossing makes use of only straight and turning branches.

railML® 3 double switch crossing as single element

The condensed relations matrix for this case is presented in Table 1.

Table 1 Condensed relations matrix for a double switch crossing

{

Single switch crossing

The above description of a double switch crossing was presented. However, railML® 3 also allows for the description of a single switch one.

Single switch crossing is a combination of a simple crossing, switch and connecting tracks used to guide a train from one straight track to another as well as going straight across. It allows going in 6 directions. The only change needed in the source code is to switch the navigability of one of the relations referred from <turningBranch> to “None”.

Comparison with railML2

According to [1] in the railML® 2 wiki, there are three ways to describe a crossing: with 4, 3 or 2 tracks. In railML3 it is also possible to merge let's say ne21 and ne94 into one track. Yet the topology layer remains the same.

Furthermore, in railML® 2 the crossing would belong to track 30 or there would be two crossings defined for track 30 and 27. In this example, the crossing is located at track 33. But it is also possible to locate the crossing at tracks 30 and 27 in railML® 3.

According to [1] in the railML® 2 wiki, the navigability of straight branches is described implicitly with the combination of “incoming” and “outgoing” attributes. In railML3 navigability is defined explicitly by a corresponding attribute.

Scope

In railML® 2 <crossing> is used to describe double, single switch crossings as well as simple crossings.

In railML® 3 <switchIS> is used to describe double, single switch crossings. <crossing> is only used for simple crossings.

As a combination of switches and crossing

The purpose of this example is twofold. It shall teach newcomers the principles of modelling topologies with railML3. As for the proficient users, this tutorial aims to provide a common way to describe switchable railway crossings, e.g. for certification purposes.

A railway crossing is a point where two tracks cross each other and either enable trains to move from one track to the other or not.

In railML® 3 the element <switchIS> is used to describe “switchable” railway crossings, e.g. single and double switch crossings, see Figure 1. They enable trains to move from one track to the other.

Simple crossings do not enable trains to move from one track to the other. They are described with the <crossing> element of railML® 3.

Below you can see the source code of a double switch crossing. Please refer to “Example data” of railML.org website for an example of a linear positioning system definition. Below code snippet below deliberately misses these, as well as some other references for the sake of space reasons (this section is already very-very long).

1  <infrastructure id="is_01">
2     <topology>
3       <netElements>
4         <netElement id="ne30">
5           <associatedPositioningSystem id="ne30_aps01">
6             <intrinsicCoordinate id="ne30_aps01_ic01"
7                                  intrinsicCoord="0"/>
8             <intrinsicCoordinate id="ne30_aps01_ic02"
9                                  intrinsicCoord="1">
10             <linearCoordinate positioningSystemRef="loc-1"
11                               measure="5.15"/>
12           </intrinsicCoordinate>
13         </associatedPositioningSystem>
14       </netElement>
15       <netElement id="ne27">
16         <associatedPositioningSystem id="ne27_aps01">
17           <intrinsicCoordinate id="ne27_aps01_ic01"
18                                intrinsicCoord="0"/>
19           <intrinsicCoordinate id="ne27_aps01_ic03"
20                                intrinsicCoord="1">
21             <linearCoordinate positioningSystemRef="loc-1"
22                               measure="5.15"/>
23           </intrinsicCoordinate>
24         </associatedPositioningSystem>
25       </netElement>
26       <netElement id="ne33">
27         <associatedPositioningSystem id="ne33_aps01">
28           <intrinsicCoordinate id="ne33_aps01_ic01"
29                                intrinsicCoord="0">
30             <linearCoordinate positioningSystemRef="loc-1"
31                               measure="5.15"/>
32           </intrinsicCoordinate>
33           <intrinsicCoordinate id="ne33_aps01_ic02"
34                                intrinsicCoord="1">
35             <linearCoordinate positioningSystemRef="loc-1"
36                               measure="5.25"/>
37           </intrinsicCoordinate>
38         </associatedPositioningSystem>
39       </netElement>
40       <netElement id="ne3">
41         <associatedPositioningSystem id="ne3_aps01">
42           <intrinsicCoordinate id="ne3_aps01_ic01"
43                                intrinsicCoord="0"/>
44           <intrinsicCoordinate id="ne3_aps01_ic02"
45                                intrinsicCoord="1">
46             <linearCoordinate positioningSystemRef="loc-1"
47                               measure="5.15"/>
48           </intrinsicCoordinate>
49         </associatedPositioningSystem>
50       </netElement>
51     </netElements>
52     <netRelations>
53       <netRelation id="nr_ne30ne33_dsw317"
54                    positionOnA="1"
55                    positionOnB="0"
56                    navigability="Both">
57         <elementA ref="ne30"/>
58         <elementB ref="ne33"/>
59       </netRelation>
60       <netRelation id="nr_ne30ne27_dsw317"
61                    positionOnA="1"
62                    positionOnB="1"
63                    navigability="None">
64         <elementA ref="ne30"/>
65         <elementB ref="ne27"/>
66       </netRelation>
67       <netRelation id="nr_ne30ne3_dsw317"
68                    positionOnA="1"
69                    positionOnB="1"
70                    navigability="Both">
71         <elementA ref="ne30"/>
72         <elementB ref="ne3"/>
73       </netRelation>
74       <netRelation id="nr_ne27ne33_dsw317"
75                    positionOnA="1"
76                    positionOnB="0"
77                    navigability="Both">
78         <elementA ref="ne27"/>
79         <elementB ref="ne33"/>
80       </netRelation>
81       <netRelation id="nr_ne27ne3_dsw317"
82                    positionOnA="1"
83                    positionOnB="1"
84                    navigability="Both">
85         <elementA ref="ne27"/>
86         <elementB ref="ne3"/>
87       </netRelation>
88       <netRelation id="nr_ne33ne3_dsw317"
89                    positionOnA="0"
90                    positionOnB="1"
91                    navigability="None">
92         <elementA ref="ne33"/>
93         <elementB ref="ne3"/>
94       </netRelation>
95     </netRelations>
96   </topology>
97   <functionalInfrastructure>
98     <switchesIS>
99       <switchIS id="dsw317"
100               type="doubleSwitchCrossing">
101       <name name="Sw07"
102             language="en"/>
103       <spotLocation id="dsw317_loc-1" netElementRef="ne3">
104         <linearCoordinate positioningSystemRef="loc-1"
105                              measure="5.15"/>
106       </spotLocation>
107       <spotLocation id="111"netElementRef="ne30">
108         <linearCoordinate positioningSystemRef="loc-1"
109                              measure="5.15"/>
110       </spotLocation>
111       <designator register="_Example"
112                   entry="SLIP SWITCH Sw07"/>
113       <straightBranch netRelationRef="nr_ne27ne33_dsw317"
114                       radius="0"/>
115       <straightBranch netRelationRef="nr_ne30ne3_dsw317"
116                       radius="0"/>
117       <turningBranch netRelationRef="nr_ne30ne33_dsw317"
118                      branchingSpeed="60"
119                      joiningSpeed="60"
120                      radius="500"/>
121       <turningBranch netRelationRef="nr_ne27ne3_dsw317"
122                      branchingSpeed="60"
123                      joiningSpeed="60"
124                      radius="500"/>
125     </switchIS>
126     <switchIS id="sw317a"
127               continueCourse="left"
128               branchCourse="right"
129               type="switchCrossingPart"
130               belongsToarent="dsw317">
131       <name name="sw317a"
132             language="en"/>
133       <spotLocation id="sw317a_sloc01"
134                     netElementRef="ne30"
135                     applicationDirection="reverse"
136                     intrinsicCoord="0.0000">
137         <linearCoordinate positioningSystemRef="loc-1"
138                              measure="5.15"/>
139       </spotLocation>
140       <leftBranch netRelationRef="nr_ne30ne3_dsw317"
141                   branchingSpeed="60"
142                   joiningSpeed="40"
143                   radius="0"/>
144       <rightBranch netRelationRef="nr_ne30ne33_dsw317"
145                    branchingSpeed="40"
146                    joiningSpeed="40"
147                    radius="500"/>
148     </switchIS>
149     <switchIS id="sw317b"
150               continueCourse="left"
151               branchCourse="right"
152               type="switchCrossingPart"
153               belongsToarent="dsw317">
154       <name name="sw317b"
155             language="en"/>
156       <spotLocation id="swi312_sloc01"
157                     netElementRef="ne30"
158                     applicationDirection="normal"
159                     intrinsicCoord="0.0000">
160         <linearCoordinate positioningSystemRef="loc-1"
161                              measure="5.15"/>
162       </spotLocation>
163       <leftBranch netRelationRef="nr_ne27ne3_dsw317"
164                   branchingSpeed="60"
165                   joiningSpeed="60"
166                   radius="-500"/>
167       <rightBranch netRelationRef="nr_ne30ne3_dsw317"
168                    branchingSpeed="60"
169                    joiningSpeed="60"
170                    radius="0"/>
171     </switchIS>
172   </switchesIS>
173   <tracks>
174     <track id="trk3"
175            mainDirection="both"
176            type="mainTrack"
177            infrastructureManagerRef="ou_01">
178       <name name="track3"
179             language="en"/>
180       <linearLocation id="trk3_lloc01"
181                       applicationDirection="both">
182         <associatedNetElement keepsOrientation="true"
183                               netElementRef="ne3"/>
184       </linearLocation>
185       <designator register="_Example"
186                   entry="TRACK track3"/>
187       <length value="7.855"
188               type="physical"/>
189       <trackBegin ref="bus5"/>
190       <trackEnd ref="dsw317"/>
191     </track>
192     <track id="trk27"
193            mainDirection="both"
194            type="mainTrack"
195            infrastructureManagerRef="ou_01">
196       <name name="track27"
197             language="en"/>
198       <linearLocation id="trk27_lloc01"
199                       applicationDirection="both">
200         <associatedNetElement keepsOrientation="true"
201                               netElementRef="ne27"/>
202       </linearLocation>
203       <designator register="_Example"
204                   entry="TRACK track27"/>
205       <length value="1172.132"
206               type="physical"/>
207       <trackBegin ref="swi55"/>
208       <trackEnd ref="dsw317"/>
209     </track>
210     <track id="trk30"
211            mainDirection="both"
212            type="mainTrack"
213            infrastructureManagerRef="ou_01">
214       <name name="track30"
215             language="en"/>
216       <linearLocation id="trk30_lloc01"
217                       applicationDirection="both">
218         <associatedNetElement keepsOrientation="true"
219                               netElementRef="ne30"/>
220       </linearLocation>
221       <designator register="_Example"
222                   entry="TRACK track30"/>
223       <length value="1110.000"
224               type="physical"/>
225       <trackBegin ref="swi312"/>
226       <trackEnd ref="dsw317"/>
227     </track>
228     <track id="trk33"
229            mainDirection="both"
230            type="mainTrack"
231            infrastructureManagerRef="ou_01">
232       <name name="track33"
233             language="en"/>
234       <linearLocation id="trk33_lloc01"
235                       applicationDirection="both">
236         <associatedNetElement keepsOrientation="false"
237                               netElementRef="ne33"/>
238       </linearLocation>
239       <designator register="_Example"
240                   entry="TRACK track33"/>
241       <length value="0.100"
242               type="physical"/>
243       <trackBegin ref="swi316"/>
244       <trackEnd ref="dsw317"/>
245     </track>
246   </tracks>
247 </functionalInfrastructure>
248</infrastructure>

Topological layer of a switchable crossing

To describe a “switchable” railway crossing at the topological level, at least four net elements must be defined (ellipses) to go through the crossing in a “turning” direction ‒ from track 27 to track 3 and from track 30 to track 33 ‒ and “direct” one ‒ from track 27 to track 33 and from track 30 to track 3.

railML® 3 double switch crossing as three elements

Functional layer of switchable crossing

The functional layer consists of three elements linked by hierarchical relation @belongsToParent and @branchCourse. To describe the orientation of a crossing user should define two additional switches referencing from <*branch> children with the same relations as the crossing.

The application direction of a crossing is “both”. For a crossing @continueCourse and @branchCourse attributes should not be used. However additional switches compensate for this limitation.

As was stated before switches should have a spot location at the net element of a switch beginning. In this case, sw317a is located at ne3, and sw317b is located at ne30.

Crossing then should be located with two spot locations so that both ne3 and ne30 are covered.

On the other hand, if the crossing is located with one spot location then the recommendation “switches should have spot location at the net element of a switch beginning” is violated.

Single switch crossing

Single switch crossing is a combination of a simple crossing, switch and connecting tracks used to guide a train from one straight track to another as well as going straight across. It allows going in 6 directions. The required changes are as follows:

‒ switch the navigability of one of the relations referred from <turningBranch> to “None”;

<turningBranch> definition needs to be removed

‒ one of the additional <switchIS> needs to be removed

Comparison with railML2

According to [1] in the railML® 2 wiki, there are three ways to describe a crossing: with 4, 3 or 2 tracks. In railML3 it is also possible to merge let's say the netElements ne30 and ne3 into one track. Yet the topology layer remains the same. This is done by referencing both netElements when defining the linearLocation of the track.

According to [1] in the railML® 2 wiki, the navigability of branches is described implicitly (@passable=” true” is not defined) with the combination of “incoming” and “outgoing” attributes. In railML® 3 navigability is defined explicitly by additional relation element.

Scope

In railML® 2 <crossing> is used to describe double, single switch crossings as well as simple crossings. In railML® 3 <switchIS> is used to describe double, single switch crossings. <crossing> element is only used for simple crossings.

References

Affected Tickets