Dataviz avec ArcGIS : cartographier 3 variables complémentaires en RGB
Un update récent d'un de mes contacts Linkedin a attiré mon attention sur un mode de représentation jamais encore essayé sur ArcGIS : représenter sur une carte 3 variables complémentaires, c'est à dire dont la somme fait 100% par une composition colorée : rouge pour une variable, vert pour la seconde et bleu pour la troisième. Chaque variable est ramené d'un intervale de définition [0-100] à un intervalle [0-255]. La couleur d'affichage finale est la couleur définie par le triplet [rouge, vert, bleu].
L'exemple donné est le suivant : The colors of London's commute.
Comment réaliser ce type de représentation cartographique avec ArcGIS sans développement ?
Tout d'abord trouver des données adaptées... Trois variables qui se somment sur 100 et qui font sens sur une carte de France, en donnant un résultat cartographiquement parlant ? Secteurs d'activité primaire, secondaire et tertiaire, voila ce qui m'est venu à l'esprit, un peu facile, mais bon...
Les données :
- Le GeoFLA 2011 de l'IGN sera la base de la cartographie.
- A l'Insee, j'ai trouvé les données communales d'analyse fonctionnelle des emplois, basées sur la nomenclature PCS2003 et sur le recensement de la population de 2009 (mais sur une géographie 2011, ouf...).
Le fichier Excel téléchargé a été traité pour regrouper les "fonctions" en 3 secteurs : primaire (agriculture), secondaire (fabrication et BTP) et tertiaire (le reste). On obtient donc un tableau Excel à la commune avec un nombre d'emploi par secteur. On peut alors ajouter les 3 colonnes de parts en % du total des emplois, puis passer en mode RGB sur un intervalle [0,255] dans trois colonnes dédiées : secteur primaire = vert, secondaire = rouge et tertiaire=bleu. Vieux souvenirs de lycée...
Dans ArcGIS :
1. Joindre le fichier Excel aux communes du GeoFLA : simple sur le papier, sauf que l'Insee considère Paris, Lyon, Marseille comme des communes simples alors que le GeoFLA propose des communes "arrondissement". Il faut donc fusionner les polygones des arrondissements de chaque commune et affecter le même code Insee que dans le fichier Excel.
2. Comment arriver à la composition colorée attendue ? Pas de solution directe, sans développement, à priori dans ArcGIS... La stratégie choisie a été de passer par une rasterisation de la couche obtenue par la jointure vers 3 rasters : un rouge, un vert et un bleu. Les rasters seront ensuite assemblés en un seul raster multicanal pour un affichage RGB classique pour ce type d'image.
3. Un point clé ici est la résolution de la rasterisation, elle doit être adapté à l'usage de la carte (taille impression, limite de zoom avant, ...) mais aussi au temps de calcul attendu. Après quelques tests, j'ai choisi une résolution de 50m.
4. Le traitement se fait simplement avec un modèle de géotraitement assez basique :
La première étape du modèle consiste à créer 3 rasters (r,v,b) à partir de la classe d'entités Communes, avec une résolution de 50m :
Et voila le résultat final :
La carte est aussi interactive avec la possibilité d'interroger les communes et de visualiser les parts des secteurs d'activité pour chaque commune. Cela a été fait en créant un paquetage de carte tuilée depuis ArcGIS for Deskop et en le publiant sur ArcGIS Online. Les information de la fenêtre contextuelle d'interrogration proviennent d'un service d'entités basé sur les polygones communaux hébergé aussi sur ArcGIS Online.
L'application ArcGIS Online se trouve ici : http://bit.ly/XE6fXj
La solution aurait plus simple si j'avais pu utiliser les représentations cartographiques d'ArcGIS et utiliser les champs rouge, vert et bleu comme sources d'information pour la définition de la couleur de remplissage de chaque commune, le tout sans passer par une rasterisation des polygones. Si vous êtes d'accord avec moi, votez sur le site ArcGIS ideas pour supporter cette demande d'évolution d'ArcGIS !
L'exemple donné est le suivant : The colors of London's commute.
Comment réaliser ce type de représentation cartographique avec ArcGIS sans développement ?
Tout d'abord trouver des données adaptées... Trois variables qui se somment sur 100 et qui font sens sur une carte de France, en donnant un résultat cartographiquement parlant ? Secteurs d'activité primaire, secondaire et tertiaire, voila ce qui m'est venu à l'esprit, un peu facile, mais bon...
Les données :
- Le GeoFLA 2011 de l'IGN sera la base de la cartographie.
- A l'Insee, j'ai trouvé les données communales d'analyse fonctionnelle des emplois, basées sur la nomenclature PCS2003 et sur le recensement de la population de 2009 (mais sur une géographie 2011, ouf...).
Le fichier Excel téléchargé a été traité pour regrouper les "fonctions" en 3 secteurs : primaire (agriculture), secondaire (fabrication et BTP) et tertiaire (le reste). On obtient donc un tableau Excel à la commune avec un nombre d'emploi par secteur. On peut alors ajouter les 3 colonnes de parts en % du total des emplois, puis passer en mode RGB sur un intervalle [0,255] dans trois colonnes dédiées : secteur primaire = vert, secondaire = rouge et tertiaire=bleu. Vieux souvenirs de lycée...
Dans ArcGIS :
1. Joindre le fichier Excel aux communes du GeoFLA : simple sur le papier, sauf que l'Insee considère Paris, Lyon, Marseille comme des communes simples alors que le GeoFLA propose des communes "arrondissement". Il faut donc fusionner les polygones des arrondissements de chaque commune et affecter le même code Insee que dans le fichier Excel.
2. Comment arriver à la composition colorée attendue ? Pas de solution directe, sans développement, à priori dans ArcGIS... La stratégie choisie a été de passer par une rasterisation de la couche obtenue par la jointure vers 3 rasters : un rouge, un vert et un bleu. Les rasters seront ensuite assemblés en un seul raster multicanal pour un affichage RGB classique pour ce type d'image.
3. Un point clé ici est la résolution de la rasterisation, elle doit être adapté à l'usage de la carte (taille impression, limite de zoom avant, ...) mais aussi au temps de calcul attendu. Après quelques tests, j'ai choisi une résolution de 50m.
4. Le traitement se fait simplement avec un modèle de géotraitement assez basique :
La première étape du modèle consiste à créer 3 rasters (r,v,b) à partir de la classe d'entités Communes, avec une résolution de 50m :
Puis la dernière étape consiste à créer un raster à 3 canaux basés sur les résultats de l'étape précécente :
Et voila le résultat final :
La carte est aussi interactive avec la possibilité d'interroger les communes et de visualiser les parts des secteurs d'activité pour chaque commune. Cela a été fait en créant un paquetage de carte tuilée depuis ArcGIS for Deskop et en le publiant sur ArcGIS Online. Les information de la fenêtre contextuelle d'interrogration proviennent d'un service d'entités basé sur les polygones communaux hébergé aussi sur ArcGIS Online.
L'application ArcGIS Online se trouve ici : http://bit.ly/XE6fXj
La solution aurait plus simple si j'avais pu utiliser les représentations cartographiques d'ArcGIS et utiliser les champs rouge, vert et bleu comme sources d'information pour la définition de la couleur de remplissage de chaque commune, le tout sans passer par une rasterisation des polygones. Si vous êtes d'accord avec moi, votez sur le site ArcGIS ideas pour supporter cette demande d'évolution d'ArcGIS !