Rutas largas y muchos puntos

Muchos TMS y sistemas de planificación calculan la ruta por sí mismos (p. ej. con Azure Maps, Google o TomTom) y luego solo necesitan el peaje de exactamente esa ruta. Para ello se envían las coordenadas planificadas como puntos a la API de TollCalc.

Envío de puntos

POST /api/calculate acepta origin, destination y opcionalmente via (puntos intermedios). Cada punto es una dirección o una coordenada con el formato "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" }
  }'

Límites y downsampling en el servidor

El motor de enrutamiento procesa un número limitado de puntos por solicitud (actualmente 50 en total, es decir, origen + destino + 48 via). TollCalc lo gestiona de forma inteligente:

  • Direcciones (que primero deben geocodificarse): como máximo 48 via. Más direcciones → HTTP 400.
  • Coordenadas ("lat;lon"): puede enviar más. TollCalc reduce la cadena en el servidor hasta el límite (downsampling). El origen y el destino siempre se conservan, y la forma de la ruta se prioriza mediante una preselección de Douglas-Peucker. No se recorta ningún tramo.

Importante: El downsampling solo se aplica si todos los puntos son coordenadas ("lat;lon"). En cuanto haya una dirección, sigue aplicándose el límite de 48 via.

Control de desviación (aseguramiento de la calidad)

Como una cadena reducida podría distorsionar la ruta, TollCalc comprueba la calidad automáticamente: la ruta calculada se compara con sus puntos originales y la desviación máxima se evalúa en relación con la longitud de la ruta.

  • ≤ 2 % → respuesta normal; la desviación aparece en el campo geometry_deviation_km.
  • > 2 % → HTTP 400 con error y un warning explicativo.

Ejemplo de una solicitud rechazada:

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

(El mensaje de la API está actualmente en alemán.)

Tras un downsampling correcto, la respuesta incluye además:

Campo Significado
route_source "downsampled" (ausente si no fue necesaria reducción)
waypoints_submitted número de puntos enviados
waypoints_used número de puntos realmente ruteados
geometry_deviation_km desviación máxima de sus puntos respecto a la ruta calculada

¿Por qué enrutamiento con puntos y no map matching?

Se podría ajustar una polilínea al viario mediante map matching en lugar de enrutar nosotros mismos. TollCalc no lo hace deliberadamente, por una razón sencilla: el peaje depende exactamente de la ruta recorrida.

El peaje varía según el tramo concreto de autopista, el operador, los túneles y peajes especiales, el sistema (abierto/cerrado) y el país. Otra salida o una carretera paralela ya supone un peaje incorrecto. Por tanto, la ruta debe ser 100 % correcta, no "aproximada".

Sin embargo, el resultado del map matching depende mucho de la calidad de la entrada:

  • ruido GPS, tasa de muestreo y proyección de los puntos enviados,
  • huecos por túneles, ferris o pérdida de señal,
  • polilíneas "simplificadas" o suavizadas de sistemas de terceros.

Desde fuera no podemos saber si la geometría enviada es realmente la ruta recorrida o una versión simplificada/distorsionada. Siguiendo el principio garbage in, garbage out, informaríamos de un peaje de una ruta que el cliente nunca recorrió, sin que se note.

Por eso el enfoque deliberado:

  • Los puntos enviados son puntos vinculantes, no meras "sugerencias". El motor crea una ruta garantizada como transitable que pasa por cada punto en el orden correcto.
  • El resultado es reproducible y la desviación respecto a sus puntos originales es medible y se informa.
  • El aseguramiento de la calidad (downsampling + control de desviación) lo asumimos nosotros, no el cliente. El cliente no tiene que entregar una ruta 100 % ni ejecutar map matching: envía su ruta planificada y nosotros nos ocupamos de la ruta correcta y apta para peaje.

El compromiso es deliberado: preferimos un rechazo transparente (HTTP 400 con motivo) cuando los puntos enviados no dan una ruta inequívoca, antes que un peaje silenciosamente incorrecto. Cuando nuestro map matching sea demostrablemente sólido, lo revisaremos; hasta entonces, el enrutamiento con puntos sigue siendo la opción fiable.

Cuándo resulta difícil

El downsampling es muy fiable en viajes de larga distancia normales. Resulta más difícil en:

  • Viajes muy largos de varios días: cuanto más larga la ruta, mayor la separación entre puntos tras el downsampling.
  • Rutas de reparto con muchas paradas pequeñas y bucles.
  • Tramos de ferry o carga (grandes huecos en el trayecto GPS): la ruta por carretera puede desviarse notablemente.
  • Valores atípicos de GPS (mal fix, túnel): un único punto impreciso puede elevar la desviación.
  • Rutas deliberadamente sin peaje: si el motor elige otra carretera, el peaje también cambia.

Buenas prácticas para integraciones TMS

  1. Un viaje por solicitud: no envíe el histórico de posiciones de varios días.
  2. Coordenadas en lugar de direcciones cuando tenga muchos puntos.
  3. Muestreo suficientemente denso: basta con ~1 punto por kilómetro.
  4. Limpie el GPS: elimine los fix imprecisos (gpsFix=false, accuracy alta).
  5. Tramos de ferry/carga como solicitudes separadas.
  6. Registre/monitoree geometry_deviation_km para vigilar la calidad de los datos.

Valoración honesta

TollCalc calcula el peaje de la ruta que recorre el motor de enrutamiento. Con cadenas de coordenadas densas la coincidencia es muy alta (en la práctica, normalmente por debajo del 1 %), pero, a diferencia del map matching, no es una garantía 1:1. El control de desviación hace transparente esta incertidumbre.

→ Calcular peaje ahora

FAQ

¿Cuántos puntos puedo enviar a la API?

Actualmente 50 en total (origen + destino + 48 via). Con direcciones, el límite de 48 via es estricto; con coordenadas en formato "lat;lon" puedes enviar más.

¿Qué pasa si envío más de 50 coordenadas?

TollCalc reduce la cadena en el servidor (downsampling) con una preselección de Douglas-Peucker, conservando siempre el origen y el destino y sin recortar tramos.

¿Qué es el control de desviación del 2 %?

La ruta calculada se compara con los puntos originales. Si la desviación supera el 2 % de la longitud de la ruta, la API devuelve un error HTTP 400.