Hello, I’m Vinch

And this is my website.

La qualité de l’air en Belgique

06/14/11

This post is more than 6 years old. It might not reflect my current skills and convictions.

Cela peut paraître bizarre, mais pour un projet obscur et personnel, j’avais besoin de connaître, plus ou moins en temps réel, la qualité de l’air de quelques villes belges importantes.

Los Angeles smog

En regardant la météo de Tatiana Silva, j’ai remarqué qu’il semblait y avoir une autorité compétente pour ce genre de données en Belgique : la Cellule Interrégionale de l’Environnement ! (remarquez au passage le site Web qui semble ne pas avoir bougé depuis 1999)

J’ai découvert qu’ils disposaient des indices de qualité de l’air de plusieurs villes (Bruxelles, Anvers, Gand, Liège et Charleroi) ainsi que d’indices plus généraux (zones et régions). Tout est disponible sur cette page. L’indice de qualité de l’air est exprimé dans la dernière colonne, sous la forme d’une barrette colorée. L’indice peut varier de 1 (tout est génial) à 10 (on va tous mourir). En règle générale, il se situe entre 3 et 5.

Juste pour le sport, je leur ai envoyé un email pour leur demander s’ils disposaient d’un web service qui renvoyait du XML, ou mieux, du JSON. Juste pour le sport car je savais très bien que :

  • Ils ne disposaient certainement pas de web service public
  • Ils ne répondraient jamais à mon email

Je ne me suis pas abattu pour autant et j’ai décidé de le faire moi-même en utilisant la technique du Web scraping sur la page précédemment linkée. J’avais déjà parlé du scraping dans un précédent post sur les hackers. Pour rappel, il s’agit d’une technique qui consiste à parcourir le code source HTML d’une page pour en extraire les informations qui nous intéressent. En soi, ce n’est pas un truc ultra légal, et c’est donc à utiliser en dernier recours.

Pour réaliser mon scraping, j’ai utilisé la librairie Goutte de Fabien Potencier (encore lui). En quelques lignes de code, j’ai réussi à obtenir les informations qui m’intéressaient. Pour être tout à fait clean, j’ai mis en place un système de cache qui fait en sorte que le scraping n’aura lieu qu’au maximum 24 fois par jour (ou une fois par heure si vous préférez) vu que l’indice est mis à jour toutes les heures. Donc, cela limite les risques de trop abimer les serveurs de irceline.be !

Le code source du web service est sur Github et est disponible en ligne à l’URL suivante :

http://v1n.ch/air/data.php

En l’appelant sans paramètres, il renverra l’indice pour toutes les villes. Vous pouvez également cibler une ville particulière via le paramètre city qui prend comme valeur le LOCODE de la ville en question :

  • BRU = Bruxelles
  • ANR = Anvers
  • GNE = Gand
  • LGG = Liège
  • CRL = Charleroi

Par exemple :

http://v1n.ch/air/data.php?city=CRL

Et comme certains préjugés tenaces pourraient le laisser penser, la qualité de l’air à Charleroi n’est pas systématiquement plus mauvaise qu’ailleurs !

J’ai également mis à disposition deux exemples d’utilisation du web service.

Le premier exemple (code source) va utiliser la fonction de géolocalisation de votre navigateur (navigator.geolocation) pour afficher l’indice de la ville la plus proche d’où vous vous trouvez. Evidemment, c’est un peu débile dans le cas où vous testez le truc depuis un pays lointain ! Par exemple, depuis Tokyo, on vous donnera l’indice de Liège, mais bon… (soyez tolérants)

Le second exemple (code source) affiche simplement une carte (Google Maps) un peu moche avec les indices. Rien de fortement original mais je ne pouvais pas passer à côte ! D’ailleurs, si quelqu’un trouve un moyen simple d’afficher directement l’indice dans l’icône pour ne pas être obligé d’afficher l’infobulle, je suis preneur ! (en évitant aussi de devoir créer 10 icônes en PNG)

N’hésitez pas à forker sur GitHub pour ajouter vos exemples et faire vos correctifs. Tenez moi également au courant si vous utilisez le Web service dans un projet de fou !

A la prochaine et bon vent !

4 comments

Leave a comment