URL: https://linuxfr.org/news/brouter-un-calcul-d-itineraire-libre-pour-velo-mais-pas-que Title: BRouter, un calcul d’itinéraire libre pour vélo (mais pas que) Authors: bagage ZeroHeure, Davy Defaud, Xavier Teyssier et Benoît Sibaud Date: 2020-06-04T11:31:46+02:00 License: CC by-sa Tags: brouter, itinéraire et vélo Score: 4 **BRouter** est un outil de calcul d’itinéraire pour vélo sous licence MIT, et s’appuyant sur les données d’OpenStreetMap. Parmi les fonctionnalités, la possibilité de choisir l’itinéraire à privilégier (au plus court, le plus sûr, sur les routes à plus faible trafic, etc.) ou le type de vélo utilisé (de route, couché, etc.), voire de « non‑vélo » (train, fluvial…). On peut aussi définir des zones où ne pas passer, ou des points intermédiaires, etc. Les plus cyclistes d’entre vous connaissent peut‑être des applications de calcul d’itinéraire pour vélo, dont [komoot](https://www.komoot.com), [géovélo](https://www.geovelo.fr/france/route) ou tout simplement Google Maps®. Pourquoi *encore* une autre solution ? Tout d’abord, rappelons qu’avoir une énième solution d’un problème ne fait jamais de mal, mais surtout parce que **BRouter** ne joue pas tout à fait dans la même cour que ses copains. Tous les détails sont donnés ci‑dessous ! ---- [Journal à l’origine de la dépêche](https://linuxfr.org/users/bagage/journaux/brouter-un-calcul-d-itineraire-libre-pour-velo-mais-pas-que) [Interface Web de BRouter](https://brouter.de/brouter-web/) ---- ![Vingtième étape du Tour de France 2019](http://tof.cx/images/2020/06/03/4570bc27facc3d1df4e621d37e3508f2.jpg) # Profils personnalisés En général, chaque type de véhicule (voiture, camion, vélo, piéton, etc.) possède des caractéristiques et contraintes qui doivent être prises en compte : un vélo ne [devrait pas être dirigé vers l’autoroute](https://www.lejsl.com/edition-macon/2019/06/30/il-suit-son-gps-et-se-retrouve-a-velo-sur-la-bande-d-arret-d-urgence-de-l-a6) et les camions ne [peuvent pas aller sur toutes les routes](https://www.ledauphine.com/faits-divers-justice/2020/05/31/savoie-un-conducteur-de-poids-lourd-suit-son-gps-et-se-retrouve-en-facheuse-posture). L’originalité et la force de BRouter réside donc dans la prise en compte de ces différents cas d’utilisation. On trouve ainsi sur [l’instance officielle](http://brouter.de/brouter-web/) des profils variés, initialement axés autour du vélo : * « cyclotourisme », pour privilégier les routes adaptées au cyclisme (parfois au prix de détours non négligeables) ; * « sécurité », pour éviter les routes considérées comme dangereuses (nationales, routes à fort trafic) ; * ou encore « vélo couché », « voiture (économique) », « voiture (rapide) », « randonnée » et bien d’autres… ![Variation d’itinéraire en fonction du profil sélectionné](http://tof.cx/images/2020/06/03/6f316f61e0ecf6195449213cfca7c975.gif) Cependant, l’histoire ne s’arrête pas là. En effet, ces profils sont des bases de travail pour qui veut affiner l’outil à ses besoins propres : ces profils sont scriptables (dans un langage maison). Grâce à cela, de nouveaux profils ont vu le jour : VTT, train, [kayak](https://github.com/abrensch/brouter/issues/202) et déplacement fluvial. Pourquoi pas à l’avenir un profil moto (pour privilégier les routes sinueuses) ou un routeur de [réseau électrique](https://twitter.com/pbeyssac/status/1261673291854622720) ? Tout devient possible ! # Gestion des zones interdites Outre son adaptativité, BRouter propose une autre fonctionnalité peu présente sur le marché : la possibilité de définir des zones interdites. Pour cela, rien de plus simple : il suffit de dessiner des cercles pour représenter ces zones (rues en travaux, route qu’on n’apprécie pas et qu’on ne souhaite pas utiliser, etc.). Ces zones peuvent aussi être importées depuis un fichier et, dans ce cas, toutes les zones peuvent être polygonales. L’idée derrière cette fonctionnalité est de pouvoir réaliser du routage en temps réel en fonction des zones de travaux publiées en [données ouvertes](https://fr.wikipedia.org/wiki/Donn%C3%A9es_ouvertes). Plus de [détails ici (en anglais)](https://phyks.me/2019/07/bicycle-routing-avoiding-road-works.html#bicycle-routing-avoiding-road-works) # Les fonctionnalités de BRouter Mais BRouter ne se limite pas à l’élaboration de profils personnalisés et la gestion de zones interdites, c’est avant tout un routeur complet : * calcul d’un itinéraire d’un point A à un point B (la base) ; * visualisation de l’itinéraire et de ses caractéristiques (distance, temps estimé, dénivelé positif et cumulé…) et du profil altimétrique ; * changement de profil à la volée et possibilité d’avoir des variantes d’un même itinéraire : ![Visualisation d’alternatives pour un départ et une arrivée donnés](http://tof.cx/images/2020/06/03/e0416548a9fe7854de0b228bb65f40a4.gif) * ajout de points étapes intermédiaires ; * inversion d’un itinéraire (l’itinéraire résultant n’étant pas nécessairement l’inverse de l’initial, en cas de sens interdits par exemple) ; * possibilité de définir des zones interdites (zones de travaux par exemple) ; * ajout de points d’intérêts (bars, campings, barbecue en accès libre, curiosité touristique) ; * visualisation du « coût » d’un itinéraire (chiffrage d’inclinaison, d’altitude ou des pénalités liées au profil) : ![Visualisation du coût d’un itinéraire](http://tof.cx/images/2020/06/03/dba5d5d733d40cbb7861be5851df87dd.gif) * exportation de l’itinéraire au format GPX, KML, GeoJSON ou encore CSV, permettant de charger l’itinéraire sur une montre intelligente par exemple ; * possibilité d’importer sur l’outil un GPX ou des zones interdites automatiquement ; * affichage des segments Strava possible (itinéraires chronométrés avec classement entre les différents utilisateurs de l’outil) ; * ajout de fonds de carte par l’utilisateur ; * possibilité d’écrire son propre profil via le langage maison ; * partage d’itinéraire via adresse URL ; * et bien plus… Le client BRouter (BRouter-web) fonctionne à 100 % en JavaScript dans le navigateur de l’utilisateur, ce qui signifie que rien n’est sauvegardé sur un serveur. On ne trouvera donc pas sur BRouter : * un partage d’itinéraire entre membres comme [Visorando](https://www.visorando.com/) ou [Randogps](https://www.randogps.net) avec système de notation, photos et compte‑rendu ; * un système de compte utilisateur permettant le stockage de ses itinéraires pour réutiliser plus tard ou pour garder un historique. # Sous le capot, des données libres Pour pouvoir calculer un itinéraire selon un profil donné, le routeur a besoin de données cartographiques (la voirie, les limitations de vitesse ou de poids, la hauteur maximale autorisée, etc.) : BRouter utilise pour cela les données d’[OpenStreetMap](https://fr.wikipedia.org/wiki/OpenStreetMap). Puisque tout le monde peut modifier directement les données OSM, BRouter s’adapte automatiquement aux mises à jour effectuées sur la carte et permet d’avoir des itinéraires qui évoluent en fonction de l’état de la voirie. Par exemple, BRouter utilise les [pistes cyclables temporaires mises en place dans le cadre du Covid‑19](http://www.leparisien.fr/info-paris-ile-de-france-oise/transports/deconfinement-decouvrez-la-carte-des-pistes-cyclables-temporaires-dans-le-grand-paris-04-05-2020-8310639.php). # Architecture du projet L’outil est découpé en trois partie : * BRouter, le moteur, responsable de calculer un itinéraire entre un point A et un point B en fonction d’un profil donné — bien évidemment, on peut rajouter des points intermédiaires, avoir jusqu’à quatre variantes d’un même trajet, etc. — ; écrit en Java et [hébergé sur GitHub](https://github.com/abrensch/brouter/), le projet est maintenu par *abrensch*, qui accueille volontiers les nouvelles idées ; * une application Android qui permet d’effectuer du calcul d’itinéraire directement depuis le téléphone, en hors ligne — elle est hébergée sur le projet GitHub du moteur —, cette application n’est pas réellement utile seule, mais elle peut être utilisée avec OsmAnd, par exemple ; * BRouter-web, une interface Web permettant de visualiser et interagir avec BRouter, projet en JavaScript, aussi [hébergé sur GitHub](https://github.com/nrenner/brouter-web/) avec un autre mainteneur allemand, *nrenner*, actif et qui n’hésite pas à prendre de son temps pour répondre aux questions et aider les contributeurs — le fond de carte par défaut pour les utilisateurs français, [CyclOSM](https://cyclosm.org/), est spécialement conçu pour les cyclistes (d’autres fonds de carte sont également disponibles) ! # Aller plus loin Il y a une grosse communauté d’utilisateurs (principalement allemands, mais globalement internationaux) et aussi de l’activité autour du développement du projet : * [aller tester BRouter dès maintenant](https://brouter.de/brouter-web) ; * [voter pour les fonctionnalités qu’on souhaite voir développées](https://github.com/nrenner/brouter-web/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc) ; * venir discuter sur [#brouter@OFTC](https://webchat.oftc.net/?channels=#brouter) ou via [Google Groupes](https://groups.google.com/group/osm-android-bikerouting) ; * [traduire l’interface dans d’autres langues](https://www.transifex.com/openstreetmap/brouter-web/) ; * [proposer un nouveau logo pour l’application](https://github.com/nrenner/brouter-web/issues/286) ; * [contribuer au code ou à l’UI/UX](https://github.com/nrenner/brouter-web/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) ; * [BRouter, les sources du moteur](https://github.com/abrensch/brouter) ; * [BRouter-web, l’interface Web](https://github.com/nrenner/brouter-web).