Skip to content

Platforms

Which platforms does a station have, how long and how high are they, and which tracks do they serve? The API combines OpenStreetMap platforms with the platform edges ERA’s RINF register publishes per operational point, and returns them with every value’s source.

GET /v1/places/{id} returns a place with its platforms. The id comes from any place result (/v1/places, /v1/places/autocomplete, /v1/places/lookup, /v1/places/reverse); in the path, / may be written as : (response abridged):

Terminal window
curl -H "Authorization: Bearer $RAIL_API_KEY" \
"https://api.routing.gleisklar.de/v1/places/lookup?code=AA" # → "id": "node/4711"
curl -H "Authorization: Bearer $RAIL_API_KEY" \
"https://api.routing.gleisklar.de/v1/places/node:4711"
{
"id": "node/4711", "name": "Hamburg-Altona", "kind": "station", "ds100": "AA", "uopid": "DE000AA",
"stations": ["node/4711"],
"operational_points": [{ "uopid": "DE000AA", "name": "Hamburg-Altona", "type": "station" }],
"platforms": {
"count": 8,
"max_length_m": 386,
"heights_cm": [76, 96],
"tracks": ["1", "2", "3", "4", "5", "6", "7", "8", "11", "12"],
"platforms": [
{
"id": "way/4712", "ref": "11;12", "tracks": ["11", "12"], "tracks_source": "OSM platform",
"length_m": 386, "length_source": "RINF", "height_cm": 76, "height_source": "RINF",
"rinf_platform_ids": ["R112", "R12"]
}
],
"rinf_platforms": [
{ "uopid": "DE000AA", "track": "12", "platform_id": "R12", "length_m": 367, "height_cm": 76, "osm_platforms": ["way/4712"] }
]
},
…
}

(Illustrative values.) Search results stay small; the platforms are only in /v1/places/{id}.

  • count: the OSM platforms (or, where OSM has none, the RINF platform edges).
  • max_length_m, heights_cm: the longest platform (null if unknown) and the distinct heights above rail (cm, ascending; in Germany 55, 76 and 96 are standard).
  • platforms: one entry per OSM platform, with its tracks, length and height, each with its source, and the RINF platform edges linked to it.
  • rinf_platforms: every RINF platform edge of the station’s operational points, with the OSM platforms it is linked to (empty if none matched).

A platform object (GET /v1/infra/objects/way:…) has under properties.derived: length_m, height_cm and tracks (each with a *_source), station and station_id, and rinf_platforms (the linked RINF edges with uopid, track, platform_id, length_m, height_cm). A station object has its place’s ID under derived.place and the same platforms summary as the place.

ValueSource, in order
stationthe nearest OSM station or halt within 500 m
tracksthe platform’s own railway:track_ref, ref or local_ref (OSM platform; in Germany a platform’s ref is its track numbers), else the railway:track_ref of the OSM tracks running alongside it, within 10 m and parallel (OSM track)
lengthRINF lengthOfPlatform of the linked edges (the longest), else OSM length (OSM tag), else the OSM geometry (OSM geometry: a line’s length, an area’s longest extent)
heightRINF platformHeight of the linked edges, else OSM height (OSM tag; metres, 0.76; written as 76 or 760 mm it is read as cm or mm)

A RINF platform edge belongs to a track of an operational point; it is linked to the OSM platforms of the station that operational point belongs to (by DS100 code) on the same track number. Some large German stations number their tracks internally in RINF (Hamburg Hbf: 211, 305, …); their edges don’t match the public track numbers in OSM and are listed unlinked.

const [altona] = (await api.lookup("AA")).results
const place = await api.place(altona.id) // node/… is accepted as is
console.log(place.platforms.max_length_m, place.platforms.heights_cm)

Station search shows each station’s platform summary; the inspect tab lists the platforms of a station, with links to each platform object, and a platform’s length, height, tracks and station.