On peut vivre le confinement #COVID-19 de plein de manières différentes. De mon côté, entre autres choses, j’en profite pour me faire des sprints de développement logiciel, ce qui me rappelle la post-adolescence, écrans cathodiques en moins.
Entre deux moments consacrés aux outils pour ACTIVmap, je viens de finir une contribution au site internet unkm.fr proposé par Aymerick. Initialement, le site internet permettait de visualiser le cercle d’un kilomètre autorisé à la sortie, dans le cadre du confinement imposé par le gouvernement.
Quand on voit ce cercle, impossible de ne pas imaginer le suivre « pour de vrai », dans les rues de sa ville, autour de son domicile. Mais voilà, dans bien des cas, si l’on veut à la fois suivre le cercle, et rester à l’intérieur du disque, difficile de repérer le chemin à emprunter.
C’est donc ce que j’ai ajouté à l’outil initial, en utilisant overpass pour récupérer les données cartographiques d’OpenStreetMap, puis en utilisant quelques algorithmes maison pour obtenir le tracé des rues de la promenade circulaire. Enfin, il n’était pas acceptable de ne pas dessiner le plus court chemin qui mène à cet itinéraire. En utilisant leaflet pour l’affichage, et flatbush pour l’optimisation, on se retrouve avec un outil fonctionnel… Du moins, qui montre les données OpenStreetMap telles qu’elles sont. Il vous manquera peut-être des chemins de campagne, certaines bretelles d’autoroutes ne seront pas interdites aux piétons, et des itinéraires bizarres peuvent apparaître quand une avenue est composée de deux voies de circulation. Il manque certainement plein de choses à prendre en compte, mais la version en ligne propose déjà un aperçu intéressant !
La figure ci-dessous donne une intuition rapide de l’algorithme :
- chercher le segment de rue à la même latitude que le centre choisi par l’utilisateur, et la plus à l’ouest.
- parcourir les rues en ne tournant qu’à gauche, jusqu’à revenir au premier segment.
- supprimer les sections où le chemin emprunte la rue dans les deux sens.
Il y a plein de subtilités d’implémentation liées aux données, mais le principe général est là. Et pour calculer le chemin depuis chez soi jusqu’à la balade, on utilise l’incontournable algorithme de Dijkstra !
Si vous êtes curieux·se et voulez en savoir plus, vous pouvez aller jeter un coup d’œil au code source du site, et bien sûr aller jour sur unkm.fr. Peut-être que le virus de la contribution à OpenStreetMap va vous rattraper !