Adding the track side to route=railway relation members

Double-track railway lines have left and right side tracks. See the Hungarian railway code:

1.2.50. Right and left track
On double-track lines, when looking towards the end point, the track on the right hand side is called the right track, the other one is the left track.

This naming convention is probably the same in all countries.

In Hungary, if there are more than two tracks, letters can also be used, for the 3rd track and above:

1.2.125. Multi-track line
Railway lines with more than two tracks shall be called multi-track lines.
On multi-track lines, the naming convention of double-track lines is extended: the additional tracks shall be indicated by the capital letters of the alphabet. Each track shall be named (right, left, A, B, C) by the railway network operator’s central traffic office.

These names are not currently stored in the OSM database, so I would like to suggest the following optional member roles for multi-track route=railway and route=tracks relation sections:

  • for two-track sections:
    • left
    • right
  • additional roles for 2+ track sections:
    • A
    • B
    • etc.

This would make it easier for users to query a section of track (e.g. from the info ‘Hungary, line 30, metre 4100, left track’) in order to pinpoint an exact location, or e.g. visualise rail defects or temporary speed restrictions on a section of the track (I’m actually trying to do the latter now) based on OSM data.

This would be particularly useful where there is a shift in the axis of the tracks, such as on the Hungarian railway line 30 at Budapest-Kelenföld, and the sides are not continuous:

Here the line runs from north to south. Initially the green track is the left track and the yellow one is the right. But in the middle a new railway line (no. 29) stems from the right track, so they both move one to the east. The continuation of the left track (marked with green) becomes the right one (blue) and the purple one becomes the left one. So it would be quite difficult to guess the sides of the tracks, e.g. with a Python script, without these member roles.

What do you think about this idea?

I’ve added this to the route=railway and route=tracks Wiki pages.

In the US, Canada and Mexico, the convention is that multi-track lines are almost always assigned numbers (for example, track #1 and track #2 for a double-track line). Letters are also used in some cases, like at the Newark Liberty Airport station in New Jersey:


We’ve been using railway:track_ref=* to keep track of these. Would railway:track_ref=left|right be sufficient for this purpose?

Roles shouldn’t be freeform text. This is bad data format. The info should be retrieved from railway:track_ref= in members.

I see, that’s different from the system here in Hungary, my bad. It seems that railway:track_ref=* is sufficient in the US, Canada, Mexico and—as it seems to me looking at an official report of ÖBB, also in—Austria, because there are no left and right sides on the open line in those countries, only track numbers that continue through the stations.

A railway track in Hungary can have a track number (railway:track_ref=*) and a track side at the same time. E.g. track 2 in Hegyeshalom is also the right (through) track of line 1. So I don’t think that railway:track_ref=* is sufficient in these cases.

Noted, thanks—I didn’t know about this. In that case, this could be handled with a new country-specific tag for Hungary, as we seem to be the odd ones out. Maybe something like railway:track_side=*?

Personally I don’t understand why railway:track_ref= was invented in the first place. Key:railway:ref - OpenStreetMap Wiki is listed in OpenRailwayMap/Tagging - OpenStreetMap Wiki for other uses. This would allow railway:alt_ref= etc easily. Of course this doesn’t mean a dedicated railway:track_side= can’t be created, but railway:official_ref= , railway:loc_ref= , etc would be more extensible at first.
Does railway:track_side seem awkward for alphabetic =A on multi-track lines? Using “side” doesn’t exactly fit.

Maybe it would be a bit strange. Do you have any other suggestions? Or is railway:alt_ref=* your suggestion?