Cartographie poétique de confinement

On peut vivre le confi­ne­ment #COVID-19 de plein de manières dif­fé­rentes. De mon côté, entre autres choses, j’en pro­fite pour me faire des sprints de déve­lop­pe­ment logi­ciel, ce qui me rap­pelle la post-ado­les­cence, écrans catho­diques en moins.

Entre deux moments consa­crés aux outils pour ACTIV­map, je viens de finir une contri­bu­tion au site inter­net unkm.fr pro­po­sé par Ayme­rick. Ini­tia­le­ment, le site inter­net per­met­tait de visua­li­ser le cercle d’un kilo­mètre auto­ri­sé à la sor­tie, dans le cadre du confi­ne­ment impo­sé par le gouvernement.

Un cercle d’un kilo­mètre de rayon des­si­né sur une carte, à par­tir d’un point choi­si par l’utilisateur.

Quand on voit ce cercle, impos­sible de ne pas ima­gi­ner le suivre « pour de vrai », dans les rues de sa ville, autour de son domi­cile. Mais voi­là, dans bien des cas, si l’on veut à la fois suivre le cercle, et res­ter à l’in­té­rieur du disque, dif­fi­cile de repé­rer le che­min à emprunter.

C’est donc ce que j’ai ajou­té à l’ou­til ini­tial, en uti­li­sant over­pass pour récu­pé­rer les don­nées car­to­gra­phiques d’OpenS­treet­Map, puis en uti­li­sant quelques algo­rithmes mai­son pour obte­nir le tra­cé des rues de la pro­me­nade cir­cu­laire. Enfin, il n’é­tait pas accep­table de ne pas des­si­ner le plus court che­min qui mène à cet iti­né­raire. En uti­li­sant lea­flet pour l’af­fi­chage, et flat­bush pour l’op­ti­mi­sa­tion, on se retrouve avec un outil fonc­tion­nel… Du moins, qui montre les don­nées OpenS­treet­Map telles qu’elles sont. Il vous man­que­ra peut-être des che­mins de cam­pagne, cer­taines bre­telles d’au­to­routes ne seront pas inter­dites aux pié­tons, et des iti­né­raires bizarres peuvent appa­raître quand une ave­nue est com­po­sée de deux voies de cir­cu­la­tion. Il manque cer­tai­ne­ment plein de choses à prendre en compte, mais la ver­sion en ligne pro­pose déjà un aper­çu intéressant !

La figure ci-des­sous donne une intui­tion rapide de l’algorithme :

  1. cher­cher le seg­ment de rue à la même lati­tude que le centre choi­si par l’u­ti­li­sa­teur, et la plus à l’ouest.
  2. par­cou­rir les rues en ne tour­nant qu’à gauche, jus­qu’à reve­nir au pre­mier segment.
  3. sup­pri­mer les sec­tions où le che­min emprunte la rue dans les deux sens.
Un sché­ma illus­trant le par­cours du contour d’un graphe planaire.

Il y a plein de sub­ti­li­tés d’im­plé­men­ta­tion liées aux don­nées, mais le prin­cipe géné­ral est là. Et pour cal­cu­ler le che­min depuis chez soi jus­qu’à la balade, on uti­lise l’in­con­tour­nable algo­rithme de Dijks­tra !

Si vous êtes curieux·se et vou­lez en savoir plus, vous pou­vez 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 contri­bu­tion à OpenS­treet­Map va vous rattraper !