Lange ruter og mange punkter

Mange TMS- og planlægningssystemer beregner selv ruten (fx med Azure Maps, Google eller TomTom) og har derefter kun brug for afgiften for netop denne rute. De planlagte koordinater sendes derfor som punkter til TollCalc API.

Afsendelse af punkter

POST /api/calculate tager origin, destination og valgfrit via (mellemliggende punkter). Hvert punkt er enten en adresse eller en koordinat i formatet "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" }
  }'

Grænser og serverside-downsampling

Routingmotoren behandler et begrænset antal punkter pr. forespørgsel (i øjeblikket 50 i alt, dvs. start + mål + 48 via). TollCalc håndterer det intelligent:

  • Adresser (som først skal geokodes): højst 48 via. Flere adresser → HTTP 400.
  • Koordinater ("lat;lon"): du må sende flere. TollCalc reducerer kæden serverside til grænsen (downsampling). Start og mål bevares altid, og rutens form prioriteres via en Douglas-Peucker-forudvælgelse. Ingen delstrækning skæres af.

Vigtigt: Downsampling virker kun, hvis alle punkter er koordinater ("lat;lon"). Så snart en adresse er med, gælder grænsen på 48 via fortsat.

Afvigelseskontrol (kvalitetssikring)

Da en reduceret punktkæde teoretisk kan forvanske ruten, kontrollerer TollCalc kvaliteten automatisk: den beregnede rute sammenlignes med dine oprindelige punkter, og den maksimale afvigelse vurderes i forhold til rutelængden.

  • ≤ 2 % → normalt svar; afvigelsen står i feltet geometry_deviation_km.
  • > 2 % → HTTP 400 med error og en forklarende warning.

Eksempel på en afvist forespørgsel:

{
  "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."
}

(API-meddelelsen er i øjeblikket på tysk.)

Ved et vellykket downsample indeholder svaret desuden:

Felt Betydning
route_source "downsampled" (udelades, hvis ingen reduktion var nødvendig)
waypoints_submitted antal indsendte støttepunkter
waypoints_used antal punkter, der faktisk blev routet
geometry_deviation_km maksimal afvigelse af dine punkter fra den beregnede rute

Hvorfor routing med punkter i stedet for map matching?

Man kunne snappe en polylinje til vejnettet via map matching i stedet for selv at route. TollCalc gør det bevidst ikke – af en enkel grund: afgiften afhænger præcist af den kørte rute.

Afgiften varierer efter den konkrete motorvejsstrækning, operatør, tunneler og særlige afgifter, system (åbent/lukket) og land. En anden afkørsel eller en parallel vej giver allerede en forkert afgift. Ruten skal derfor være 100 % korrekt – ikke "nogenlunde".

Resultatet af map matching afhænger dog stærkt af inputkvaliteten:

  • GPS-støj, samplingfrekvens og projektion af de sendte punkter,
  • huller fra tunneler, færger eller manglende signal,
  • "forenklede" eller udglattede polylinjer fra tredjepartssystemer.

Udefra kan vi ikke se, om den sendte geometri virkelig er den kørte rute eller en forenklet/forvansket version. Efter garbage in, garbage out ville vi oplyse en afgift for en rute, kunden aldrig har kørt – uden at det bemærkes.

Derfor den bevidste tilgang:

  • De sendte punkter er bindende punkter, ikke blot "forslag". Routingmotoren skaber en garanteret farbar rute, der passerer hvert punkt i den rigtige rækkefølge.
  • Resultatet er reproducerbart, og afvigelsen fra dine oprindelige punkter kan måles og oplyses.
  • Kvalitetssikringen (downsampling + afvigelseskontrol) står vi for – ikke klienten. Klienten skal ikke levere en 100 %-rute eller køre map matching: den sender sin planlagte rute, vi sørger for den korrekte, afgiftsduelige rute.

Afvejningen er bevidst: hellere en transparent afvisning (HTTP 400 med begrundelse), når de sendte punkter ikke giver en entydig rute, end en stille forkert afgift. Når vores map matching beviseligt holder, tager vi det op igen – indtil da er routing med punkter det pålidelige valg.

Hvornår det bliver svært

Downsampling fungerer meget pålideligt for normale langture. Sværere bliver det ved:

  • Meget lange, flerdages ture – jo længere rute, jo større punktafstand efter downsampling.
  • Distributionsture med mange små stop og sløjfer.
  • Færge- eller læsseafsnit (store huller i GPS-sporet): vejruten kan da afvige betydeligt.
  • GPS-udfald (dårligt fix, tunnel): et enkelt upræcist punkt kan trække afvigelsen op.
  • Bevidst afgiftsfrie ruter: kører motoren en anden vej, ændres afgiften også.

Bedste praksis for TMS-integrationer

  1. Én tur pr. forespørgsel – send ikke positionshistorik for flere dage.
  2. Koordinater i stedet for adresser, når du har mange punkter.
  3. Tæt nok sampling – ca. 1 punkt pr. kilometer er nok.
  4. Rens GPS: fjern upræcise fixes (gpsFix=false, høj accuracy).
  5. Færge-/læsseafsnit som separate forespørgsler.
  6. Log/monitor geometry_deviation_km for at holde øje med datakvaliteten.

Ærlig vurdering

TollCalc beregner afgiften for den rute, routingmotoren kører. Ved tætte koordinatkæder er overensstemmelsen meget høj (i praksis normalt under 1 %), men – i modsætning til map matching – ingen 1:1-garanti. Afvigelseskontrollen gør denne usikkerhed transparent.

→ Beregn afgift nu