Skip to content

CoordInfo-Request

Räumliche Abfrage nach Objekten in einer Umgebung — Halte, POIs, Parkobjekte, Sharing-Fahrzeuge, GIS-Flächen. Zwei Such­modi: kreisförmig um eine Koordinate oder in einer Bounding-Box. Zusätzlich Detail-Abruf für einzelne Sharing-Fahrzeuge.

Endpoint

  • Pfad: XML_COORD_REQUEST
  • Methode: GET

Obligatorische Parameter

Such­raum (mindestens eine Variante)

Kreisförmige Suche:

ParameterFormatBeschreibung
coord<x>:<y>:WGS84[dd.ddddd]Mittelpunkt

Bounding-Box-Suche:

ParameterFormatBeschreibung
boundingBox(Flag ohne Wert)Box-Modus aktivieren
boundingBoxLU<x>:<y>:WGS84[dd.ddddd]Linke obere Ecke
boundingBoxRL<x>:<y>:WGS84[dd.ddddd]Rechte untere Ecke

Objekttyp-Filter (mindestens einer)

ParameterWerteBeschreibung
inclFilter1Filterschema aktivieren
type_<FilterIndex>ANY | BUS_POINT | ENTRANCE | GIS_AREA | GIS_POINT | INFRASTRUCTURE | LINE | POI_AREA | POI_POINT | STOP | STREETObjekttyp pro Filterblock — siehe Objekttypen

<FilterIndex> ist eine fortlaufende Ganzzahl; pro Filterblock lassen sich radius_<i>, exclMOT_<i>, etc. ergänzen.

Optionale Parameter

Such­raum-Feintuning

ParameterFormatBeschreibung
radius_<FilterIndex>MeterRadius je Filterblock (nur Kreis-Suche)
maxGanzzahlMaximale Treffer (Default: unbegrenzt)
deadlineYYYYMMDDBezugsdatum für Objekt­gültigkeit (Default: heute)
mapNameOutputKoordinatensystemAusgabe-Koordinatensystem (meist WGS84[dd.ddddd])

Halte-Filter

ParameterFormatBeschreibung
exclMOT_<FilterIndex>MOT-IDs, :-separiertHalte bestimmter Verkehrsmittel ausschließen
inclMOT_<FilterIndex>MOT-IDs, :-separiertNur Halte bestimmter Verkehrsmittel
fltrParkObj1Nur Halte innerhalb markierter Parkzonen

POI-Filter

ParameterFormatBeschreibung
exclLayers_<FilterIndex>GIS-Layer-Namen, :-separiertLayer ausschließen
inclDrawClasses_<FilterIndex>Draw-Class-IDs, :-separiertNur bestimmte Zeichenklassen
purposeGanzzahlPOI nach Zweck filtern
inclPOIH_<FilterIndex>Hierarchie-IDs, :-separiertPOI-Hierarchien einschließen

Parking-Filter

ParameterWerteBeschreibung
parkingSearchMethodBBBounding-Box-Suche für Parkobjekte
parkingBB1Parking-BB aktivieren
parkingBBLU, parkingBBRL<x>:<y>:WGS84[dd.ddddd]Ecken der Parking-BB
parkingObjectTypeBitmaske: -1=alle, 1=Parkhaus, 2=Parkplatz, 4=Einzel­platz, 8=Zone, 32=LadesäulenArt der Parkobjekte
parkingChargefree | payKostenfilter
parkingBikeRideInclusionINCLUDE | EXCLUDE | EXCLUSIVEB&R-Objekte
parkingParkRideInclusionINCLUDE | EXCLUDE | EXCLUSIVEP&R-Objekte
parkObjInfo1Parkobjekt-Details mit ausgeben
parkObjInfoRealtime1Echtzeit-Auslastung (setzt parkObjInfo=1 voraus)

Sharing-Vehicle-Detail-Modus

Einzelnes Sharing-Fahrzeug im Detail abfragen:

ParameterWerteBeschreibung
coordReqTypeVEHICLEDETAILDetail-Modus aktivieren
vehDetail1Detail-Ausgabe aktivieren
vehSMIDSuchmodus: Einzel­fahrzeug über ID
SharingRefId<ID>:<OperatorID>:<OpAreaID>Fahrzeug-Kennung (:-separiert)
vehAtStation1Auch an Stationen stehende Fahrzeuge
vehSpec1Technische Spezifikation ausgeben
vehAvail1Verfügbarkeit ausgeben
vehEngineTypeCOMBUSTION | ELECTRIC | HYBRIDAntriebsart-Filter (wiederholbar)
vehLocType<Index>CLASSIC | FREEFLOATER | STATION | POSITIONVerortungs-Typ-Filter (wiederholbar)
vehSFCAR | BIKE | MINIVEHICLE | TAXIFahrzeugart-Filter (wiederholbar)

Beispiel-Requests

Halte und POIs im Umkreis von 400 m, max. 50 Treffer:

GET /XML_COORD_REQUEST
    ?outputFormat=JSON
    &coord=7.0128:51.4513:WGS84[dd.ddddd]
    &inclFilter=1
    &type_0=STOP&radius_0=400
    &type_1=POI_POINT&radius_1=400
    &max=50

P&R-Parkobjekte in einer Bounding-Box, mit Echtzeit:

GET /XML_COORD_REQUEST
    ?outputFormat=JSON
    &boundingBox
    &boundingBoxLU=6.9:51.5:WGS84[dd.ddddd]
    &boundingBoxRL=7.1:51.4:WGS84[dd.ddddd]
    &inclFilter=1&type_0=ANY
    &parkingParkRideInclusion=INCLUDE
    &parkObjInfo=1&parkObjInfoRealtime=1

Detail zu einem Sharing-Fahrzeug:

GET /XML_COORD_REQUEST
    ?outputFormat=JSON
    &coordReqType=VEHICLEDETAIL
    &vehDetail=1&vehSM=ID
    &SharingRefId=BIKE-4711:nextbike:essen
    &vehSpec=1&vehAvail=1

Antwort (Beispiel)

json
{
  "pins": [
    {
      "type": "STOP",
      "id": "de:05113:9009",
      "name": "Essen Hbf",
      "coord": { "lat": 51.4513, "lon": 7.0128 },
      "motTypes": "0,1,4,5,13"
    },
    {
      "type": "POI_POINT",
      "name": "Museum Folkwang",
      "coord": { "lat": 51.4520, "lon": 7.0100 }
    }
  ]
}

JavaScript-Beispiele

js
async function coordInfoAround(lat, lon, { radius = 400, types = ['STOP', 'POI_POINT'] } = {}) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    coord: `${lon}:${lat}:WGS84[dd.ddddd]`,
    inclFilter: '1'
  })
  types.forEach((t, i) => {
    usp.set(`type_${i}`, t)
    usp.set(`radius_${i}`, String(radius))
  })
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
js
async function coordInfoInBounds({ minLat, minLon, maxLat, maxLon }) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    inclFilter: '1',
    type_0: 'STOP',
    boundingBoxLU: `${minLon}:${maxLat}:WGS84[dd.ddddd]`,
    boundingBoxRL: `${maxLon}:${minLat}:WGS84[dd.ddddd]`
  })
  usp.append('boundingBox', '')
  const res = await fetch(`${base}?${usp}`)
  return res.json()
}
ts
export async function getVehicleDetail(sharingRefId: string) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_COORD_REQUEST'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    coordReqType: 'VEHICLEDETAIL',
    vehDetail: '1',
    vehSM: 'ID',
    SharingRefId: sharingRefId,
    vehSpec: '1',
    vehAvail: '1'
  })
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}

Hinweise

  • URL-Pfad: XML_COORD_REQUEST — nicht XML_COORDINFO_REQUEST.
  • Reihenfolge der Koordinaten­angabe ist x:y (also lon:lat) — anders als in vielen JSON-Responses.
  • Der Filter-Index ist nur innerhalb eines Requests eindeutig; für eine Karte mit Halten und POIs genügen zwei Blöcke mit type_0 und type_1.
  • Für Umkreis­suche ohne Typ-Filter: inclFilter=1&type_0=ANY&radius_0=<m> genügt — liefert alle Objektarten.