jeudi 28 mars 2013

Cartogrammes en Bois

Que ne te fait-on pas subir, Ôôô, sacro-sainte Géométrie!
De plus en plus, on remarque des transgressions cartographiques qui, soit altèrent la forme des objets géographiques, soit la simplifie à l'extrême. Dans certains cas, la géométrie importe peu car on s'attache plutôt à l'inter-relation des objets. C'est pourquoi on peut envisager des procédés dénaturants, surtout s'ils sont propulsés par des données. Nous allons explorer ceci au travers de certains types de cartogrammes ainsi que d'une carte appliquée à l'environnement: ça donnerait quoi, si l'on grignotait la surface des départements jusqu'à ce qu'elle corresponde à celle de ses forêts?

Représentation de variables continues

Différents moyens existent pour traduire des variables quantitatives continues au niveau d'objets géographiques. Ces différents moyens sont très bien décrits dans le livre de référence de sémiologie graphique de Jacques Bertin, livre dont j'aime bien exposer la couverture à défaut de l'avoir lu.

La sémiologie graphique, de Jacques Bertin

Méthodes classiques

Prenons le cas de polygones, on pourra jouer sur les couleurs en jouant sur la saturation ou la luminosité (value en anglais). La saturation correspond à la quantité de pigments gris que vous mélangerez à votre teinte de base (hue en anglais).


On pourra aussi jouer sur les trames qui composent l'objet: plus ou moins resserrées, de largeur, voire d'orientation variable.



On pourra aussi jouer sur les contours mais cela est moins fréquent dans les cartes car seul ce que contient un polygone nous intéresse en général.

Tous ces critères peuvent d'ailleurs se combiner afin de faire apparaître plusieurs variables au sein d'un même objet géographique et obtenir des visualisations multidimensionnelles. Imaginez qu'on additionne couleur + orientation[trame] + espacement[trame] + épaisseur[trame], cela permet de visualiser 4 variables en même temps (mais il est déconseillé de mettre cela en pratique sauf si vous avez de l'efferalgan sous la main)

Géométrie variable

Cartogrammes de Dorling

Il existe un paramètre dont on a peu parlé jusqu'à récemment car ce sont surtout les capacités de calcul de nos machines qui ont permis de l'exploiter. Il s'agit de la géométrie.

On pourra remplacer les objets géographiques par des cercles en évitant les recouvrements et en préservant les relations. On appelle cela les cartogrammes de Dorling. Ces cartogrammes s'obtiennent grâce à un processus itératif semblable à ce qui se passe lorsque vous empilez des boules les unes au-dessus des autres dans une boîte dont vous enlevez ensuite les bords. On associe couramment la largeur de ces boules à des variables quantitatives.

On pourrait d'ailleurs aller dans le multi-dimensionnel en remplaçant chaque cercle par un camembert. Cela dit, si pas mal de personnes aiment le camembert, les pizzas, les tartes - enfin, tout ce qui est rond et qui se découpe - les pie charts sont loin de faire l'unanimité.



Cartogrammes de Demers

On pourrait aussi remplacer ces cercles par des carrés. Le même processus itératif s'applique mais les algorithmes permettant de détecter les collisions diffèrent afin de prendre en compte la spécificité géométrique des carrés. On appelle ces rendus les cartogrammes de Demers.

Dans ce cas, l'astuce pourrait alors consister à intégrer des treemaps!



L'avantage des cartogrammes de Dorling et de Demers est qu'ils permettent de réduire considérablement la granularité des informations graphiques en simplifiant à l'extrême la forme des objets géographiques, ces derniers devenant des primitives géométriques. Aussi, ces cartogrammes permettent de rendre aisément des proportions tout en conservant les relations entre objets.


Cartogrammes dicontigus

Mise à part la substitution d'objets par des formes simples, on pourrait aussi appliquer des transformations affines (je ne parle pas ici de l'affinage du camembert de Dorling).



Pour ce qui des translations et des rotations, le résultat est difficilement lisible. On préfère généralement le redimensionnement. Le résultat est ce qu'on appelle les cartogrammes discontigus car le fait de rapetisser les formes supprime les relations de voisinage.

Nombre de personnes de 65 ans et plus -  Jim Valladingham sur http://indiemaps.com/

Si la librairie D3 permet d'ores et déjà de réaliser ces différents types de cartogrammes, je n'ai pas trouvé de fonction prête à l'emploi pour un outil libre de cartographie.


Deux méthodes pour les cartogrammes discontigus

Il existe deux méthodes pour réaliser ce type de cartogrammes.

Echelonnage

La première conserve les caractéristiques géométriques de la forme, sa complexité, en lui appliquant un facteur d'échelle.

Le principal avantage de cette technique est que la géométrie est préservée. On peut faire une analogie entre ce type de cartogramme et un jean's que vous retrouveriez rapetissé après lavage. Ce dernier garde bien sa forme mais sa taille change (c'est bête, vous ne pourrez alors plus le porter).



Appliquer un facteur d'échelle à un objet de 1/2 ne suffit pas à diviser sa surface par 1/2. C'est bien plus compliqué que cela. Généralement, avant de réaliser ce genre de cartos, une normalisation des données est réalisée afin que le ratio maximal soit ramené à un mais cela ne résout pas le problème du ratio..

Un inconvénient de cette méthode est que, dans les cas où la géométrie d'un objet est très complexe, il est possible que cette dernière  recouvre celle de référence, voire empiète sur la voisine, ce qui rompt une certaine idée de l'esthétique.



Erosion

La deuxième méthode utilise la méthode d'érosion. Elle consiste à éroder la forme jusqu'à obtenir une surface d'un certain ratio de la forme de référence.



Comme je ne connais pas l'équation qui permet de connaître la distance d'érosion à appliquer afin d'aboutir à une surface donnée, j'ai utilisé en remplacement une méthode itérative qui utilise un pas d'érosion fixé par l'utilisateur.

Le code pour chacune des deux méthodes sous R est disponible en bas.


Si l'on réduisait la surface des départements à la surface de leur forêt

Le choix de cartogrammes dicontigus

Une donnée m'a intéressé. Il s'agissait de la surface de forêt dans chacun des départements en 2008. Je l'ai récupérée sur le site de Data Publica qui est le plus grand annuaire français de données ouvertes (cette donnée vient à l'origine d'Agreste).

http://www.data-publica.com/opendata/4477--donnees-statistiques-historiques-sur-les-forets-en-france-de-1830-a-2008

Le nombre de méthodes de visualisation possibles pour une variable continue est si grand qu'il convient de sélectionner celle qui retranscrira le mieux possible le phénomène étudié.

La méthode de cartogramme discontigu par érosion s'associe bien à l'idée de grignotage.

J'ai donc choisi d'utiliser ce procédé afin de figurer la surface boisée tout en signifiant le phénomène de perte d'espaces naturels. La méthode a consisté à réduire la surface du département jusqu'à ce qu'elle corresponde à peu près à celle de ses forêts. Ainsi, il est aisé de comparer le département et sa forêt.

Voici le résultat obtenu après érosion. J'ai également fait figurer le résultat obtenu avec échelonnage de la donnée.

Proportion de surface boisée sous la forme de cartogrammes (en vert foncé, méthode érosive; en vert clair, échelonnage)

De la donnée au rendu cartographique

Le rendu est assez pauvre, avec un impact cognitif assez faible. La donnée mérite d'être habillée pour être sortable (sinon, c'est comme inviter un naturiste à une soirée déguisée).

TileMill

J'étais tombé il y a un moment sur un exemple plutôt impressionnant de représentation de données de sécheresse sur les USA

Carte de la sécheresse aux Etats-Unis - John Dilworth

Le réalisme de cette carte provient en fait de l'emprunt d'images réelles correspondant à la thématique sécheresse (le sol desséché et l'herbe, par contraste) déclinées en motifs utilisés en trame.

Le logiciel TileMill a été utilisé pour se faire car il est à ma connaissance un des seuls outils cartographiques qui permette d'utiliser des images en tant que trame ou de marqueur. Il permet aussi de superposer des couches de façon très sophistiquée grâce à différents modes de fusion (dont devrait se doter à l'avenir QGIS 2.0, patience).

J'ai donc décidé d'utiliser TileMill pour habiller ma donnée.


Réalisation de motifs

Dans un premier temps, il me fallait trouver des motifs qui correspondraient pour le premier à la forêt, pour le deuxième, au sol. Je suis allé sur le portail Creative Commons Search afin de trouver des images libres de droit.

Voici les images que j'ai trouvées:


Si l'on regarde la carte sur la sécheresse, on remarquera que les motifs semblent se répéter sans que l'on puisse les dissocier.

Il existe une petite manipulation sous Gimp qui permet de rendre des images raccordables et aboutir à des motifs raccords.

Voici les différentes étapes qui permettent d'obtenir des motifs depuis des images.



Habillage

L'habillage de données sous TileMill se fait sous un langage apparent au Cascading Style Sheet appelé CartoCSS avec des feuilles de style portant le suffixe mss pour Map Syle Sheet. Les balises CartoCSS sont différentes de celles du CSS car spécifiques aux données géographiques. Par exemple, une, appelée line-dasharray permet de spécifier la taille et l'espacement des tirets d'une ligne; une autre, appelée text-allow-overlap, permet d'autoriser ou non le recouvrement des libellés.

Voici la feuille de style de la carte:



Et la carte:

Surface boisée par département


La cartographie nécessitait traditionnellement la maîtrise d'outils spécifiques qu'à peu près seuls les géomaticiens maîtrisaient. TileMill a ceci de révolutionnaire qu'il contient un langage permettant aux webdesigners de s'approprier la discipline. Il supprime une barrière technologique de taille qui séparait le graphisme sur le web et la cartographie. Des analystes et des graphistes peuvent collaborer plus facilement grâce à ce produit hybride.


Code pour les cartogrammes





5 commentaires:

  1. j'ai perdu le compte des blagues et jeux de mots, mais l'article est bien intéressant! par contre je ne limiterais pas les espaces naturels aux surfaces de forêt: certaines forêts (la majorité en fait) n'ont plus grand chose de "naturel", et certaines zones - landes, pelouses, dunes, prairies d'altitude, etc. sont naturelles sans être des forêts...mais l'exercice est intéressant!

    RépondreSupprimer
  2. Excellent travail.

    J'ai essayé de reproduire les manipulations pour m'entraîner avec R mais je suis bloqué. Tout d'abord j'ai travaillé à partir d'un .shp au lieu de "DEPARTEMENT.rda" (je ne sais pas si cela a une influence sur mon problème. Tout va bien jusqu'au "ratios" où j'obtiens un message d'erreur
    "Warning message:
    In Ops.factor(DEPARTEMENT$Taux, 100) :
    / ceci n'est pas pertinent pour des variables facteurs"
    Je précise que je travaille avec RStudio. La valeur "ratios apparaît bien dans ma fenêtre Environnement mais je pense que le calcul ne se fait pas correctement car j'ai affiché (logi [1:96] NA NA NA...

    Est-ce que vous pourriez me renseigner sur ce problème. Je suis presque au bout donc j'aimerais bien arriver à produire les données.

    RépondreSupprimer
  3. Bonjour,

    Et merci pour le compliment.
    Cela vient sans doute du fait que la valeur de Taux que vous avez est de classe Factor au lieu de Numeric. Pour transformer votre variable en numérique, vous pouvez appliquer ceci : as.numeric(as.character([votre variable])).

    RépondreSupprimer
  4. Désolé de reposer une question, mais j'ai bien résolu le problème de Taux en Factor au lieu de Numeric. Mais lorsque je lance la commande "shrinked <- shrinkThat(deps, ratios, 1000)", le traitement se déroule bien jusqu'au polygone 91 où j'ai le message d'erreur "Error in if (diff[[i]] > diff[[i - 1]]) { :
    missing value where TRUE/FALSE needed
    In addition: There were 50 or more warnings (use warnings() to see the first 50)"

    la commande "warnings()" m'indique "1: In gBuffer(pol, width = -i * inc) :
    Polygons object missing comment attribute ignoring hole(s). See function createSPComment."

    Est-ce que vous avez rencontré ce cas lors de vos traitements ?

    Pierre

    RépondreSupprimer
  5. Non, je n'ai pas rencontré cela durant mes tests. Peut-être cela vient-il d'une valeur excessive pour l'érosion.

    RépondreSupprimer