Quote:* Simple switch crossings are complex and they should be handled like double switch crossings.
Did you mean 'Single' instead of 'Simple'?
Here is a code sample on how it would look when we would add the 'crossingPart' in the case of a single switch crossing:
<switchIS id="swi1" type="singleSwitchCrossing">
<straightBranch netRelationRef="nr1"/>
<straightBranch netRelationRef="nr2"/>
<turningBranch netRelationRef="nr3"/>
</switchIS>
<switchIS id="swi1_part1" type="switchCrossingPart" branchCourse="left" continueCourse="right" belongsToParent="swi1">
<spotLocation intrinsicCoord="1.0" netElementRef="le1" applicationDirection="normal" />
<leftBranch netRelationRef="nr3"/>
<rightBranch netRelationRef="nr2"/>
</switchIS>
// following element is invalid railML3.3
// but proposed to be made possible railML3.4
<switchIS id="swi1_part2" type="crossingPart" branchCourse="left" continueCourse="right" belongsToParent="swi1">
<spotLocation intrinsicCoord="1.0" netElementRef="le4" applicationDirection="reverse" />
<leftBranch netRelationRef="nr4"/>
<rightBranch netRelationRef="nr2"/>
</switchIS>
Here's a schematic:
https://link.excalidraw.com/readonly/4yJOs2oj204neDP9jatl
Quote:what about the idea of introducing an attribute defining the crossing angle in reference to the oriented netElement, where the switch/crossing center point is located on?
I think it's a good idea to look at it from this angle (pun intended). But defining the crossing angle might go further than what's required to fulfill the use case. We essentially need to say which branch is left of which other branch.
[Updated on: Mon, 08 December 2025 10:38]
Report message to a moderator