Dlouhé trasy a mnoho bodů

Mnoho TMS a plánovacích systémů počítá trasu samo (např. s Azure Maps, Google nebo TomTom) a poté potřebuje už jen mýtné pro přesně tuto trasu. Plánované souřadnice se proto předají jako body do TollCalc API.

Předání bodů

POST /api/calculate přijímá origin, destination a volitelně via (mezilehlé body). Každý bod je buď adresa, nebo souřadnice ve formátu "lat;lon".

curl -X POST https://app.tollcalc.eu/api/calculate \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -d '{
    "origin": "48.1374;11.5755",
    "destination": "52.5200;13.4050",
    "via": ["49.0134;12.1016", "50.1109;8.6821"],
    "vehicle": { "weight": 40, "axles": 5, "emission_class": "euro6", "co2_class": "class_1" }
  }'

Limity a serverové zjednodušení

Routing engine zpracuje na požadavek omezený počet bodů (aktuálně 50 celkem, tj. start + cíl + 48 via). TollCalc to řeší chytře:

  • Adresy (které se musí nejprve geokódovat): maximálně 48 via. Více adres → HTTP 400.
  • Souřadnice ("lat;lon"): můžete jich předat více. TollCalc řetězec na serveru automaticky zredukuje na limit (downsampling). Start a cíl zůstávají vždy zachovány a tvar trasy je prioritizován předvýběrem Douglas-Peucker. Žádný úsek se neodřezává.

Důležité: Zjednodušení funguje jen tehdy, když jsou všechny body souřadnice ("lat;lon"). Jakmile je mezi nimi adresa, platí dále limit 48 via.

Kontrola odchylky (zajištění kvality)

Protože zredukovaný řetězec může trasu teoreticky zkreslit, TollCalc kvalitu kontroluje automaticky: vypočtená trasa se porovná s vašimi původními body a maximální odchylka se vyhodnotí vzhledem k délce trasy.

  • ≤ 2 % → normální odpověď; odchylka je v poli geometry_deviation_km.
  • > 2 % → HTTP 400 s error a vysvětlujícím warning.

Příklad zamítnutého požadavku:

{
  "error": "Downsampling-Abweichung zu groß",
  "warning": "Die aus den Stützpunkten berechnete Route weicht zu stark von der Eingabe ab: max. 67.87 km bzw. 2.14 % der Strecke (erlaubt 2 %). Bitte dichtere oder mehr Koordinaten im Format \"lat;lon\" senden."
}

(Zpráva API je momentálně v němčině.)

Při úspěšném zjednodušení odpověď navíc obsahuje:

Pole Význam
route_source "downsampled" (chybí, pokud redukce nebyla potřeba)
waypoints_submitted počet zadaných opěrných bodů
waypoints_used počet skutečně trasovaných bodů
geometry_deviation_km maximální odchylka vašich bodů od vypočtené trasy

Proč routing s body místo map matchingu?

Předanou polylinii by šlo přichytit na silniční síť pomocí map matchingu, místo abychom routovali sami. TollCalc to vědomě nedělá – z jednoduchého důvodu: mýtné závisí přesně na ujeté trase.

Mýtné se liší podle konkrétního úseku dálnice, provozovatele, tunelů a zvláštních mýt, systému (otevřený/uzavřený) a země. Jiný výjezd nebo paralelní silnice znamená špatné mýtné. Trasa tedy musí být 100% správná – ne „přibližně“.

Výsledek map matchingu však silně závisí na kvalitě vstupu:

  • GPS šum, vzorkovací frekvence a projekce předaných bodů,
  • mezery způsobené tunely, trajekty nebo výpadkem signálu,
  • „zjednodušené“ nebo vyhlazené polylinie z cizích systémů.

Zvenčí nedokážeme poznat, zda je předaná geometrie skutečně ujetá trasa, nebo její zjednodušená či zkreslená verze. Podle pravidla garbage in, garbage out bychom pak uvedli mýtné pro trasu, kterou zákazník nikdy nejel – aniž by si toho někdo všiml.

Proto vědomý přístup:

  • Předané body jsou závazné body, nikoli jen „návrhy“. Routing engine z nich vytvoří zaručeně sjízdnou trasu, která projde každým bodem ve správném pořadí.
  • Výsledek je reprodukovatelný a odchylku od vašich původních bodů lze změřit a uvádíme ji.
  • Zajištění kvality (zjednodušení + kontrola odchylky) děláme my – ne klient. Ten nemusí dodávat 100% trasu ani provozovat map matching: předá svou plánovanou trasu, my se postaráme o správnou trasu použitelnou pro mýtné.

Kompromis je vědomý: raději transparentní zamítnutí (HTTP 400 s odůvodněním), když předané body nedávají jednoznačnou trasu, než tiše špatné mýtné. Jakmile náš map matching prokazatelně obstojí, přehodnotíme to – do té doby zůstává routing s body spolehlivou volbou.

Kdy to začne být obtížné

Zjednodušení funguje velmi spolehlivě u běžných dálkových jízd. Obtížnější je u:

  • Velmi dlouhých, vícedenních jízd – čím delší trasa, tím větší rozestup bodů po zjednodušení.
  • Rozvozových jízd s mnoha malými zastávkami a smyčkami.
  • Úseků s trajektem nebo nakládkou (velké mezery v GPS stopě): silniční trasa se pak může výrazně odchýlit.
  • GPS odlehlých hodnot (špatný fix, tunel): jediný nepřesný bod může odchylku zvýšit.
  • Záměrně tras bez mýtného: pokud engine pojede jinudy, změní se i mýtné.

Osvědčené postupy pro TMS integrace

  1. Jedna jízda na požadavek – neposílejte historii pozic z několika dní.
  2. Souřadnice místo adres, když máte mnoho bodů.
  3. Dostatečně husté vzorkování – stačí asi 1 bod na kilometr.
  4. Vyčistěte GPS: odstraňte nepřesné fixy (gpsFix=false, vysoká accuracy).
  5. Úseky s trajektem/nakládkou řešte jako samostatné požadavky.
  6. geometry_deviation_km logujte/sledujte, abyste měli přehled o kvalitě dat.

Poctivé hodnocení

TollCalc počítá mýtné pro trasu, kterou jel routing engine. U hustých souřadnicových řetězců je shoda velmi vysoká (v praxi obvykle pod 1 %), ale – na rozdíl od map matchingu – není zárukou 1:1. Kontrola odchylky tuto nejistotu zviditelňuje.

→ Vypočítat mýtné