Visualisation de données statistiques avec Silverlight
Avec le mouvement Open Data et sa dynamique, ce sont désormais des quantités énormes de données qui vont être rendues disponibles et consultables par le citoyen. Bien que rendre disponibles ces données dans des fichiers dits « plats » constitue une première étape dans la libération des données, pour la plupart des personnes, ce ne sont pas les données en elles-mêmes qui sont intéressantes mais plutôt les informations que l’on peut en tirer. Les personnes veulent savoir ce que les données qu’elles consultent signifient. Si vous les aidez dans leur réflexion alors vous aurez beaucoup de succès.
Une des meilleures façons pour explorer et comprendre de larges ensembles de données est d’utiliser des processus de visualisation (treemapping). Placez les nombres sur un « espace visuel » et laissez le cerveau des lecteurs trouver les explications, les corrélations et les conclusions. Nous sommes très bons pour ça.
Via ces processus, vous pouvez souvent tirer des conclusions que vous n’auriez pas trouvées en faisant des analyses statistiques formelles.
De plus, l’interprétation de ces données est rendue plus facile et plus accessible à tout le monde, ce qui va dans le sens du mouvement démocratique qu’est l’Open Data.
Le département de Saône-et-Loire, sous l’impulsion de son président Arnaud Montebourg, vient de lancer son site Open Data 71 (Cf. billet Le département de Saône-et-Loire lance son site Open Data).
Dans le souci de rendre l’information accessible à chacun, le département s’engage à mettre en ligne toutes les données (excepté les données nominatives ou personnelles bien entendu), mêmes celles susceptibles de fâcher.
« Nous ne nous contentons pas de la transparence, nous nous engageons aussi sur des données qui peuvent potentiellement nous mettre en difficulté. Open Data 71 n’est pas une coquetterie de modernité mais une volonté d’associer la population à des décisions politiques nécessaires, même si elles sont impopulaires », souligne encore Arnaud Montebourg.
Finances publiques, dépenses, travaux, marchés publics ou encore transports scolaires, les habitants de Saône-et-Loire ont désormais accès à une cascade d’informations sur leur département en quelques clics.
« Toutes les données publiques seront mises à disposition, y compris celles concernant les frais de fonctionnements des élus, les fournisseurs du conseil général (marchés publics), les subventions octroyées ou encore la gestion de la dette », assure Pierre Martinerie, vice-président du conseil général, chargé du développement durable, de la démocratie participative et du projet stratégique pour la Saône-et-Loire.
Dans ce contexte, intéressons-nous au développement d’une application de suivi des dépenses budgétaires du conseil général. (A ce propos, l’ensemble de données Subventions a déjà été téléchargé ou visualisé plus de 4000 fois en seulement 7 jours.)
Nous l’intitulons « CG71 Open Finances » pour la circonstance. Comment procéder en termes d’approches architecturale et technique ?
Pour permettre la visualisation avancée des données, notre choix se porte naturellement sur la technologie Silverlight.
Sur cette fondation, l’application met à disposition plusieurs diagrammes et une carte permettant de visualiser les données géo-localisées.
Pour les diagrammes, nous nous tournons du côté du kit Silverlight Toolkit disponible en téléchargement sur la forge Codeplex, la communauté Open Source sur les technologies Microsoft.
Cet ensemble de bibliothèques offre, en effet, des composants graphiques très riches, et notamment des solutions de visualisation des données à l’aide de différents diagrammes. Des exemples d’utilisation du Silverlight Toolkit sont disponibles ici. Vous trouverez notamment des exemples de code sur tous les composants graphiques ainsi proposés et prêts à l’emploi.
Le site Open Data 71 se fonde pour mettre en place la politique Open Data du département de Saône-et-Loire et celle des données sur le kit de démarrage OGDI (Open Government Data Initiative) disponible sous licence libre (Microsoft Public License (Ms-PL) et téléchargeable sur le Centre de téléchargement Microsoft ici.
C’est donc tout naturellement que l’application Silverlight consomme le service de données OData exposé par l’instance OGDI du département hébergée dans le Cloud Windows Azure, en l’occurrence https://opendata71.cloudapp.net/v1/data.
Ce service de données constitue l’interface d’accès aux données destinée au développement d’applications. L’utilisation de cette interface facilite grandement les développements d’applications en offrant la possibilité de requêter directement les données, avec toute la sémantique associée, et ce, sans avoir à les télécharger et stocker préalablement dans leur ensemble sur l’environnment d’exécution (smartphone, tablette, portable, etc.), depuis n’importe quel environnement (de développement), technologie et/ou langage.
Au niveau de l’architecture, l’application « CG71 Open Finances » s’appuie, pour la couche d’accès aux données, sur une bibliothèque qui se connecte au service de données précédent et récupère toutes les données adéquates et les garde en mémoire dans un répertoire, suivant le classique design pattern du « repository ». Il s’agit dans notre illustration du répertoire TravauxBatimentsRepository.
Le répertoire TravauxBatimentsRepository expose ensuite les enregistrements qui seront ensuite utilisés et retravaillés à plus haut niveau par l’application Silverlight pour obtenir des collections de données sur lesquelles viendront se lier les contrôles graphiques (les diagrammes dans le cas présent).
Ainsi, dans le code XAML suivant par exemple, nous définissons un contrôle de type Chart dont le rôle est de contenir un diagramme et « d’habiller » ce diagramme avec une légende, un titre, différents styles, etc.
Ensuite à l’intérieur de cet élément Chart nous insérons un diagramme circulaire qui sera lié à une collection d’animaux comme source de données. Notez enfin les propriétés IndependentValueBindinget DependentValueBinding qui sont les propriétés sur lesquelles on vient lier les propriétés des objets de notre source de données qui vont servir à générer les différentes valeurs du diagramme.
<chartingToolkit:Chart Title="Pie">
<chartingToolkit:Chart.Series>
<chartingToolkit:PieSeries IndependentValueBinding="{Binding Species}"
DependentValueBinding="{Binding Count}">
<chartingToolkit:PieSeries.ItemsSource>
<toolkit:ObjectCollection>
<samples:Pet Species="Dogs" Count="3"/>
<samples:Pet Species="Cats" Count="4"/>
<samples:Pet Species="Birds" Count="2"/>
<samples:Pet Species="Mice" Count="3"/>
</toolkit:ObjectCollection>
</chartingToolkit:PieSeries.ItemsSource>
</chartingToolkit:PieSeries>
</chartingToolkit:Chart.Series>
</chartingToolkit:Chart>
Comme vous pouvez le constater, on peut donc se lier à n’importe quelle source de données et ensuite définir les propriétés des objets de la source de données que l’on veut afficher sur le diagramme. Le principe utilisé sur l’application « CG71 Open Finances » est exactement le même, en remplaçant la source de données par la propriété Itemsde la classe TravauxBatimentsRepository et les propriétés IndependentValueBindinget DependentValueBinding par les noms des propriétés souhaitées (Key et Value en l’occurrence vu que la propriété Items est une collection d’objets de type KeyValuePair<string,double>).
Le modèle de programmation est le même pour tous les composants de visualisation de données du Silverlight Toolkit étant donné que les classes PieSeries, ColumnSeries, BarSeries, BubbleSeries, etc. dérivent toutes de la classe DataPointSeries qui définit les propriétés ItemsSource, IndependentValueBindinget DependentValueBinding.
Ce découplage entre la représentation graphique et le modèle logique des diagrammes permet à tout moment de changer le visuel des diagrammes sans avoir à modifier le code métier de l’application ; ce qui, en termes de maintenabilité et d’agilité, n’a pas de prix.
Ce billet constituait une introduction à la visualisation de données avec Silverlight et, plus particulièrement avec le Silverlight Toolkit. Néanmoins la partie non-technique de ce billet est valable et s’applique pour n’importe quelle technologie.
La mise en scène des données est vraiment très importante si vous voulez apporter une plus-value à vos applications et si vous voulez mettre en valeur vos données et en favoriser l’exploration par les citoyens. Actuellement, les initiatives Open Data allant plus loin que la simple mise en ligne de fichiers plats se démarquent largement du reste du peloton en termes d’impact sur le marché et proposent aux utilisateurs de leurs services une bien meilleure expérience.
A ce propos, avec le lancement du site Open Data 71, le département de Saône-et-Loire met en place un concours d’applications ouvert à tous. Si le billet vous a donné des idées et des envies, n’hésitez. C’est le moment de vous inscrire et de participer !