Tuto : Créer des cartes personnalisées (polygones) avec Tableau Public

Alors que Google Fusion tables et CartoDB créent facilement des cartes choroplèthes à partir, respectivement, de fichiers kml ou shp, Tableau Public ne fait pas montre de la même souplesse. Mais on peut facilement y remédier. Explication et démonstration avec les 589 communes belges. En texte, images et vidéo.

Introduction

Une carte choroplèthe, c’est un nom compliqué pour désigner une représentation géographique que tout le monde connaît : des territoires (pays, régions, communes, départements…) sont colorés ou remplis d’un motif en fonction d’une mesure statistique (densité de la population, revenus, résultats électoraux…)

carte1

Google Fusion Tables (exemple ci-dessus) et CartoDB permettent de créer facilement ces cartes colorées en injectant les fichiers ad hoc, kml pour le premier, shp notamment pour le second. Pour faire simple, ces fichiers kml (keyhole markup language) et shp (shapefile) indiquent au service cartographique où et de quelle manière doivent être créés les polygones, ils sont constitués pour l’essentiel d’une série de coordonnées géographiques que le programme va relier par des traits.
Tableau Public, programme d’analyse et de visualisation de données multifonction, crée – dans certaines limites – plus facilement encore ces polygones : si par exemple votre jeu de données contient des noms de pays, il pourra les tracer et les coloriser automatiquement sur une carte du monde. A l’intérieur des pays, le niveau de granularité est à voir au cas par cas : les départements français sont automatiquement reconnus et pour la Belgique, régions, provinces et arrondissements peuvent être dessinés sans intervention de l’utilisateur. Mais ce n’est pas encore le cas pour les 589 communes.
Et c’est là qu’est le hic : lorsqu’un territoire n’est pas nativement intégré à Tableau Public, il ne suffit pas d’injecter le fichier kml ou shp correspondant pour y remédier, ces fichiers ne sont pas reconnus par le logiciel et quelques manipulations s’imposent. C’est l’objet de ce tuto. Une vidéo est également disponible en bas de l’article.

Trouver le bon fichier shp

Créer une carte choroplèthe sur-mesure avec Tableau impose de trouver le bon fichier shp (oubliez, pour le coup, les kml). Des milliers sont disponibles sur internet mais le meilleur point de départ est sans doute gadm.org :  on y trouve les limites administratives de centaines de pays, dans plusieurs formats et avec différents niveaux de granularité. Pour les communes belges, on ira donc dans Download et dans les menus déroulants, on choisira Belgium ainsi que le format Shapefile. Puis on clique sur OK et apparaît une carte de Belgique avec les différentes limites administratives valables : les Régions en rouge, les provinces en bleu, les arrondissements en vert, les communes en noir.

carte2

On valide en cliquant sur le bouton Download qui est en-dessous de la carte et en enregistre ainsi le fichier shp zippé.

Nettoyer le shp

Si on ouvre le fichier zip qui vient d’être téléchargé, on voit qu’il contient les limites administratives de chaque niveau de pouvoir, du plus grand (niveau 1, pouvoir fédéral) au plus petit (niveau 4, pouvoir communal). C’est ce dernier qui nous intéresse.

carte3

Ne doivent donc être conservés dans ce fichier compressé que les 6 fichiers relatifs au niveau 4 : BEL_adm4.shx, BEL_adm4.shp, BEL_adm4.prj, BEL_adm4.dbf, BEL_adm4.csv et BEL_adm4.cpg. Tout le reste doit être enlevé pour éviter de contrarier la future conversion, y compris le fichier licence.txt.

Convertir le fichier shp

Pour pouvoir être interprétées par Tableau, les informations contenues dans ce *.zip doivent être converties en *.csv. Le plus simple est de se servir du convertisseur mis à disposition gratuitement par Alteryx.

carte4

Uploadez le fichier zip que vous venez de nettoyer puis cliquez sur Run : Alteryx va le convertir en csv.

Nettoyer le csv 

Pour que ce csv puisse être importé sans souci dans Tableau, il faut l’épurer, supprimer les colonnes superflues. Editez donc ce csv dans un tableau (je conseille Libre Office plutôt que Excel, ce dernier gérant pitoyablement les csv) en ne conservant que les colonnes indispensables : PolygonID, ID_4, NAME_4 (qui contient les noms des communes), SubPolygonID, PointID et bien sûr les latitudes et longitudes. Soit ici 7 colonnes mais dans tous les cas, il en faut moins que 10.  Sauvez votre fichier modifié mais laissez-le ouvert.

carte5

 

Importer le csv dans Tableau

Ouvrez maintenant Tableau et importez ce csv (Connexion d’un jeu de données/Fichier texte).
Lorsque ce csv a été importé, nouvelle démonstration de la loi de Murphy : toutes les données apparaissent dans une seule colonne, qu’il faut donc scinder pour répartir tous les champs en autant de colonnes.

carte6

Pour effectuer cette scission (comparable à la commande Convertir sous Excel), sélectionner l’en-tête de cette colonne unique et optez pour “scission personnalisée”.

carte7

Inscrivez la virgule comme séparateur et optez pour Scinder toutes les colonnes. Au passage, remarquez qu’on peut répartir le contenu de cette colonne unique en 10 nouvelles colonnes au maximum : il était donc impératif de nettoyer le csv originel, qui en contenait davantage.

carte8

Voici le résultat de la scission  :

carte9

Mais deux soucis encore et donc deux manipulations :

  • Le nom des en-têtes de colonnes n’a pas été scindé. Ces colonnes portent toutes le même nom, il faut donc les renommer en cliquant sur la même petite flèche que précédemment. Pour éviter toute confusion, le mieux est de les renommer comme dans la feuille de calcul, qu’on a expressément laissée ouverte.
  • Latitude et longitude ont été interprétées comme de banales chaînes de caractères, on le voit avec cette pastille Abc dans leur en-tête.
    carte10
    Cliquez simplement sur ces lettres Abc et transformez cette chaîne de caractères en Nombre décimal.

    carte11

    Le csv est maintenant prêt, vous pouvez vous connecter à votre feuille Tableau Public et créer votre carte.

Dessiner la carte avec Tableau

C’est l’opération la plus rapide. Il faut d’abord indiquer à Tableau que les colonnes Latitude et Longitude contiennent effectivement des lat. et des long. : faites-les glisser de l’étagère Dimensions à l’étagère Mesures et précisez leur rôle géographique (lat et long).

carte12

Double-cliquez sur ces champs Latitude et Longitude pour qu’ils se placent automatiquement en lignes et colonnes.

Faites ensuite glisser les champs PolygonID et SubPolygonID sur Détails, sélectionnez un graphe de type Polygones sous Repères (Marks, dans la version US de Tableau), faites glisser PointID sur Chemin (Path en anglais) et pour colorer le tout, le champ “Commune” sur l’onglet Couleur.

carte13

Voici, la carte est terminée. Bien entendu, elle ne contient à ce stade aucune information utile, pas de variable statistique à représenter. Pour ajouter ces variables, deux solutions : soit les greffer à votre csv lorsque vous l’avez ouvert précédemment dans Libre Office, soit, plus élégamment et plus efficacement, ajouter cette seconde feuille de calcul à Tableau (une feuille contenant par exemple les noms des communes et l’évolution de leur population au fil des ans) en procédant à une jointure. Ce qui fera sans doute l’objet d’un nouveau tuto.

En vidéo

Toute l’opération est également visible, en temps réel, sur la vidéo ci-dessous.

 

Pour toute question, suggestion, correction : joelmatriche{at}gmail.com ou @joelmatriche sur Twitter.