Proposed features/Railway

From OpenStreetMap Wiki
Jump to: navigation, search
Status: Abandoned (inactive)
Proposed by: PieSchie
Tagging: railway=*
Applies to: node,way,area
Definition: Konsistent and multi-usable Tag scheme for railways
Rendered as: *
Drafted on:
Proposed on: 08:49, 5 October 2008 (UTC)
RFC start: 08:00, 1 December 2008
Vote start: *
Vote end: *


In the last days there was a lot of discussion about railways and inconsistent Tagging on special types of railways like funicular and rack-rails. Therefore I created a hopefully well-defined tagging-scheme for railways. A Railway-Type itself is independent of gauge or security-guidelines or powered type. It depends on the physics of the track and so the following Keys will be used:

Key: railway

When Mapping a railway the first differentiation should be the visual function of a railway. As highway=* is used for the physical attribution of a street, like motorway, cycleway, residential and does not depend on the types of vehicles driving over it there should be the same scheme for railways. As there are multiple types of railways that are not compatible to each other but are visually distinguishable the main-types of railways are the following:

  • railway=funicular a very steep inclined rail where the only trains can go that are pulled by a rope
  • railway=rack a steep inclined rail where the only trains can go that are using a rack-wheel
  • railway=rail a normal rail where any train can go. Assuming that electricity, security guidelines and gauge work.
  • railway=rollercoaster an attraction-circle of tracks with passive trains that are accelerated by gravity.

The Idea of the very poor differentiation is that when e.g. driving by car and crossing a railway, it is not important from wich system the rails are and there are many combined systems. The railway-tag is something that everyone can map on sight combinded with the key: type

Key: type

  • type=transport - This Railway is mostly for transport use (person and goods)
  • type=attraction - This Railway is used as transport for attraction. Mostly the terminal point is the same as the starting point.
    • scale=10 - optional for attraction-trains the scale of the railway according to normal train size. In this case 10 means 1:10.
  • type=show - This Railway is a show-railway and not meant for any transport at all.
    • scale=10 - optional for show-railways the scale of the railway according to normal train size. In this case 10 means 1:10.

Key: priority

  • priority=primary - These are the rails that are used for long-distance-connections between cities. There are often two or more tracks. Each track is often oneway. Then they should be tagged separately (as dual / multi - carriageway on highways).
  • priority=secondary - These are the sub-net-rails where mostly short-distance-connection rides. The trains stop at nearly every stop and often there is only one track for both directions. On a simple subway/metro/cityline-network there is no secondary network.
  • priority=yard - These rails are only used for rails that goes to a depot, a yard or an engine-house.
  • priority=switch


As service there is the differentiation of train types that are scheduled over a railway. The service-type should only be used if the type is mainly used by this. E.g. in Stuttgart the commuting-railway-tunnel through the city is used 100% for commuting railsways. At night there happens to pass a goods-train or even an ICE through the tunnel. This tunnel is not meant to be tagged as trains=yes. There are the following service types

  • train=yes - There are normal trains on these tracks
  • commuting=yes - There are commuting-railway on these tracks.
  • metro=yes - There are metro-type-railway on these tracks (including subway, metropolitan, stadtbahn, ...)
  • tram=yes - The rails are mostly on a street and used by a tram
  • industrial=yes - The rails are used for industrial transport of goods from a construction-side to a classification-yard or between two construction-sides.

other attributes

I distinguish between railway-based attributes that are used for the railway-description and passenger-based attributes that are used as passenger-information

Railway-based attributes


  • railway=switch - This node on a railway-way is a switch.
    • When mapping track-detailed there are multiple ways starting/ending here. The turn-restrictions should be defined if not identificatable by angle of the tracks.
switch_type=* - The exakt definition of the switch-type (Y, Single_Slip, Double_Slip, Outside_Single, Outside_Double)
    • When mapping line-detailed this node can be a track-interchange switch where trains can change from one track to the other.
switch_type=* - The switch-structure on this line. (Trailing, Facing, Scissors). If more than 2 tracks are given on the line then tracks must be defined like (right-middle) which means there is an interchange in way-direction from the right track to the middle track. The other direction is middle to right.
    • control=* - Attributes - manual, train (remote from train), switch_box (remote from switch_box)
    • ref=* - The number of the switch.
  • railway=signal - The Node where a single is positioned. The Node is at the track for wich the signal is meant. Not at its real position beneath the track
    • ref=* - The number of the signal.
    • control=* - Attributes - manual, switch_box (as at switch)
  • railway=level_crossing - A crossing-Position for other Traffic (pedestrian and vehicles - depending on the road that crosses the rails)
    • crossing:light=yes - if the crossing is equiped with lights on train-aproach
    • crossing:barrier=no/half/full - if the crossing is equiped with a barrier gate that closes on train-aproach.


  • detail=track; line - Gives information about the mapping-details. Track means that every track is mapped, line means that this one osm-way is a multi-track-line.
  • railway=track_ref - Each Track is referenced with a number. At a station the track_reference contains the platform number but a platform. e.g. the platform 3 of Stuttgart Main Station has the track_ref 301, platform 4 has 401.
  • maxspeed=*
  • oneway=yes
  • bridge/tunnel=yes
  • gauge=1435 - The gauge of the track. On multi-gauge-tracks e.g. gauge=1000;1435 is possible
  • power:type=thirdRail/overhead/none/…}
  • protectionsystem=Indusi, PZB, LZB, ETCS1, ETCS2, … Protection systems to give velocity and stop-commands to the train to make an automated slow-down or stop.
  • workrules=* - If there is any work rule the rail is depending on, like in Germany the (EBO or the BOStrab)
  • gradient=* - the %-Value of the incline in way-direction.
  • disused=yes
  • abandoned=yes
  • construction=yes
  • rebuild=yes
  • operator=* - The Organisation that owns this Rails and uses or rents them to some train-company (e.g. Deutsch Bahn - Netz or BVG for Berliner U Bahn)
  • man_made=embankment and man_made=cuttingare man-made-structures where a steep incline goes to the sides of the lines. Embankment is already rendered (top of embankment to the left). Cutting should be rendered the same as embankment where Top cutting is to the left (bottom to the right)


  • railway=yard - Area of a yard
  • railway=line - Area of a line with one or more tracks (equivalent to the area of a river)
  • building=engine_house - A buliding where Trains are repaired or revisioned.
  • building=switch_box - A building where switches and signals are set. There is always a person in a switch_box

Passenger-based attributes


  • railway=station - used as is used now. (Stopping trains and possibility to reclassify. Definition: One or more switches.
  • railway=halt - used as is used now. Just for stopping trains without the possibility to change a track or on one-track-routes let two trains bypass.

Station and halt are not at the track but at a center position of the whole station-complex. There is only one station/halt-node of each station/halt

  • railway=track_halt - A position on a way that defines where a trains stops to embark and disembark passengers or goods. There are multiple track_halts possible for each station/halt
  • railway=entrance - This is the entrance from the public area to the railway-opperators area. The subway-entrance is an elevator or a stairway, at railways the entrance is anything like a gate or just the way to a platform if there is no building.



  • railway=station - The Area including station-building, tracks, train-parking-possibility, ...
  • building=station - A building where People can go in and buy tickets, use shops and wait for trains.
  • railway=platform - The Area where passengers wait for a train and disembark to from a train or embark from to a train


  • railway: rail is rendered as normal rail; rack is rendered with a spiky line (as embankment but on both sides); funicular has a double border-line on one side to show that there is a rope (if possible to render)
  • Type: * should be rendered the same when scale is the same. My proposal is: Rendering down to scale 1:5 where the gauge is about 30cm/1ft.
  • priority and train-type should be rendered differently:


  • train=yes - priority=primary are rendered as black-white thick line (100%)
  • train=yes - priority=secondary are rendered as black-white half-thick line (75%)
  • train=yes - priority=yard are rendered as black-white thin line (50%)
  • rail - industrial= yes is rendered as grey-white and thin line (50%)
  • railway=rail without any other attributes is rendered black-white thick line (as is the current state)


  • rail - commuting=yes is rendered as grey-white thick line (100%)
  • rail - commuting=yes priority=yard is rendered as grey-white half-thick line (50%)

Metro / tram

  • metro=yes and tram=yes with priority=primary/secondary is rendered as black thin line.
  • metro=yes and tram=yes with priority=yard is rendered as black thin dotted line.
  • Rendering Zoomlevel would be like everything visible on high-zoom and when going to low-zoom first *industrial, yard, secondary and and last primary rails disappearing.

Rendering Old Values

  • since the new values do not conflict with the old ones the there is no change with this Features.

Why not make railway:primary/secondary … or railway:train/sub/tram/…

On different Railways there are different classifikations. e.g. there is also a primary/secondary railway on subways/trams, as an access to a yard or engine_house. When also mapping these networks with primary/secondary then a secondary rendering-option is needed as (train=yes or type=train).

When differentiating on railway:rail/light_rail/sub/tram. As there is a discussion about main-lines and sub-lines the attributes are going to spread enormously when generating "primary_rail, secondary_rail, primary_subway, secondary_subway, ...) Furthermore there are cities where a tram is able to change its system and drives (scheduled) on a rail-network, so it should be possible to tag all options and render e.g. the highest option without loosing the knowledge that a tram is allowed to drive over a given rail in a city.

Unless generating a huge set of railway-tags there will always be the need of rendering according to more than only one key.