 Bonsoir, je m'appelle Guillaume, je travaille pour un des commanditaires de la soirée Artbox, mais je viens vous présenter sur un projet personnel, sur OpenStreetMap et en fait sur les efforts d'importation des données ouvertes de la Ville de Montréal dans OpenStreetMap. Donc ce soir je vais vous présenter ce que c'est OpenStreetMap, ce que sont les données ouvertes de la Ville de Montréal et certains scripts que j'ai écrits pour pouvoir convertir ces données là dans un format qui va nous permettre par la suite l'importation dans OpenStreetMap. Donc OpenStreetMap c'est une carte, c'est une carte comme on est habitué de les voir sur le web et sur cette carte là on va retrouver en fait si je vous en fais une démonstration les éléments qu'on est habitué de retrouver donc les routes, les futurs circulations, les passages pour piétan, les points intérêts comme les salles de spectacle ici, où est-ce qu'on voit. C'est une carte qui est également éditable donc il suffit d'appuyer sur le bouton modifier. On arrive dans un éditeur intégré au site web et on peut aller cliquer par exemple ici on a un stationnement vélo et puis on peut venir indiquer la capacité si c'était 10 par exemple sauvegarder. Bien sûr je ne le ferai pas ici, je ne vais pas aller vérifier encore sur le terrain s'il y avait réellement 10 vélos qu'on pouvait ajouter ici. Donc on peut dire d'OpenStreetMap que c'est une carte collaborative libre donc c'est un projet communautaire, un projet Open Source si on veut, c'est basé sur des logiciels libres mais il faut voir derrière les données derrière cette carte là et penser en fait à OpenStreetMap comme étant une base de données et avant tout et puis je vous dirais donc que OpenStreetMap est une base de données d'information géographique réalisée de façon collaborative et distribuée sous une licence libre. Cette licence-là s'intitule l'Odbl, l'Open Database License et puis cette distinction là en fait elle est importante parce que le projet OpenStreetMap n'a pas comme objectif par exemple de concurrencer sur le web les cartes comme qu'on connaît comme celle de Google. Je donne des, en fait elle n'a pas comme objectif d'avoir la même facilité d'utilisation puis de rejoindre nécessairement le même public. Je donne des exemples sur OpenStreetMap le site principal, on ne retrouve pas de service de routage, on ne peut pas demander à la carte quel trajet est utilisé pour se déplacer d'un point A vers le point B. On n'a pas non plus de photos des rues comme avec Google Studio et puis la recherche des données, des adresses va selon la qualité des données qui sont présentes dans OpenStreetMap. Par contre contrairement aux cartes commerciales comme celle de Google il y a une différence importante étant donné que ce sont des données ouvertes on peut réutiliser ces données là à différentes fins, différentes projets et pour illustrer ça ici il y a un projet qui s'appelle WheelMap qui offre une carte de l'accessibilité donc quels sont les lieux où on peut se rendre à Montréal mais en fait partout dans le monde pour pouvoir, lorsqu'on est en fauteuil roulant. Ils utilisent un code de couleur comme ça, vert pour complètement accessible, orange pour partiellement, rouge pour non accessible et puis ces données sont stockées non pas dans une base donnée sur le site WheelMap.org mais dans la base de données collectives d'OpenStreetMap sous l'uissance au DBL. Donc les données qui sont entrées dans le site de ce projet là peuvent être utilisées par tous les autres projets qui utilisent OpenStreetMap. Le projet célèbre en fait son dixième anniversaire cette année et puis à Montréal on a souligné l'événement avec un pique-nique au parc en Grignon. Le projet a beaucoup de contributeurs actifs, on parle de 25 000 contributeurs actifs à chaque mois en moyenne et puis connaît une croissance linéaire depuis les quatre dernières années. Donc on voit ici c'est quand même une base donnée assez volumineuse, on parle de près de 3 milliards d'objets, 2 600 millions de points c'est-à-dire des points géographiques, que ce soit des feux de circulation ou ce que l'empadard qu'on voit à l'extérieur ou les commerces en fait ce sont des points géographiques où les routes, on parle de 300 millions de routes et de bassements dans le projet OpenStreetMap. Maintenant les données ouvertes de la Ville de Montréal en fait la Ville a ouvert depuis depuis trois ans ces données c'est suite à un mouvement citoyen qui s'appelle Montréal ouvert qui ont fait pression pour que la Ville de Montréal suive le pas sur d'autres grandes villes en Amérique du Nord par exemple la Ville de New York pour partager les données qu'elle produit avec les citoyens. La Ville offre différents jeux de données je vous en donne quelques exemples ici les subventions donc on voit dans la colonne A le nom de l'argonisme et puis dans la colonne vers la droite on voit une description qui contient entre autres le montant. On a les contrats, le même principe ici et ici ce sont les constats d'infraction pour insalubriter dans les lieux publics les commerces comme les restaurants ou les boulangeries et d'ailleurs vous regarderez il y a une application sur téléphone mobile qui existe qui s'appelle Restonet qui utilise ces données ouvertes là et puis on voit une carte puis on peut on peut savoir si le restaurant les restaurants qu'on fréquente ont déjà reçu des constats. Donc toutes ces données là la Ville n'est pas la seule à offrir la Ville de Montréal, n'est pas la seule à offrir des données ouvertes au Québec. On est aussi la Ville de Québec de Gatineau de Sherbrooke que je connais probablement d'autres et avec le gouvernement du Québec récemment en février 2014 et ce sont entendu sur une nouvelle licence qui est pour une nouvelle licence pour ces données qui est la Creative Commons par attribution 4.0 internationale. Nous ça fait longtemps qu'on essayait de pouvoir importer les données de la Ville de Montréal parce qu'il y a beaucoup de données aussi à savoir géographique toutes les routes, toutes les armes entre autres et la licence, l'ancienne licence de la Ville n'était pas compatible, on ne pouvait pas prendre ces données là à l'importer dans un OpenStreetMap. Cette licence-là non plus de février 2014 n'était pas tout à fait compatible. En fait, on avait consulté la Fondation OpenStreetMap qui est l'organisme qui chapeaut OpenStreetMap et on nous avait dit que vous devez avoir la permission explicite des propriétaires des données pour pouvoir incorporer les données dans OpenStreetMap. Donc après plusieurs démarches puis en passant par Twitter en fait, on a pu initier une discussion avec un élu à Routes-Chicilliane et cet été ça l'a pu débloquer finalement puis on a pu obtenir l'autorisation explicite qu'on recherchait. D'ailleurs, cette autorisation explicite est disponible sur le portail des données ouvertes de la Ville de Montréal avec mention et lien aussi vers la communauté montréalaise d'OpenStreetMap Montréal. Donc on prend ça en n'importe dans OpenStreetMap mais en fait c'est un peu plus complexe que ça. Bon, voici par exemple une liste de quelques jeux de données qui nous intéressent et qu'à thème on souhaite pouvoir importer dans OpenStreetMap. Les adresses ponctuelles ce sont un point au centre de chacun des bâtiments sur l'île de Montréal avec l'adresse et la rue, les arbres publics, les stationnements pour vélo, etc. Tous ces formats de données là, toutes ces fichiers de données là en fait sont en différents formats. Juste sur la première page du portail là, j'ai donné tous ces formats là. PDF, on leur macro, c'est pas tout à fait un format de données ouvertes, faire du scrapping de fichiers PDF, ça marche pas trop bien mais bon ça fonctionne, ça peut fonctionner pour des choses comme des procès verbaux par exemple. De ces formats là, il y en a trois qui retiennent mon attention et que je vais vous expliquer à l'instant. Donc le premier CSV, un format très connu, comment ces paraités de value sur chaque rangée, la première rangée, on va voir l'en tête. Ici on simule comme un tableur en informatique, il faut bien boire un peu. Et ensuite sur chacune des lignes, on va avoir les données en fait. Si je vous ai importé ces données là aussi dans l'hybrophys pour pouvoir vous les montrer, ce sont les supports à vélo qu'on a sur l'île. On voit un identifiant, un numéro de catalogue, une description qui est associée à ce numéro de catalogue. Ça nous permet de voir par exemple que certains supports à vélo ont cette place d'autres plus. Et l'important pour nous, la longitude et l'attitude, les coordonnées GPS qui vont nous permettre de créer des points dans une strip map lors de l'importation. Un autre format, l'échec fer, c'est un standard de facto dans l'industrie qui est créé par la société SRI. Et c'est un format binaire. Tout ce que je veux mieux que je peux vous montrer, c'est une capture d'écran d'un logiciel qui s'appelle QGIS. Et on voit les données qui sont inclus ici. On a un index et un nom majuscule. On pourra pas tout à fait, il va falloir traiter ça avant de pouvoir l'importer. Le nom majuscule, on n'impropera pas tout tel quel. Ce sont les jardins communautaires ici. Ensuite, KML, c'est le format qui a été popularisé avec Google Earth. C'est un fichier qui s'amêle avec des coordonnées et des descriptions. Et puis voici par exemple une capture d'écran dans Google Earth. Ici, ce sont les casernes de pompiers de la ville. Donc notre objectif, ça va être de pouvoir prendre ces données-là et de les mettre dans un format avec lequel on va pouvoir importer, prendre ces données-là et les importer dans la base donnée OpenStreetMap. Le logiciel qu'on va utiliser pour cette importation de données-là, en fait, c'est l'éditeur Java OpenStreetMap JOSM. Ici, j'ai déjà préchargé un fichier. En fait, je vais cacher ce cal et je vais vous montrer ici. Ce sont... C'est un peu surprenant. Qu'est-ce que... Bon, c'est marqué, en fait. Je pourrais vous poser la question à savoir ce que vous pensez que c'est. Mais qu'est-ce qu'est-ce qui est si nombreux que ça, Montréal? Ce sont les bandes fontaines. Puis juste avec les points de bandes fontaines, on devine la forme de l'île. Puis à quelque part aussi, quand on zoom, on voit presque le réseau routier. Chacun de ces bandes fontaines-là, en fait, bon, on le voyait, c'était dans un fichier shapefair. On ne peut pas envoyer un fichier shapefair directement dans OpenStreetMap. Donc, il faut voir le convertir. Je vais me permettre de monter ça ici. Et je vais vous montrer comment c'est fait. En fait, j'ai un projet Gitom pour ça, qui est juste ici, que vous pourrez aller visiter si cela vous intéresse. Et ce que j'ai fait, c'est que j'ai rassemblé, j'ai utilisé un projet qui s'appelle OgrToOSM, qui est un script piton, qui utilise une librairie qui s'appelle GEDAL et qui permet de traiter les shapefairs, les cas ML, entre autres, plusieurs formats géographiques et de les convertir dans un fichier OSM. À quoi ça ressemble un fichier OSM, je vais pouvoir vous le montrer ici. On parlait ici, d'exemple, des bandes d'incendie. En fait, premièrement, le fichier shapefair aussi, c'est un fichier.shp avec différents fichiers d'index. Ce sont ces quatre fichiers-là qui font la mini-base donnée shapefair. Et le fichier OSM, c'est un fichier XML avec un en tête. Et puis pour chacun des nœuds, on va retrouver les coordonnées géographiques avec un ID ici qui va être populée automatiquement lors de l'insertion dans OpenStreetMap. Et un ensemble de balises, clés valeurs. Et ce sont ces clés valeurs-là qui permettent de catégoriser chacun des types d'objets dans OpenStreetMap. Ici, les clés valeurs, en fait, c'est emergency fire hydrant. C'est la façon qu'on a à identifier une bande fontaine dans OpenStreetMap. Donc ce script-là, si je viens sur les bandes d'incendie ici, j'utilise donc ce programme-là qui était déjà codé. Je vais vous montrer un exemple de le rouler. Je suis sur Mac OS X, donc j'utilise Vagrant pour obtenir un environnement Linux pour le développement. Et puis, j'utilise en fait un principe, il y a peut-être des traducteurs, des translators. Ce sont des plugins, des petits bouts de modules pitons qu'on écrit qui vont nous permettre de traduire les balises. Je vais vous montrer qu'est-ce que ça veut dire dans un instant. Donc il va auto-détecter la projection géographique du fichier chez Firm. Ici, c'est la projection utilisée par la Ville de Montréal et va écrire un le fichier xml résultant dans le répléatoire WSM. Donc on va avoir le fichier que je vous ai montré tout à l'heure. On utilise, comme je disais, un fichier ici qui permet de traduire les tags. En fait, ici, je vais vous faire marquer que c'est marqué. On a la clé Emergency Egal Fire Idrant. Je vais vous montrer ce qui se passe si on n'utilise pas le traducteur en question. En fait, le traducteur, c'est juste une fonction qui s'appelle Filter Tags qui va prendre un dictionnaire en entrée, qui va en retourner un autre. Et ce dictionnaire-là en entrée, si je fais deux choses ici, je vais faire premièrement un print de chaque entrée dictionnaire. Puis je vais retourner la même chose. Et il va se passer deux choses. Donc premièrement, on va voir toutes les entrées de toutes les bandes fontaines qu'on a Montréal qui vont s'afficher à l'écran. Et on voit que chacun des entrées a des balises en majuscule comme ça. Et donc ce que ça veut dire, c'est que notre fichier WSM présentement contient ces mêmes balises. Donc si je cache ce jeu de données là et que je vais réouvrir le fichier, si je sélectionne une des bandes fontaines, en fait, c'est ce qu'on voit ici. Mais comme ces balises-là ne sont pas appropriées pour l'importation dans OpenStreetMap, il faut les traduire dans des balises que OpenStreetMap va pouvoir comprendre d'où l'utilité de ce programme. Et c'est ce qu'on fait ici avec un peu de logique. Donc on se crée une nouvelle variable à la sortie tags. Et puis là, selon la balise des statues, selon la statue de la bande fontaine, on va lui assigner soit le tag emergency fire event, donc une bande fontaine active en utilisation ou une bande fontaine abandonnée ou une bande fontaine en disuétude. Il y a d'autres jeux de données comme ça, sur lesquels j'ai travaillé et que je vais vous montrer. Premièrement, on aura le jeu de données les casantes de pompiers. C'est un fichier KML, donc le fichier Google dont je vous parlais. Je vais vous monter tout simplement le traducteur ici. C'est la même principe. Ici, j'ai quelque chose de particulier. Il y avait certaines non-drues par exemple qui avaient des espaces ou des majuscules où il ne fallait pas. Donc je me suis fait un dictionnaire d'équivalence pour pouvoir traduire ces non-drues. Et puis ce qu'on voit ici, c'est que dans le fichier KML, il va avoir par exemple une balise description. Et en fait, cette description-là contient un ensemble de… c'est une description en acheté KML avec des BR dedans et tout ça. Les données dans ce fichier-là ne sont pas structurées. Il y a pourtant des champs à adresse qui existent pour le format de KML. Mais la ville de Montréal, ici, tout simplement, donpi, permettez-moi l'expression. L'adresse, c'est tout ça dans un champ non structuré. Et donc il fallait faire un peu de parsing ici pour pouvoir extraire ces informations-là et les mettre dans les tags appropriés pour l'importation d'empêche-traitement. Le dernier que je vais vous montrer, ce sont les arceaux à vélo. Donc les stationnements… pas les stationnements, mais enfin les bornes de stationnement pour vélo. Dans ce cas-ci, c'est un bon vieux fichier CSV avec beaucoup d'informations, plusieurs inutiles. Ici, on a… c'est intéressant, c'est les coordonnées en XY, c'est en maître, c'est la fameuse projection qui est utilisée par la Ville de Montréal. C'est-à-dire que tout est active dans le document. Bref, longitude, latitude, c'est ce qui nous intéresse. Donc si on importait tout ça dans le printemps, ça serait pas très utile. Donc au niveau du traducteur, j'en ai écrit un également. Puis tout simple, je ne passerai pas beaucoup de temps dessus. Il y avait même… on peut même faire un mapping du matériel de l'arceau à vélo, que ce soit en acier, en lumineux, etc. Mais dans ce cas-là, ici, le programme que j'utilisais ne permettait pas la lecture des fichiers CSV. Donc j'en ai écrit un autre qui faisait la même job, puis qu'il y avait la même genre d'interface de traducteur qui s'appelle CSV tout au SM. Et ce qu'il fait, c'est qu'il va ouvrir le fichier au SM en sortie, il va lire le CSV, puis il va générer un UXML pour chacun de ces entrées-là. Le script est un peu différent, parce que cette fois-ci, il faut lui spécifier les colonnes du fichier CSV qui constituent la latitude et longitude. Donc si on regarde le renumis ici, on n'a pas celui-là. Mais par exemple, dans les arceaux à vélo, on va avoir des paramètres qui n'existent pas avec l'autre programme, puis on va spécifier également l'encodage. Certains fichiers sont un UTF-8, d'autres sont en latin 1. Et ça nous offre le même résultat, ça nous permet de convertir en formant au SM. Donc l'étape d'après en fait, ça va être pour la communauté OpenStreetMap Montréal de pouvoir prendre ces informations-là et les mettre dans OpenStreetMap, mais à travers une interface bien particulière, c'est une interface qui est utilisée par le projet HOT, qui est le projet humanitaire d'OpenStreetMap et qui permet en cas de désastre, par exemple avec la crise d'Ébola présentement, le projet s'intéresse beaucoup à aller cartographier les zones en Afrique de l'Ouest qui sont impactées par l'Ébola et donc utilise ce produit-là pour pouvoir subdiviser les tâches de cartographie à la communauté OpenStreetMap. Et on va utiliser le même fichier, je ne peux pas ici le scale, le projet est écrit comme ça. C'est un programme en piton, en passant le Task Manager, qu'on a installé une instance locale sur nos serveurs et ça permet de subdiviser par exemple ici la ville de Montréal en différentes soutages, puis on va pouvoir aller commencer ou ouvrir automatiquement le logiciel d'édition avec une découpe de juste les données qu'on a importées, faire une comparaison manuelle parce qu'on ne peut pas juste prendre les données et creuser l'existent. Si il y a des données existantes, il faut faire une réconciliation et cette réconciliation-là doit être manuelle et petit peu par petit peu on va pouvoir comme ça importer l'ensemble. Pour vous donner une idée de comment la carte va changer dans les six prochains mois, dans la prochaine année, ici, si on a une couche de bâtiments qui nous est fourni par la ville de Montréal, il y a quelques problèmes techniques à résoudre avec celle-ci, mais si on pouvait l'importer, la carte de Montréal changerait radicalement et puis on aurait dans le fond une carte avec un sentiment beaucoup plus rempli, on verrait, on prévoit les bâtiments et on aurait également tous les numéros d'adresse dans ces bâtiments-là sur la ville et ça a augmenté de beaucoup l'utilisabilité de la carte OpenStreetMap à Montréal.