From railML 2 Wiki
Revision as of 10:55, 21 February 2024 by RailML Orga Ontology (talk | contribs) (made prettier)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Scheme description / Schemenbeschreibung

Position of crossSection in the XML-Tree / Position von crossSection im XML-Baum

Multiplicity / Anzahl


Semantics / Bedeutung

A <crossSection> defines parameters of crossSections. This element provides a link from a track to one or more ocps, that are located along itself. These references are needed for operational purposes.

Attributes of crossSection / Attribute von crossSection

  • id: XML-file-wide unique, machine-interpretable identity, required for later referencing that element internally. For a detailed explanation see Dev:identities.
    XML-Datei-weit eindeutige, maschineninterpretierbare Identität, die für die spätere interne Referenzierung dieses Elements erforderlich ist. Für eine detaillierte Erklärung siehe Dev:identities.
  • code (introduced with version 2.1): Machine-interpretable string (e.g. an abbreviation) used for identification of the object across exchange partners, usecase specific uniqueness constraints may apply. Please see our description of the differences between id, code and human-readable identifiers.
    Maschineninterpretierbare Zeichenkette (z.B. Abkürzung), die zur Identifizierung des Objekts auch bei Austauschpartnern verwendet wird, wobei spezifische Eindeutigkeitsbeschränkungen gelten können. Bitte beachten Sie unsere Erläuterung zu den Unterschieden zwischen id, code and menschenlesbaren Kennzeichnungen.
  • name: Established, human-readable short string, giving the object a name. Not intended for machine interpretation, please see our notice on human interpretable data fields.
    Etablierte, menschenlesbare kurze Zeichenkette, die das Objekt benennt. Nicht zur maschinellen Interpretation bestimmt, siehe Hinweise zu menschenlesbaren Datenfeldern.
  • description: Human-readable, more detailed description as addition to the name. It should give additional explanations or hints to the contents of this element. Not intended for machine interpretation, please see our notice on human interpretable data fields.
    Menschenlesbare, detailliertere Beschreibung als Ergänzung zu name. Sie soll zusätzliche Erläuterungen oder Hinweise auf den Inhalt dieses Elements geben. Nicht zur maschinellen Interpretation bestimmt, siehe Hinweise zu menschenlesbaren Datenfeldern.


  • xml:lang (introduced with version 2.1): This is a unique identifier of language. It uses basically the language standard IETF BCP 47 (external link) which may be different to ISO 639-1 (external link) or ISO 639-2 (external link). For mapping hints see relation to other standards (external link).
    This defines the language used for name and description. Use <additionalName> to provide a name and/or description in other languages.}

  • pos: This is the position on a track defined as distance from its start (trackBegin) regardless the "absolute mileage" in @absPos.
    Das ist die Position des Elements auf einem Track i.S. der realen Entfernung zum trackBegin. Sie ist damit unabhängig von der mit absPos modellierten Strecken-Kilometrierung.
🗒️ For an explanation of the differences between @pos and @absPos see <mileageChange>
  • absPos: This is the position on a track as absolute mileage/chainage.
    Das ist die Position des Elements im Referenzsystem der Strecken-Kilometrierung.
🗒️ For an explanation of the differences between @pos and @absPos see <mileageChange>
  • absPosOffset (deprecated with version 2.1): The semantics of this attribute aren't very clear. It seems to be redundant to the definitions with mileageChanges in "overlapping regions".
  • type Possible values are:
  • station An area defined by one or more station boundaries, where an exit main signal on a remote controled line, or a manually given signal on a line without remote control, signals whether the next block is free. A station is a place where operational trains can begin and end operations.
  • block on operational point where the spacing of trains is monitored; can be a block signal (mainly unstaffed and automated) or a block post (mainly staffed).
  • autoblock autoblocking signals
  • other:anything: Any value that does not fit any value from the previous enumeration list, fulfilling the constraint: at minimum two characters, whitespace is not allowed. Please, apply Dev:usingAny accordingly.
  • ocpCenterSide (introduced with version 2.4) relative direction starting from the relevant track towards the "operational center" of the OCP.
    possible values:
  • left "operational center" is on the left side of the ocp.
OcpCenterSide = left
  • right "operational center" is on the right side of the ocp.
OcpCenterSide = right
  • above "operational center" is above cross section. It is used for multilevel railway stations.
  • below "operational center" is below cross section. It is used for multilevel railway stations.
  • ahead "operational center" is ahead cross section. It is used for the end stations and the train moving towards the operational center.
  • behind "operational center" is behind cross section. It is used for the end stations and the train moving away from the operational center.
  • none "operational center" is not at the station.
  • ocpTrackID (deprecated with version 2.2) for defining platforms, please use the <platformEdge> element instead
  • ocpRef: This refers to the id attribute of the associated <ocp> element.
  • dir: (deprecated with version 2.2) This defines the validity of crossSection along the track. Possible values are:
  • none: crossSection has no direction restriction.
  • up: This denotes the direction from the <trackBegin> to the <trackEnd> (increasing relative position values).
  • down: This goes opposite to up (decreasing relative position values).
  • both: crossSection is valid in both directions.
  • unknown: crossSection is restricted to a certain direction, but this direction is not known.

Syntactic Constraints / Syntaktische Beschränkungen

  • id: xs:ID, required
    a string, starting with a letter (a..zA..Z) or an underscore (_),
    followed by a non-colonized and non-spaced string consisting of letters, digits, points (.), dashes (-) or underscores (_)
  • code: xs:string, optional
  • name: xs:string, optional
  • description: xs:string, optional
  • xml:lang: xs:language, language identification, optional

  • pos: tLengthM (xs:decimal, 6 fraction digits, length value measured in meter); required; must be greater than or equal to zero, less than or equal to the track's length
  • absPos: tLengthM (xs:decimal, 6 fraction digits, length value measured in meter); optional
  • absPosOffset: xs:decimal, 6 fraction digits, length value measured in meter; optional
  • dir: xs:string, generic type for direction statements: enumeration up, down, unknown, none, both; optional
  • type optional
  • ocpCenterSide restriction of xs:string, optional

Best practice & Examples / Empfohlene Anwendung & Beispiele

The description of the railML® infrastructure specifies a list of tracks and operation control points (ocp) separately. Tracks have a crossSection list to indicate which track has which ocp. Consider two examples based on the Example data (link to the railML® website) section.

Example I

Consider railML® 2.3 example of Middle Rhine Railway by GPSinfradat (link to the railML® website). The purpose of this snippet is to represent the possibility to get from the track tr26301 to Koblenz, Königsbach and Rhens stations ("railway station" has "Bahnhof" (BF) German translation) which can be seen on the map. Its source is


View/edit list on the separate source page.

Identificator AbsPos OCP Geographic Coordinate
Line Track (in metres) Name Designator Type Latitude Longitude
2630 1 91232 Bf Koblenz Hbf KKO Station 50,350834 7,589025
2630 1 94353 Bf Königsbach (b Kapellen-Stolzenfels) KKOB Station 50,323351 7,586081
2630 1 99821 Bf Rhens KRHE Station 50,281444 7,620582

This code example defines <crossSection> instances at the Koblenz Hbf, Königsbach (b Kapellen-Stolzenfels), Rhens stations and others. For example track tr26301 has ocp ocpKKO named Bf Koblenz Hbf and located at coordinate 91232.

      <track id="tr26301" code="2630" type="mainTrack">
            <crossSection id="cs263011" pos="182" type="station" absPos="91232" ocpRef="ocpKKO">
              <geoCoord coord="50.350834 7.589025" epsgCode="urn:ogc:def:crs:EPSG::4326"/>
            <crossSection id="cs263012" pos="3303" type="station" absPos="94353" ocpRef="ocpKKOB">
              <geoCoord coord="50.323351 7.586081" epsgCode="urn:ogc:def:crs:EPSG::4326"/>
            <crossSection id="cs263013" pos="8771" type="station" absPos="99821" ocpRef="ocpKRHE">
              <geoCoord coord="50.281444 7.620582" epsgCode="urn:ogc:def:crs:EPSG::4326"/>
      <ocp id="ocpKKO" name="Bf Koblenz Hbf" type="operationalName" xml:lang="de">
        <propOperational operationalType="station"/>
        <propService passenger="true"/>
        <designator entry="KKO" register="RL100"/>
      <ocp id="ocpKKOB" name="Bf Königsbach (b Kapellen-Stolzenfels)" type="operationalName" xml:lang="de">
        <propOperational operationalType="station"/>
        <designator entry="KKOB" register="RL100"/>
      <ocp id="ocpKRHE" name="Bf Rhens" type="operationalName" xml:lang="de">
        <propOperational operationalType="station"/>
        <propService passenger="true"/>
        <designator entry="KRHE" register="RL100"/>

Example II

Consider railML® 2.2 example of East Saxony railway network by FBS (link to the railML® website).


This code example defines <crossSection> instances at the Dresden-Neustadt Stw. 1/4, ZSig E block post, Dresden Olbrichtplatz, Dresden Industriegelände Anst and others (should be read from the bottom-up). Where Zsig is short for Zwischensignal (Wiki banner.png) (intermediate signal).

The figure shows the Driver's Timetable that can be generated by iPLAN Fahrplanbearbeitungssystem (FBS) (timetable processing system). Driver's Timetable includes operating points (column 3a), their location (column 3b), maximum allowed speed, and so on. According to the German railway train management rules Konzernrichtlinie 408.

The code presents a list of crossSections belonging to the tr_80.6212_1 track. crossSection has an ocpRef reference to ocp (column 3a of the figure) and a location attribute (column 3b of the figure). For example, the track tr_80.6212_1 has the ocp "ocp_DN_G" named "Dresden-Neustadt Stw. 1/4", and located at the coordinate "101400" (101.4).

<track id='tr_80.6212_1' name='DN-DG' type='mainTrack'>
      <crossSection id='trn_DN_G_80.6212_1' pos='700' absPos='101400' ocpRef='ocp_DN_G'/>
      <crossSection id='trn_DN_E_80.6212_1' pos='1110' absPos='100990' ocpRef='ocp_DN_E'/>
      <crossSection id='trn_DOLB_80.6212_1' pos='1585' absPos='100515' ocpRef='ocp_DOLB'/>
      <crossSection id='trn_DN_C_80.6212_1' pos='1810' absPos='100290' ocpRef='ocp_DN_C'/>
      <crossSection id='trn_DIN_80.6212_1' pos='2000' absPos='100100' ocpRef='ocp_DIN'/>
  <ocp id='ocp_DN_G' name='Dresden-Neustadt Stw. 1/4' type='operationalName'>
    <propOperational orderChangeable='false' ensuresTrainSequence='false'/>
      <summary hasHomeSignals='false' hasStarterSignals='false' hasSwitches='false'/>
    <area zip='01097'/>
    <designator register='RL100' entry='DN  G'/>

Notes / Anmerkungen

General information on positioning

Positive pos values describe the distance from the track's begin. The track length is derived from the pos value in <trackEnd>.

The absolute mileage refered to by absPos is usually found on technical drawings of the track layout or on mileage posts next to the track.

Open issues / Offene Punkte/Pendenzen

Not yet described. / Noch nicht beschrieben.