owned this note
owned this note
Published
Linked with GitHub
# API Navitia SNCF rabattement vélo
L'objectif :
> calculer un itinéraire d'un point A à un point B en spécifiant train + vélo avec un trajet vélo qui peut être arbitrairement long, par exemple 0 < 100km pour donner au train le rôle principal
Implé actuelle :
> en gros on va te trouver toutes les gares dans un rayon de N minutes autour de tes points d'arrivée et de départs, puis cherché une solution entre ces gares
> limitation actuelles
> - le vélo seulement du point A à la gare départ, pas de la gare d'arrivée au point B
> - tu ne poura pas choisir la distance max a velo km, c'est en temps, donc en fonction de la qualité des estimations de valhalla ca peut etre plus ou moins bien, et je ne sais pas ison peut influencé cette vitesse.
> - de meme le system va chercher a trouver la solution qui va le plus vite (enfin qui arrive le plus tot) donc dans ce cas le train va avoir tendance a etre privilegié
Exemple :
- départ pas loin de Montparnasse
- arrivée pas loin de Chartres
> attention il faut demander un token SNCF [ici](https://www.digital.sncf.com/startup/api/token-developpeur)
https://canaltp.github.io/navitia-playground/play.html?request=https%3A%2F%2Fapi.navitia.io%2Fv1%2Fcoverage%2Fsncf%2Fjourneys%3Ffrom%3D2.30370%253B48.83422%26to%3D1.48006%253B48.44526%26first_section_mode%255B%255D%3Dbike%26first_section_mode%255B%255D%3Dwalking%26last_section_mode%255B%255D%3Dwalking%26max_bike_direct_path_duration%3D360000000%26max_bike_duration_to_pt%3D3600%26direct_path_mode%255B%255D%3Dbike%26


ça fonctionne donc ! Et le json semble contenir les infos qui permettent de dire quel train précis prendre à quelle heure, le 8645 (bon j'ai cherché il est annulé, mais à creuser c'est déjà bien).
Quand je déplace le point d'arrivée à quelques km de la gare, en augmentant le temps de marche gareB->B, [ça fonctionne aussi](https://canaltp.github.io/navitia-playground/play.html?request=https%3A%2F%2Fapi.navitia.io%2Fv1%2Fcoverage%2Fsncf%2Fjourneys%3Ffrom%3D2.30370%253B48.83422%26to%3D1.46708%253B48.42373%26first_section_mode%255B%255D%3Dbike%26first_section_mode%255B%255D%3Dwalking%26last_section_mode%255B%255D%3Dwalking%26max_bike_direct_path_duration%3D360000000%26max_bike_duration_to_pt%3D3600%26direct_path_mode%255B%255D%3Dbike%26max_walking_duration_to_pt%3D360000000%26)
Si je remplace la destination par Guilers, une ville en périphérie de Brest, ça marche aussi mais on voit bien que l'arrivée à pied est calculée à vol d'oiseau. Ce qui est gérable, car on peut recalculer ensuite le trajet final en vélo.

Testons la montagne avec un Métro Vaugirard -> Les Rousses dans le Jura [ici](https://canaltp.github.io/navitia-playground/play.html?request=https%3A%2F%2Fapi.navitia.io%2Fv1%2Fcoverage%2Fsncf%2Fjourneys%3Ffrom%3D2.30370%253B48.83422%26to%3Dadmin%253Afr%253A39470%26first_section_mode%255B%255D%3Dbike%26first_section_mode%255B%255D%3Dwalking%26last_section_mode%255B%255D%3Dwalking%26max_bike_direct_path_duration%3D360000000%26max_bike_duration_to_pt%3D5000%26direct_path_mode%255B%255D%3Dbike%26max_walking_duration_to_pt%3D360000%26datetime%3D20210410T060000%26)
Une solution est trouvée, c'est déjà bien. Bon, il faut mettre beaucoup de temps de marche toléré, ici 6h, monter le sommet du Jura, rien que ça :sweat_smile:

Par contre, impossible de trouver un chemin avec moins de 6h de marche (max_walking_duration_to_pt~22000). Ce qui est étrange, car il y a bien des trains Paris-La Cure qui met le cycliste à quelques km seulement des Rousses, ou encore Paris-Saint-Cergues. Peut-être car ce sont des trains entièrement en Suisse ?
Il semble bien, car en prenant une date où le Paris-Morbier existe, ça fonctionne :)

Dernier test, un bled en Normandie, ça fonctionne :+1:
https://canaltp.github.io/navitia-playground/play.html?request=https%3A%2F%2Fapi.navitia.io%2Fv1%2Fcoverage%2Fsncf%2Fjourneys%3Ffrom%3Dstop_area%253ASNCF%253A87758102%26to%3D0.89195%253B48.79550%26first_section_mode%255B%255D%3Dbike%26last_section_mode%255B%255D%3Dwalking%26max_bike_direct_path_duration%3D360000000%26max_bike_duration_to_pt%3D5000%26direct_path_mode%255B%255D%3Dbike%26max_walking_duration_to_pt%3D22000%26datetime%3D20210416T060000%26

On peut maintenant passer à des déclinaisons cyclistes : peut-on allonger la durée de vélo, pour ceux qui trouvent que 5km c'est frustrant ?
Dans ce dernier cas, j'ai fait le trajet en prenant le transilien jusqu'à Dreux, ce qui laisse ~50km de vélo à faire, une belle promenade dans la campagne normande.
Dans ce cas l'API ne nous permet pas de trouver le chemin, car le train est systématiquement privilégié, hors il y a bien plusieurs gares plus proches que Dreux.
Mais il y a d'autres possibilités, à vrai dire presque tous les arrêts de plusieurs lignes. Donc on peut imaginer un curseur qui permet de régler la distance vélo voulue.
Un dernier exemple, de Brest à un bled dans le finistère nord-est, avec une vingtaine de kilomètres à l'arrivée.
https://canaltp.github.io/navitia-playground/play.html?request=https%3A%2F%2Fapi.navitia.io%2Fv1%2Fcoverage%2Fsncf%2Fjourneys%3Ffrom%3Dstop_area%253ASNCF%253A87474007%26to%3D-4.26373%253B48.56002%26first_section_mode%255B%255D%3Dbike%26first_section_mode%255B%255D%3Dwalking%26last_section_mode%255B%255D%3Dwalking%26max_bike_direct_path_duration%3D360000000%26max_bike_duration_to_pt%3D5000%26direct_path_mode%255B%255D%3Dbike%26max_walking_duration_to_pt%3D360000%26datetime%3D20210424T060000%26
