29 novembre 2011

Tragicace - Un mashup d'OpenData

Dans le cadre du Hackathon qui s'est tenu le 12 novembre dernier, @SimonMercier, @RooSoft, @jipiboily et moi même (@MartinOuellet) avons développé Tragicace.

Tragicace = 2 objectifs bien précis:
  1. Indiquer aux citoyens la présence (ou non) de travaux le long d'un itinéraire routier (entre A et B par exemple)
  2. En présence d'un chantier, il devait aussi proposer un parcours alternatif évitant ainsi lesdits travaux.

Comment ça fonctionne:
1- La liste des travaux (fournie par la Ville de Québec) a été géoréférencée (association d'une coordonnée pour chacun), stockée dans une base de données (PostGIS) et affichée sur un fond cartographique (Google Maps).

2- Après avoir récupéré les adresses de départ et d'arrivée (saisies par l'usager dans l'interface Web), le système effectue un appel au service Web de Google pour générer un parcours routier (ensemble de coordonnées formant une ligne) entre ces deux points

C'est à ce moment que ça devient vraiment intéressant:
3- Le tracé retourné par le service de Google (point #2) est décodé et converti dans un format plus compréhensible par un humain soit le WKT.

4- Cette ligne en format WKT est ensuite utilisée dans une requête SQL spatiale pour identifier si elle croise des travaux routiers (point #1)

5- Si la requête ne retourne aucun résultat, la madame est contente car elle peut se rendre à destination sans avoir à traverser un chantier et c'est ici que l'histoire se termine pour elle.

6- Par contre, si la requête retourne un ou plusieurs enregistrements, on doit trouver un parcours alternatif.

7- C'est à ce moment que AQRéseau fait son entrée dans l'équation. AQRéseau est un produit qui fournit les données officielles sur la localisation des routes (couverture de lignes), la toponymie et la classification routière de tout le Québec et ce, de façon gratuite.

8- Tout comme les travaux, nous avons donc procédé au chargement de ce jeu de données dans notre base de données spatiale (PostGIS)

9- À partir de la coordonnée du point du chantier à contourner (point #6), nous avons identifié des rues localisées autour de ce point à l'intérieur d'un certain rayon. De cette façon, nous avons obtenu une liste de rues potentielles pour éventuellement éviter le chantier.

10- Le service Web de Google nous permet d'ajouter, dans les paramètres d'appel, le nom d'une rue à utiliser pour générer des itinéraires. Ce nouveau paramètre (waypoints) retourne un nouveau tracé dans lequel le passage sur la rue en question a été forcé.

11- Cet exercice (point #10) est donc effectué en boucle (sur toutes les rues avoisinantes) jusqu'au moment ou l'utilisation d'une rue n'engendre plus d'intersection avec des travaux routiers.

http://tragicace.com/

Pas parfait:
Certains diront, avec raison d'ailleurs, que le parcours alternatif proposé par Tragicace n'est pas nécessairement le meilleur (le plus court ou le plus efficace). Il ne faut pas oublier que l'objectif premier du Hackathon était de démontrer le potentiel des données ouvertes. Dans cette optique, je considère que Tragicace en est un très bel exemple car il intègre au sein d'une même application des données provenant de deux paliers de gouvernement (municipal et provincial). Autre fait à ne pas négliger, Tragicace a été développé en quelques heures seulement par 4 personnes.

Bravo à ces organismes qui ouvrent progressivement l'accès à leurs données et merci à mes chums "geeks" avec qui j'ai passé une excellente journée le 12 novembre dernier!

Pour en savoir davantage sur les données ouvertes et le Hackathon: