[R] Faire des anamorphoses cartographiques avec Getcartr

screen

Comment faire des cartogrammes avec R ?

Aujourd’hui, c’est possible grâce aux récents développements de Chris Brunsdon de l’université de Maynooth (Irlande) qui a réalisé un front office (Getcartr) permettant d’utiliser simplement et efficacement le package Rcartogram. La méthode d’anamorphose proposée par ce package est basée directement sur le code C développé par Mark Newman (cart). Cette méthode, conçue conjointement avec Michael Gastner, repose sur le processus physique de la diffusion de la chaleur (diffusion linéaire). L’idée directrice est qu’un gaz dense entouré de gaz moins denses va progressivement se diluer jusqu’à ce que la densité s’équilibre (e.g. goutte d’encre dans une piscine). Concrètement, le calcul de densité s’effectue dans une grille régulière donnée qui est progressivement déformée selon la valeur d’une donnée quantitative absolue (stock). Le fond de carte originel est ainsi déformé puis recréé sans produire d’erreurs topologiques. In finechaque polygone ainsi redessiné a une surface proportionnelle à la variable quantitative prise en compte. C’est la méthode la plus couramment utilisée dans les logiciels (arcGis, ScapeToad, …).

Référence : A Diffusion-based method for producing density equalizing maps, Michael T. Gastner and M. E. J. Newman, Proc. Natl. Acad. Sci. USA 101, 7499-7504 (2004)

Installation

L’installation s’effectue en deux temps.

1) Télécharger et installer le package Rcartogram.

http://www.omegahat.org/Rcartogram/

2) Installer le package Getcartr

Dans R, tapez la ligne suivante pour télécharger et installer package Getcartr développé par Chris Brunsdon :

library(devtools);install_github('chrisbrunsdon/getcartr',subdir='getcartr')

Vous pouvez aussi télécharger et installer manuellement le package : http://chrisbrunsdon.github.io/getcartr/

Utilisation

L’utilisation du package est extrêmement simple. Elle repose sur quelques instructions très faciles à mettre en oeuvre.

1) Faire un cartogramme

quick.carto permet de faire rapidement un cartogramme à partir d’un spatial dataframe et d’un vecteur. Rappelons ici que ce type de déformation – variable visuelle de taille en implantation zonale – s’applique uniquement à des données quantitatives absolues (i.e. données de stock). Attention, pour que la déformation soit correcte, la grille de calcul doit être suffisamment fine, c-à-d plus fine que la maille administrative. Pour réaliser une carte sur les régions européennes, j’ai par exemple utilisé une résolution de 4096 * 4096, ce qui accroît considérablement le temps de calcul. Mais si la grille de calcul est trop grossière, le résultat est erroné.

eu.carto <- quick.carto(spdf,spdf@data$DATA2_GDP2,res=4096)

img1

2) Afficher la grille de déformation

L’instruction dispersion permet d’afficher la grille de déformation. Cette instruction remplace l’ancienne instruction mesh, toujours présente dans le package, mais qui ne fonctionne pas.

dispersion

3)  Ajout d’autres couches à la déformation

warp.points, warp.lines, warp.polys  permettent d’ajouter d’autres couches à déformer en fonction du cartogramme. Cela permet par exemple de déformer un réseau routier en fonction d’une donnée absolue liée à un maillage administratif.

img2

NB : si de nombreuses couches sont à déformer, une approche alternative est proposée avec l’utilisation de carto.transform qui permet de créer une fonction de déformation alors applicable sur n’importe quel spatial dataframe.

 


Références : http://chrisbrunsdon.github.io/getcartr/

 


Vous aimerez aussi...

7 réponses

  1. bonjour! je n’arrive pas as faire linstallation
    1) Télécharger et installer le package Rcartogram.

    http://www.omegahat.org/Rcartogram/

    2) Installer le package Getcartr

    comme quoi.rcartogram n’existe pas ((

    > library(Rcartogram)
    Ошибка в library(Rcartogram) :нет пакета под названием ‘Rcartogram’
    > library(getcartr)
    Ошибка в library(getcartr) :нет пакета под названием ‘getcartr’
    > library(devtools);install_github(‘chrisbrunsdon/getcartr’,subdir=’getcartr’)
    Предупреждение:
    пакет ‘devtools’ был собран под R версии 3.2.3
    Downloading GitHub repo chrisbrunsdon/getcartr@master
    from URL https://api.github.com/repos/chrisbrunsdon/getcartr/zipball/master
    Installing getcartr
    Skipping 1 unavailable package: Rcartogram
    « C:/PROGRA~1/R/R-32~1.1/bin/x64/R » –no-site-file –no-environ –no-save \
    –no-restore CMD INSTALL \
    « C:/Users/serge/AppData/Local/Temp/RtmpsLVtym/devtools66c44dc3528/chrisbrunsdon-getcartr-fcfd4b3/getcartr » \
    –library= »C:/Users/serge/Documents/R/win-library/3.2″ –install-tests

    ERROR: dependency ‘Rcartogram’ is not available for package ‘getcartr’
    * removing ‘C:/Users/serge/Documents/R/win-library/3.2/getcartr’
    Ошибка: Command failed (1)

    pouvez vous m’aider a l’installer

  2. Andrianiaiana dit :

    Bonjour,
    Est ce qu’il y a deja des tuto sur son utilisation?

  3. Cerise dit :

    Bonjour Nicolas,

    Merci pour cet article.. mais je suis déjà bloquée à la première étape… j’ai téléchargé le package mais je n’arrive pas à l’installer 🙁
    Une petite aide ?

    • Nicolas Lambert dit :

      Ce billet date un peu. Nous réfléchissons à la mise en place d’autres solutions plus pratiques à utiliser. Mais pour l’instant, rien de vraiment opérationnel avec cet algorithme.

  1. 15/02/2015

    […] I want to build a cartogram by following this tutorial. […]

Répondre à Nicolas Lambert Annuler la réponse.

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *