Routen und voraussichtliche Ankunftszeiten für große Fahrzeuge generieren

Zielgruppe:Dieser Leitfaden richtet sich an Entwickler, die Dienste für die Planung und Durchführung von Fahrten mit Lkw oder anderen großen Fahrzeugen entwickeln. Relevante Anwendungsfälle sind die Berechnung von Fahrtzeiten und Entfernungen, die Berechnung von voraussichtlichen Ankunftszeiten oder die Erstellung von Routen, die von einer Navigationsanwendung verwendet werden.

Inhalt dieses Leitfadens:In diesem Leitfaden wird beschrieben, wie Sie die Routes API mit Large Vehicle Routing verwenden, um Routen, Fahrstrecken, voraussichtliche Fahrzeiten und voraussichtliche Ankunftszeiten anzufordern, die die spezifischen Attribute eines großen Fahrzeugs wie eines Nutzfahrzeugs oder eines Reisebusses berücksichtigen.

Informationen dazu, wie Sie mit der Route Optimization API Berechnungen auf Flottenebene für große Fahrzeuge durchführen, finden Sie in der Dokumentation zur Lkw-Routenplanung mit der Route Optimization API.

Lerninhalte

Sie lernen, wie Sie Folgendes tun:

  • Erstellen Sie eine gültige Routinganfrage.
  • Geben Sie die Fahrzeuginformationen für Ihr reales Fahrzeug an, einschließlich Abmessungen, Gewicht und anderer Merkmale.
  • Interpretieren Sie die Antwort, einschließlich des Routen-Tokens und der Flags für die Reisesicherheit.

Vorbereitung

  1. Ihr Google Cloud-Projekt muss erstellt und die Routes API aktiviert sein.
  2. Ihr Projekt muss für die Routenplanung für große Fahrzeuge bereitgestellt sein. Das Routing für große Fahrzeuge ist nur für eine begrenzte Anzahl von Kunden verfügbar. Wenden Sie sich an uns, um Zugriff anzufordern.

Beschränkungen

Bevor Sie beginnen, sollten Sie sich mit den folgenden Einschränkungen und Anforderungen vertraut machen.

  • Geografische Verfügbarkeit: Die Routenplanung für große Fahrzeuge ist in den 48 zusammenhängenden US-Bundesstaaten (allgemein verfügbar) und in Japan (experimentell) verfügbar. In Alaska, Hawaii und US-Territorien ist die Funktion nicht verfügbar.
  • Fahrerhinweise und Sicherheit Fahrer dürfen sich nicht ausschließlich auf die von dieser API zurückgegebenen Routen verlassen, um sicher oder legal zu fahren. Es kann nicht garantiert werden, dass die Routen für das Fahrzeug geeignet sind. Wenn Fahrer ihnen folgen, können sie Gefahren wie niedrigen Brücken oder Straßen ausgesetzt sein, auf denen große Fahrzeuge verboten sind.
  • Best-Effort-Routen. In einigen Fällen kann die API keine Route finden, die den Reisebeschränkungen vollständig entspricht. Stattdessen wird eine „Best-Effort“-Route zurückgegeben, die möglicherweise dennoch durch eingeschränkte Bereiche führt. In der Antwort der Routes API werden diese Routen im Feld routeRestrictionsPartiallyIgnored deutlich gekennzeichnet. Plane deine Route in solchen Fällen sorgfältig und verwende idealerweise andere Quelldaten. Verwenden Sie eine gemeldete Route nicht als einzige verlässliche Quelle für die Planung oder Navigation.
  • Nicht unterstützte Funktionen: Die Routenplanung für große Fahrzeuge unterstützt Folgendes nicht:
    • Lkw-Mautgebühren
    • Höchstgeschwindigkeit
    • Routenplanung für radioaktive Gefahrgüter
  • Nutzungslimits: Für alle Anfragen gelten die standardmäßigen Limits für Abfragen pro Sekunde.

Anfrage für eine Lkw-Route erstellen

Wenn Sie eine Lkw-Route abrufen möchten, senden Sie eine HTTPS-Anfrage an einen Routes API-Endpunkt mit bestimmten Parametern, die Ihr Fahrzeug beschreiben. Die Konzepte in diesem Abschnitt gelten sowohl für Anfragen für einzelne Routen als auch für Routenmatrizen.

Endpunkte

Für die Lkw-Routenplanung können Sie zwei Endpunkte verwenden:

  • computeRoutes: Berechnet eine einzelne Route zwischen einem Start- und einem Zielort.
  • computeRouteMatrix: Berechnet die Entfernung und Dauer für eine Matrix von Start- und Zielorten, gibt aber keine Polylinie für die Route zurück.

Wichtige Anfrageparameter

Der Anfragetext muss die folgenden Parameter enthalten, um die Lkw-Routenplanung zu aktivieren:

  • travelMode: Setzen Sie diesen Wert auf TRUCK.
  • routingPreference: Setzen Sie diesen Wert auf TRAFFIC_AWARE_OPTIMAL.
  • routeModifiers: Dieses Objekt enthält das vehicleInfo-Objekt, in dem Sie die Attribute Ihres Fahrzeugs definieren. Das vehicleInfo-Objekt wird unten im Detail beschrieben.

Fahrzeugattribute angeben

Wenn Sie eine Anfrage senden möchten, müssen Sie einen Anfragetext mit einem vehicleInfo-Objekt angeben, das Ihr Fahrzeug beschreibt. Diese Informationen sind wie eine Spezifikation, die den physischen Details Ihres realen Fahrzeugs entspricht. Der Dienst benötigt diese Angaben, um Routen zurückzugeben, die Straßenbeschränkungen basierend auf den Attributen Ihres Fahrzeugs berücksichtigen.

Fahrzeugmessungen

Geben Sie das Fahrzeuggewicht in Kilogramm und die Fahrzeugabmessungen in Millimetern an, wie in den Feldnamen angegeben. Die Gesamthöhe muss beispielsweise in Millimetern (totalHeightMm) angegeben werden. Da die Abmessungen von Lkw häufig in Fuß oder Metern angegeben werden, ist möglicherweise eine Einheitenumrechnung erforderlich.

Umrechnung von angloamerikanischen in metrische Maßeinheiten

Wenn Sie von imperialen Einheiten umrechnen, berücksichtigen Sie immer die spezifischen Abmessungen Ihres Fahrzeugs sowie die Standardgrößenbeschränkungen für Straßen und Unterführungen. Dies kann insbesondere bei Bruchwerten wichtig sein. Je nach Größe des tatsächlichen Fahrzeugs kann das Aufrunden eines Bruchwerts zu einer zu restriktiven Routenplanung für das Fahrzeug führen.

Beispiel:

  • Breite: Viele US-Anhänger haben eine Breite von 8' 6", was 2.590,8 mm entspricht. Wenn Sie auf 2.591 mm aufrunden, ist das Fahrzeug größer als 8' 6" und wird auf US-Straßen als übergroßes Fahrzeug eingestuft. Dies würde dann zu einer Route führen, die nach anderen Einschränkungen als beabsichtigt berechnet wurde.
  • Höhe: Eine Route, die unter einer 3,35 m hohen Brücke hindurchführt, ist für einen typischen Sattelzug mit einer Höhe von 4,11 m nicht geeignet. Kleinere Kastenwagen mit einer Höhe von etwa 3 m könnten die Unterführung jedoch passieren. Daher ist es wichtig, die Fahrzeugattribute genau anzugeben.

Ein Diagramm, das die Abmessungen eines Lkw im Vergleich zu den Abmessungen einer Unterführung zeigt

Das folgende Code-Snippet zeigt ein Beispiel für ein vehicleInfo-Objekt:

"vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }

vehicleInfo-Objektfelder

In der folgenden Tabelle sind alle Fahrzeug- und Lastdefinitionen aufgeführt, die Sie mit der Anfrage senden können.

Feld Beschreibung Hinweise / Werte
totalHeightMm Die maximale Höhe des Fahrzeugs. In Millimetern, abgerundet. Weitere Informationen zum Runden finden Sie unter Umrechnung von imperialen in metrische Einheiten.
totalWidthMm Die maximale Breite des Fahrzeugs. In Millimetern, abgerundet.
totalLengthMm Die Gesamtlänge des Fahrzeugs und aller Anhänger. In Millimetern, abgerundet.
totalWeightKg Das zulässige Gesamtgewicht des Fahrzeugs (einschließlich Anhänger und Ladung). In Kilogramm, abgerundet.
totalAxleCount Die Gesamtzahl der Achsen des Fahrzeugs und aller Anhänger. Genau passend.
trailerInfo (optional) Ein Array von Objekten, eines für jeden Trailer. Lassen Sie dieses Feld bei einem Fahrzeug ohne Anhänger, z. B. einem Kastenwagen, leer.
hazardousGoodsTypes (optional) Ein Array, das alle Gefahrgüter an Bord angibt. EXPLOSIVES, GASES, FLAMMABLE, COMBUSTIBLE, ORGANIC, POISON, CORROSIVE, ASPIRATION_HAZARD, ENVIRONMENTAL_HAZARD, OTHER

Feldmasken verwenden

Die besten Ergebnisse erzielen Sie, wenn Sie den Header X-Goog-FieldMask in Ihre Anfrage aufnehmen, um genau die Felder anzugeben, die Sie in der Antwort erhalten möchten. Feldmasken reduzieren die Latenz und sorgen dafür, dass Sie wichtige Beratungsfelder erhalten. Geben Sie in der Feldmaske mindestens routes.travelAdvisory.routeRestrictionsPartiallyIgnored an, da dies angibt, ob für die Route eine oder mehrere Einschränkungen gelten, die für Ihr Fahrzeug relevant sind.

Weitere Informationen zu Feldmasken mit der Routes API finden Sie in diesem Artikel.

Mautstraßen

Wenn Sie mautfreie Routen bevorzugen möchten, geben Sie avoidTolls im Attribut routeModifiers einer Anfrage an. Weitere Informationen zu Routenmodifikatoren finden Sie unter Zu vermeidende Routenmerkmale angeben.

Wenn Sie avoidTolls angeben, ist nicht garantiert, dass in der Antwort mautfreie Routen enthalten sind. In einigen Fällen ist die Nutzung einer Mautstraße erforderlich, um vom Start- zum Zielort zu gelangen. Wenn Sie routes.warnings in die Feldmaske Ihrer Routes API-Anfrage aufnehmen, werden Routen mit Mautstraßen in diesem Feld entsprechend gekennzeichnet.

Andere Routingverhalten

Wenn Sie travelMode auf TRUCK festlegen, optimiert die API die Route automatisch für die Manövrierfähigkeit großer Fahrzeuge. Auf den generierten Routen werden Wendemanöver vermieden und Autobahnen und Schnellstraßen gegenüber kleineren Straßen stark bevorzugt. Sie müssen keine zusätzlichen Parameter oder Modifikatoren festlegen, um diese Verhaltensweisen zu aktivieren.

Einzelne Route mit computeRoutes berechnen

Verwenden Sie den Endpunkt computeRoutes, um eine Lkw-spezifische Route zwischen einem Start- und einem Zielpunkt zu berechnen.

Beispiel für eine computeRoutes-Anfrage

Hier ist eine vollständige curl-Anfrage für einen typischen Sattelzug. Dieses Beispiel enthält den Endpunkt, die Header und den Anfragetext.

curl --location 'https://routes.googleapis.com/directions/v2:computeRoutes' \
--header 'Content-Type: application/json' \
--header 'X-Goog-Api-Key: YOUR_API_KEY' \
--header 'X-Goog-FieldMask: routes.duration,routes.distanceMeters,routes.routeToken,routes.travelAdvisory.routeRestrictionsPartiallyIgnored' \
--data '{
 "origin": {
    "location": {
      "latLng": {
        "latitude": 40.883274,
        "longitude": -74.704574
      }
    }
  },
  "destination": {
    "location": {
      "latLng": {
        "latitude": 40.991920,
        "longitude": -75.183371
      }
    }
  },
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL",
  "routeModifiers": {
    "vehicleInfo": {
      "totalAxleCount": 5,
      "totalHeightMm": 4114,
      "totalLengthMm": 21945,
      "totalWidthMm": 2590,
      "totalWeightKg": 32658,
      "trailerInfo": [{
        "lengthMm": 16154
      }]
    }
  }
}'

computeRoutes-Beispielantwort

Dies ist eine Beispielantwort für die vorherige Anfrage. Beachten Sie, dass das Flag routeRestrictionsPartiallyIgnored im Objekt travelAdvisory nicht enthalten ist. Das bedeutet, dass die Route nicht gekennzeichnet ist und davon ausgegangen wird, dass sie vollständig mit den Attributen des Fahrzeugs kompatibel ist.

{
  "routes": [
    {
      "distanceMeters": 3426,
      "duration": "312s",
      "travelAdvisory": {},
      "routeToken": "CogCCogBChA7b39q54cKGCys_VXaDADjEhgszp8YhZFw0xvzm7SygpvCeIvJ7V0r6XIaJZ6BxNkMa_8HhhqlAci7hYMXi6UCpPgDW-yoAf8gzgHiEYyJAnoiAQU6AQFCB27cD9UCwwdKCMX2Ij7RpxY_eAGqARdUNENZWllLS0tJRGZ2T01QMVptSjRBaxAEGmIKYBIWCAAQAxAGEBMQEhgCQgQaAggFSgIIASIbChdUNENZWmVTc0o0RGZ2T01QMVptSjRBa3ABKAQyJ3RydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnktc29mdCIVAOzExFsGGGfjVIIY7GXjYbPyONS8EiQiInRydWNraW5nOjpzZW1pLXRyYWlsZXItdHJ1Y2staGVhdnk"
    }
  ]
}

computeRoutes-Antwort interpretieren

Eine erfolgreiche Anfrage an den Endpunkt computeRoutes gibt ein JSON-Antwortobjekt mit einer oder mehreren möglichen Routen zurück.

Wichtige Antwortfelder
  • Codierte Routengeometrie: routes.polyline. Damit kann die Route auf einer Karte dargestellt werden.
  • Geschätzte Fahrtdauer: routes.duration (in Sekunden). Für die Dauer von Routen für große Fahrzeuge wird ein neues Modell verwendet, das auf beobachteten Fahrgeschwindigkeiten von tatsächlichen Lkw im Straßennetz trainiert wurde. Sie kann auch verwendet werden, um die voraussichtliche Ankunftszeit zu berechnen, indem die geschätzte Fahrtdauer zur erwarteten Abfahrtszeit addiert wird.
  • Gesamtstrecke der Route: routes.distanceMeters (in Metern).
  • Routentoken: routes.routeToken. Dies ist ein intransparentes Token, das die genaue berechnete Route darstellt. Sie übergeben dieses Token an das Navigation SDK, damit dem Fahrer dieselbe Lkw-spezifische Route angezeigt wird. Weitere Informationen finden Sie in den Leitfäden zum Navigation SDK für Android oder iOS.
Nach Sicherheitswarnungen für die Route suchen

Wenn Sie eine Antwort erhalten, sollten Sie zuerst nach Flags für die Routensicherheit suchen. Wenn eine bereitgestellte Route eine oder mehrere Einschränkungen enthält, die sie für das Fahrzeug ungeeignet machen, ist das Feld travelAdvisory.routeRestrictionsPartiallyIgnored auf true gesetzt.

Dieses Feld dient als Flag, um die Frage zu beantworten: „Wurde diese Route wegen eines potenziellen Problems markiert?“

  • false(oder in der Antwort weggelassen): Die Route ist nicht gemeldet. Das System hat eine Route gefunden, die den in der Anfrage angegebenen Parametern vollständig entspricht.
  • true: Die Route ist markiert. Das System konnte keine vollständig konforme Route finden und hat eine „Best-Effort“-Route zurückgegeben, die möglicherweise nicht sicher oder legal ist. Diese Route muss mit äußerster Vorsicht verwendet werden.

Routenmatrix berechnen (computeRouteMatrix)

Mit dem Endpunkt computeRouteMatrix können Sie die Reisedauer und Entfernungen zwischen vielen Start- und Zielorten effizient vergleichen. Sie können damit beispielsweise den Lkw finden, der einem neuen Abholort am nächsten ist. Sobald Sie den Fahrzeugursprung identifiziert haben, den Sie für Ihren Zweck verwenden möchten, können Sie eine computeRoutes-Anfrage senden, um die Routendetails und das Routentoken für das vorgeschlagene Fahrzeug abzurufen.

Wenn Sie computeRouteMatrix verwenden möchten, geben Sie die vehicleInfo in jedem origin-Objekt an, anstatt im Stamm der Anfrage.

Beispiel für eine computeRouteMatrix-Anfrage

{
  "origins": [
    {
      "waypoint": { "location": { "latLng": { "latitude": 32.77, "longitude": -96.85 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    },
    {
      "waypoint": { "location": { "latLng": { "latitude": 33.61, "longitude": -112.11 }}},
      "routeModifiers": { "vehicleInfo": { /* ...vehicle attributes... */ } }
    }
  ],
  "destinations": [
    { "waypoint": { "location": { "latLng": { "latitude": 35.02, "longitude": -106.64 }}}},
    { "waypoint": { "location": { "latLng": { "latitude": 29.77, "longitude": -95.40 }}}}
  ],
  "travelMode": "TRUCK",
  "routingPreference": "TRAFFIC_AWARE_OPTIMAL"
}

computeRouteMatrix-Beispielantwort

Die Antwort ist ein Array, in dem jedes Objekt die Dauer und die distanceMeters für ein Start-Ziel-Paar enthält.

[
  {
    "originIndex": 0,
    "destinationIndex": 1,
    "status": {},
    "distanceMeters": 392372,
    "duration": "14037s",
    "condition": "ROUTE_EXISTS"
  },
  { ... }
]

Nächste Schritte