Skip to content

OpArea-Request

Liefert Informationen zu Sharing-Anbietern: Angebote, Bediengebiete (Polygone) und Geometrie des Operating-Bereichs — Bike-, Car-, Scooter-Sharing.

Endpoint

  • Pfad: XML_OPAREA_REQUEST
  • Methode: GET

Obligatorische Parameter

ParameterWerteBeschreibung
opareaSMALL | RADIALSuchmodus: alle Anbieter oder radial um eine Koordinate

Zusätzlich bei opareaSM=RADIAL

ParameterFormatBeschreibung
coordRadius<x>:<y>:WGS84[dd.ddddd][:<Radius_m>]Mittelpunkt und optionaler Radius (Default: 500 m)
opASR1Radius-Suche aktivieren (Pflicht im RADIAL-Modus)

Optionale Parameter

ParameterWerteBeschreibung
vehPId<Index>Anbieter-IDBestimmten Sharing-Anbieter selektieren (wiederholbar: vehPId0, vehPId1, …)
opAreaId<Index>Bediengebiets-IDTeilgebiet eines Anbieters — muss zum selben <Index> wie vehPId<Index> gehören
vehSFBIKE | CAR | MOTORCYCLEFilter auf Fahrzeugart
operatingZoneGeometry1Bediengebiets-Geometrie mit ausgeben

Beispiel-Request

Alle Anbieter im Umkreis von 500 m um eine Koordinate:

GET /XML_OPAREA_REQUEST
    ?outputFormat=JSON
    &opareaSM=RADIAL
    &opASR=1
    &coordRadius=7.0128:51.4513:WGS84[dd.ddddd]:500
    &operatingZoneGeometry=1

Bediengebiete eines konkreten Anbieters (Fahrradsharing):

GET /XML_OPAREA_REQUEST
    ?outputFormat=JSON
    &opareaSM=ALL
    &vehPId0=nextbike
    &vehSF=BIKE
    &operatingZoneGeometry=1

Antwort (Beispiel)

json
{
  "providers": [
    {
      "id": "nextbike",
      "name": "nextbike",
      "vehicleType": "BIKE",
      "areas": [
        {
          "id": "nextbike-city",
          "name": "City",
          "polygon": [
            [51.45, 7.01],
            [51.46, 7.01],
            [51.46, 7.03],
            [51.45, 7.03],
            [51.45, 7.01]
          ]
        }
      ]
    }
  ]
}

JavaScript-Beispiele

js
async function getProvidersNear(lat, lon, radius = 500) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_OPAREA_REQUEST'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    opareaSM: 'RADIAL',
    opASR: '1',
    coordRadius: `${lon}:${lat}:WGS84[dd.ddddd]:${radius}`,
    operatingZoneGeometry: '1'
  })
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}
ts
export async function getAreasForProviders(providerIds: string[]) {
  const base = 'https://server:port/virtuellesVerzeichnis/XML_OPAREA_REQUEST'
  const usp = new URLSearchParams({
    outputFormat: 'JSON',
    opareaSM: 'ALL',
    operatingZoneGeometry: '1'
  })
  providerIds.forEach((id, i) => usp.set(`vehPId${i}`, id))
  const res = await fetch(`${base}?${usp}`)
  if (!res.ok) throw new Error('HTTP ' + res.status)
  return res.json()
}

Hinweise

  • coordRadius nutzt die Reihenfolge x:y — also lon:lat, nicht umgekehrt.
  • Polygone sind geschlossen (erster und letzter Punkt identisch) — bei eigener Geometrie-Verarbeitung berücksichtigen.
  • Für einzelne Fahrzeuge eines Anbieters (Verfügbarkeit, Ladezustand) siehe CoordInfo-Request mit coordReqType=VEHICLEDETAIL.