API ETA

Temps d'arrivée ajustés au trafic réel

Les durées Valhalla sont « libres trafic ». Le modèle ML AfriMap combine Valhalla + historique TimescaleDB + traces GPS HopRide pour une ETA réaliste à Abidjan.

Comment fonctionne le modèle

  Valhalla              TimescaleDB            Modèle ML
  (durée brute)         (historique)           (prédiction)
       │                      │                      │
  duration_raw:         vitesses par           Combine les 3
  780 secondes          segment routier        signaux pondérés
  (libre trafic)        par heure / jour       par confiance
       │                      │                      │
       └──────────┬───────────┘                      │
                  │                                   │
                  ▼                                   │
           Feature vector :                           │
           - segment speeds                           │
           - time of day                              │
           - day of week                              │
           - holiday flag                             │
                  │                                   │
                  └───────────────────────────────────►│
                                                      │
                                               duration_enhanced:
                                               660 secondes
                                               (avec trafic)

Signal 1 : Valhalla

Durée de base calculée sur le graphe routier avec les vitesses limites OSM. Toujours disponible.

Signal 2 : Historique

Vitesses moyennes par segment H3, par tranche horaire, par jour de la semaine. Agrégé depuis les traces GPS HopRide.

Signal 3 : ML

Modèle entraîné sur les données historiques. Prend en compte les jours fériés, la météo, et les événements. Mis à jour quotidiennement.

Utilisation

TypeScriptETA ajustée au trafic
const eta = await client.eta.get({ origin: { lat: 5.3197, lng: -4.0167 }, destination: { lat: 5.3480, lng: -3.9904 }, }) console.log(eta.duration_raw) // 780s (Valhalla brut)console.log(eta.duration_enhanced) // 660s (avec trafic ML)console.log(eta.confidence) // 0.87 (confiance du modèle)console.log(eta.distance) // 4200 mètres
TerminalcURL
 curl -H "X-AfriMap-Key: afm_test_..." \ "https://api.afrimap.ci/v1/eta?origin=5.3197,-4.0167&destination=5.3480,-3.9904"

Réponse complète

JSONRéponse ETA
 { "origin": { "lat": 5.3197, "lng": -4.0167 }, "destination": { "lat": 5.3480, "lng": -3.9904 }, "distance": 4200, "duration_raw": 780, "duration_enhanced": 660, "confidence": 0.87, "traffic_level": "moderate", "computed_at": "2026-04-16T14:30:00Z" }

Quel champ utiliser ?

duration_enhanced

Pour l'UI passager. C'est la meilleure estimation du temps réel en tenant compte du trafic actuel.

  • Affichage dans l'app passager
  • Promesse de temps d'arrivée
  • Tarification dynamique

duration_raw

Pour le dispatch. Durée théorique sans trafic, stable et prévisible. Utilisez-la quand le trafic n'est pas disponible.

  • Algorithme de dispatch (fallback)
  • Estimations hors heures de pointe
  • Tests et benchmarks
Confiance : le champ confidence (0.0–1.0) indique la fiabilité de l'estimation. En dessous de 0.5, les données historiques sont insuffisantes pour ce segment — préférez duration_raw.

Niveaux de trafic

traffic_levelSignificationRatio enhanced/raw
free_flowCirculation fluide, pas de ralentissement~1.0x
lightLégèrement ralenti~1.1–1.3x
moderateRalentissement notable (heures bureau)~1.3–1.8x
heavyEmbouteillage (pont, heures de pointe)~2.0–4.0x

Endpoints

Points d'entrée

GET/v1/eta

Traffic-aware ETA for a single origin/destination pair

Paramètres

NomEmplacementTypeDescription
origin requiredquerystring
destination requiredquerystring
depart_at querystring (date-time)Optional future departure time (ISO 8601).

Réponses

  • 200Raw + ML-enhanced durations.

    EtaResponse

Exemples de code

curl "https://api.afrimap.ci/v1/eta?origin=5.3197,-4.0167&destination=5.3480,-3.9904" \
  -H "X-AfriMap-Key: $AFM_KEY"

Testez-le

Essayer en direct

GET /v1/eta

Collez une clé sandbox afm_test_…. La requête part directement de votre navigateur vers le gateway, aucun proxy côté portail.

Optional future departure time (ISO 8601).

GET http://localhost:8090/v1/eta?origin=5.3197%2C-4.0167&destination=5.3480%2C-3.9904