Eine gewöhnliche Navi-App sagt dem Fahrer, wo er abbiegen muss. Sie sagt dem Disponenten aber nicht, wo die 4,5-Stunden-Pausengrenze fällt — und, was wichtiger ist, ob es dort einen freien Lkw-Parkplatz gibt. Genau die zweite Frage ist es, die einen Lkw über Nacht auf einer überfüllten Rastanlage stranden lässt, wenn der Tachograf schon auf null steht.
Der Routing-Endpunkt von NAPSPAN beantwortet sie jetzt. Senden Sie die Lenkzeit-Uhr des Fahrers zusammen mit der Route, und die Antwort enthält ein hos[]-Array: jeden Punkt auf dem Korridor, an dem der Fahrer nach dem gewählten Regelwerk eine Pause einlegen oder die Fahrt beenden muss — standardmäßig die EU-Verordnung (EG) Nr. 561/2006 —, die projizierte Ankunftszeit, die gesetzliche Frist sowie die vor dieser Frist erreichbaren Lkw-Parkplätze und Rastanlagen, gezogen aus normalisierten DATEX-II-Daten über die europäischen National Access Points.
So funktioniert es
Es läuft über denselben Aufruf wie das übrige Routing: POST /api/v1/routing/route. Sie senden ohnehin bereits einen Start, ein Ziel und ein truck-Profil. Für die Projektion fügen Sie innerhalb des truck-Objekts einen hos-Block hinzu, der die Uhr des Fahrers zum Abfahrtszeitpunkt beschreibt.
curl -X POST "https://api.napspan.com/api/v1/routing/route" \
-H "X-API-Key: your_key" \
-H "Content-Type: application/json" \
-d '{
"origin": { "lat": 48.1351, "lng": 11.5820 },
"destination": { "lat": 45.4642, "lng": 9.1900 },
"departure_time": "2026-06-08T05:00:00Z",
"truck": {
"profile": "tractor",
"weight_t": 40.0,
"height_m": 4.0,
"axles": 5,
"hos": {
"ruleset": "eu",
"drive_remaining_s": 32400,
"since_break_s": 0
}
},
"enrichment": {
"include_features": ["truck_parking", "rest_areas"]
}
}'
Das ist eine Fahrt München→Mailand über den Brenner für einen ausgeruhten Fahrer nach EU-Recht: 9 Stunden Lenkzeit übrig (32400 s) und null Lenkzeit seit der letzten Pause. Jeder Zähler bedeutet „verbleibende Sekunden“ gegenüber der Begrenzung des genannten Regelwerks.
Die Lenkzeit-Uhr
Das hos-Objekt ist der Zustand des Fahrers, keine feste Richtlinie. Speichern Sie auf einem wiederverwendbaren truck-Profil nur das ruleset — die fahrtbezogenen Zähler werden inline mit jeder Anfrage geliefert und überlagern es.
| Feld | Bedeutung |
|---|---|
ruleset | Das Regelwerk: eu, us oder canada_south. Leer übernimmt den Standard der Deployment-Region (hier EU). |
drive_remaining_s | Verbleibendes Tages-Lenkzeitbudget (EU: 9 h). |
since_break_s | Seit der letzten qualifizierenden Pause aufgelaufene Lenkzeit (EU: eine 45-min-Pause ist nach 4,5 h fällig). |
duty_remaining_s | Budget des Arbeitszeitfensters (im US-Regelwerk genutzt; die EU kennt kein festes Arbeitszeitfenster). |
cycle_remaining_s | Wochen-/Doppelwochenbudget (EU: 56 h/Woche, 90 h/Doppelwoche). |
Jeder weggelassene Zähler wird als „ausgeruhter Fahrer“ gelesen — die volle Begrenzung des Regelwerks. Die Zähler sind intern Pointer, daher unterscheidet sich eine explizite 0 („jetzt gerade keine Lenkzeit mehr“) von „nicht angegeben“.
Die Antwort
Die Projektion hängt an der primären Route als hos[]-Array, neben den warnings[] und features[], die Sie vielleicht schon nutzen.
{
"routes": [
{
"summary": { "distance_m": 492000, "duration_s": 21600 },
"geometry": { "type": "LineString", "coordinates": [ /* ... */ ] },
"hos": [
{
"reason": "break_required",
"distance_along_route_m": 372000,
"projected_time": "2026-06-08T09:30:00Z",
"legal_deadline": "2026-06-08T09:30:00Z",
"feasible": true,
"suggested_stops": [
{ "type": "truck_parking", "distance_along_route_m": 366500,
"properties": { "name": "Raststation Brennersee", "spaces": 60 } },
{ "type": "rest_areas", "distance_along_route_m": 351000,
"properties": { "name": "Area di servizio Trens", "spaces": 34 } }
]
}
]
}
],
"route_id": "rt_3b7e0a91"
}
Jeder Stopp trägt einen reason — die dort greifende Begrenzung —, die distance_along_route_m, an der er liegt, die projected_time, zu der der Fahrer ihn erreicht, und die vom Regelwerk erlaubte legal_deadline. Die vier Gründe:
| Grund | Was ausgelöst wurde |
|---|---|
break_required | Der Fahrer hat die Lenkzeit-seit-Pause-Grenze erreicht und schuldet eine Ruhepause (EU: 45 min nach 4,5 h). |
drive_limit | Die tägliche Lenkzeitbegrenzung ist ausgeschöpft — der Fahrer muss die Fahrt für den Tag beenden. |
duty_window | Das Arbeitszeitfenster schloss vor der Lenkzeitbegrenzung (USA / Kanada). |
cycle_limit | Das Wochen-/Doppelwochenbudget war aufgebraucht. |
Der entscheidende Teil: erreichbare Parkplätze
Zu projizieren, wo die Uhr ausläuft, ist die leichte Hälfte. Die betrieblich nützliche Hälfte ist, ob der Fahrer dort tatsächlich anhalten kann. Jeder hos-Stopp hängt eine suggested_stops[]-Liste an — die Lkw-Parkplätze, Lkw-Rastanlagen und Rastanlagen, die vor der gesetzlichen Frist erreichbar sind, sortiert von „der Frist am nächsten“ zuerst, damit der Fahrer die meiste legale Lenkzeit aus dem Tag holt. Diese Liste stammt aus den normalisierten Parkplatzdaten von NAPSPAN über die europäischen NAPs — denselben DATEX-II-Feeds, die hinter dem Rest der API stehen.
Und das Flag, das keine gewöhnliche Navigations-App ausgibt: feasible. Ist es true, ist mindestens ein legaler Stopp rechtzeitig erreichbar. Ist es false, ist kein legaler Parkplatz vor der Frist erreichbar — ein echtes Compliance-Risiko, das Sie zur Disposition kennen wollen, nicht erst am Straßenrand. (feasible wird ganz weggelassen, wenn die Parkplatzsuche nicht lief, sodass ein fehlendes Flag nie als irreführendes „false“ gelesen wird.)
Die Regelwerke
Heute sind drei Lenkzeit-Regelwerke verfügbar, jedes gegen seine tatsächliche Verordnung umgesetzt:
| Ruleset | Verordnung | Wichtige Grenzen |
|---|---|---|
eu | Verordnung (EG) Nr. 561/2006 | 9 h Lenkzeit, 45-min-Pause nach 4,5 h Lenkzeit, 11 h Tagesruhezeit |
us | 49 CFR 395 (FMCSA, Güterverkehr) | 11 h Lenkzeit, 14-h-Arbeitszeitfenster, 30-min-Pause nach 8 h Lenkzeit, 10 h Tagesruhezeit |
canada_south | SOR/2005-313 (südlich von 60°N) | 13 h Lenkzeit, 14-h-Arbeitszeit- + 16-h-Gesamtfenster, 10 h Tagesruhezeit |
Die EU-Verlängerung auf 10 Stunden Lenkzeit (zweimal wöchentlich) sowie die 56-h-/90-h-Grenzen werden über die Inline-Uhr ausgedrückt (drive_remaining_s, cycle_remaining_s), nicht unterstellt. Das europäische aetr-Regelwerk (für Nicht-EU-AETR-Länder) und das kanadische canada_north sind geplant. Wenn Sie kein Regelwerk setzen, verwendet das EU-Deployment standardmäßig eu.
Wo es hineinpasst
Die Projektion wird auf der bereits vorliegenden Routengeometrie berechnet — reine Projektion über die Polylinie, kein zweiter Routing-Durchlauf. Sie läuft nur für die primäre Route und reitet auf dem Routing-Aufruf mit, den Sie ohnehin tätigen: kein separater Endpunkt, keine separate Gebühr über die Routing-Anfrage selbst hinaus. Routing ist eine Funktion der kostenpflichtigen Pläne mit einer kostenlosen 14-tägigen Testphase.
Kombinieren Sie es mit den Korridor-warnings[] — Sperrungen, Baustellen, mitgliedstaatsspezifische Gewichts- und Maßbeschränkungen —, und eine einzige grenzüberschreitende Anfrage (DE → AT → IT in einer Abfrage) beantwortet drei Fragen zugleich: Darf dieser Lkw diesen Korridor legal befahren, wo wird der Fahrer anhalten müssen, und gibt es dann einen Parkplatz?
Ausprobieren
- API-Dokumentation — vollständige Request- und Response-Referenz für
POST /api/v1/routing/route - Live-Karte — die zugrunde liegenden Daten über die europäischen NAPs erkunden
- Kostenloser API-Schlüssel — keine Karte, 14-tägige Testphase
Route, gesetzliche Pause und Parkplatz planen — in einem Aufruf
Senden Sie die Uhr des Fahrers mit der Route und erhalten Sie jede erforderliche Pause und jeden Stopp zurück, samt der vor jeder Frist erreichbaren Parkplätze. Kostenlose 14-tägige Testphase. Keine Karte.
Kostenlosen API-Schlüssel sichern Karte erkunden