Univers Libre

Patinoires de Montréal et données ouvertes

Written on 5 January 2019, 02:29 CET
Tags: code.

Dernièrement je me suis amusé à exploiter les données ouvertes que la ville de Montréal maintient sur les conditions de glace des patinoires publiques.

L'état de chaque patinoire est indiqué sur le site de la ville. Un fichier XML mis à jour quasi-quotidiennement durant la saison peut être trouvé ici, les données sont sous licence Creative Common BY 4.0.

L'idée était de pouvoir vérifier les conditions plus simplement que d'ouvrir mon navigateur, en une seule commande. Voici donc patinoires-mtl. Les cas d'usage sont mis en exemple dans le README : lister les patinoires ouvertes, afficher les conditions d'une ou plusieurs patinoires et, bonus, une sous-commande watch qui retourne les conditions seulement si elles ont changées, ce qui me permet d'envoyer ça à mail ou sendxmppet à mettre encron` pour être alerté dès qu'il y a un changement.

Lister les patinoires ouvertes :

$ ./patinoire.py list --open
Skating rink                                          Open
----------------------------------------------------  ----
Patinoire Bleu Blanc Bouge du parc Hayward (PSE)      1
Patinoire Bleu-Blanc-Bouge, Parc Confédération (PSE)  1
Patinoire réfrigérée, Lac aux Castors (PP)            1

Lister les patinoires du Plateau-Mont-Royal :

$ ./patinoire.py list --borough pmr
Skating rink                                           Open
-----------------------------------------------------  ----
Grande patinoire avec bandes, La Fontaine (PSE)        0
Patinoire avec bandes, Baldwin (PSE)                   0
Patinoire avec bandes, Jeanne-Mance (PSE)              0
Patinoire avec bandes, Sir-Wilfrid-Laurier no 1 (PSE)  0
Patinoire avec bandes, Sir-Wilfrid-Laurier no 2 (PSE)  0
Patinoire avec bandes, Sir-Wilfrid-Laurier no 3 (PSE)  0
Patinoire De Gaspé/Bernard (PSE)                       0
Patinoire de patin libre, Baldwin (PPL)                0
Patinoire de patin libre, Jeanne-Mance (PPL)           0
Patinoire de patin libre, Sir-Wilfrid-Laurier (PPL)    0
Patinoire décorative, De Lorimier (PP)                 0
Patinoire décorative, La Fontaine (PP)                 0

Afficher les conditions d'une patinoire en particulier :

$ ./patinoire.py conditions "lac aux castors"
                                            Open  Cleared  Sprayed  Resurfaced  Condition   
------------------------------------------  ----  -------  -------  ----------  ----------  
Patinoire réfrigérée, Lac aux Castors (PP)  1     1        1        1           Excellente 

Et une fonction pratique, pour être notifié d'un changement de condition sur une patinoire :

$ ./patinoire.py watch "lac aux castors"
                                            Open  Cleared  Sprayed  Resurfaced  Condition
------------------------------------------  ----  -------  -------  ----------  ----------
Patinoire réfrigérée, Lac aux Castors (PP)  1     1        1        1           Excellente
Updated on 2018-12-08 09:05:28
$ ./patinoire.py watch "lac aux castors"
$
[a few days later]
$ ./patinoire.py watch "lac aux castors"
                                            Open  Cleared  Sprayed  Resurfaced  Condition
------------------------------------------  ----  -------  -------  ----------  ----------
Patinoire réfrigérée, Lac aux Castors (PP)  1     1        1        1           Bonne
Updated on 2018-12-10 09:03:56

Comme j'adore les cartes, j'ai aussi fait patinoires-mtl-leaflet, qui permet de geolocaliser toutes les patinoires de Montréal sur un fond de carte OpenStreetMap et d'afficher leur état. Bon pour le coup, c'est de nouveau dans le navigateur forcement... La couleur des patinoires est en fonction de leur état. Un aperçu ici : https://univers-libre.net/patinoires-mtl/.

Pour la géolocalisation des patinoires, la ville de Montréal ne fournit aucune données. OpenStreetMap ne contient que très peu de patinoires non plus, et ça allait être compliqué de faire correspondre les noms des patinoires du XML de la ville avec ceux dans OpenStreetMap de toute façon. C'est alors que je suis tombé sur une application Android qui fait à peu près la même chose et qui a un fichier geojson avec la géolocalisation de toutes les patinoires. Rien n'est indiqué concernant la licence ou la provenance de ces données par contre.

L'outil en ligne de commande est en anglais et la carte est en français, ça ne fait aucune cohérence et comme ça tout le monde/personne (n')est content.

Je ne pense pas y faire d'autres modifications à part rajouter probablement la même chose pour les conditions des pistes de ski de fond.