Skip to content

Geoobject-Request

Liefert die Koordinatengeometrie und die Haltestellen einer Linie bzw. Linienvariante — zur Kartendarstellung.

Endpoint

  • Pfad: XML_GEOOBJECT_REQUEST
  • Methode: GET

Obligatorische Parameter

ParameterFormatBeschreibung
line<Teilnetz>:<DIVALiniennummer>:<Ergänzung>:<Richtung>Linien-ID — siehe Line-Input

Optionale Parameter

ParameterWerteBeschreibung
filterDateYYYYMMDDDatum für die Wahl der Linienvariante
filterStopIDHalte-IDNur Abschnitte durch den angegebenen Halt (wiederholbar)
lineReqTypeBitmaskeLinientyp-Filter — siehe Line-Input
vSL1Bedienlinien je Halt mit ausgeben
boundingBox(Flag)Räumliche Einschränkung aktivieren
boundingBoxLU<x>:<y>:WGS84[dd.ddddd]Linke obere Ecke
boundingBoxRL<x>:<y>:WGS84[dd.ddddd]Rechte untere Ecke

Siehe auch gemeinsame Parameter.

Beispiel-Request

GET /XML_GEOOBJECT_REQUEST
    ?outputFormat=JSON
    &line=apb:05136:12b:R
    &vSL=1
GET /XML_GEOOBJECT_REQUEST
    ?outputFormat=JSON
    &line=apb:05136:12b:R
    &boundingBox
    &boundingBoxLU=6.9:51.5:WGS84[dd.ddddd]
    &boundingBoxRL=7.1:51.4:WGS84[dd.ddddd]

Antwort (Beispiel)

json
{
  "geometry": [[51.45, 7.01], [51.46, 7.03]],
  "stops": [
    { "id": "de:05513:1001", "name": "Essen Hbf", "servingLines": [{ "name": "196" }] }
  ]
}

JavaScript-Beispiele

js
async function getLineGeometry(line, { filterDate, filterStopIDs = [], vSL = false } = {}) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_GEOOBJECT_REQUEST'
  const usp = new URLSearchParams({ outputFormat: 'JSON', line })
  if (filterDate) usp.set('filterDate', filterDate)
  if (vSL) usp.set('vSL', '1')
  for (const id of filterStopIDs) usp.append('filterStopID', id)
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
js
async function addLineToMap(map, line) {
  const data = await getLineGeometry(line)
  const coords = data.geometry.map(([lat, lon]) => [lon, lat])
  map.addSource('line', {
    type: 'geojson',
    data: { type: 'Feature', geometry: { type: 'LineString', coordinates: coords } }
  })
  map.addLayer({
    id: 'line',
    type: 'line',
    source: 'line',
    paint: { 'line-color': '#0af', 'line-width': 3 }
  })
}

Hinweise

  • Koordinaten kommen in [lat, lon]-Reihenfolge — Mapbox/GeoJSON erwarten [lon, lat]. Invertieren vor der Kartenanzeige.
  • Für einzelne Abschnitte zwischen zwei Halten ist StopSeqCoord-Request präziser; dieser Endpoint liefert die komplette Linie.
  • filterStopID mehrfach setzen, um nur bestimmte Abschnitte auszugeben.