Geoobject-Request
Liefert die Koordinatengeometrie und die Haltestellen einer Linie bzw. Linienvariante — zur Kartendarstellung.
Endpoint
- Pfad:
XML_GEOOBJECT_REQUEST - Methode: GET
Obligatorische Parameter
| Parameter | Format | Beschreibung |
|---|---|---|
line | <Teilnetz>:<DIVALiniennummer>:<Ergänzung>:<Richtung> | Linien-ID — siehe Line-Input |
Optionale Parameter
| Parameter | Werte | Beschreibung |
|---|---|---|
filterDate | YYYYMMDD | Datum für die Wahl der Linienvariante |
filterStopID | Halte-ID | Nur Abschnitte durch den angegebenen Halt (wiederholbar) |
lineReqType | Bitmaske | Linientyp-Filter — siehe Line-Input |
vSL | 1 | Bedienlinien 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=1GET /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.
filterStopIDmehrfach setzen, um nur bestimmte Abschnitte auszugeben.