J’avais parlé dans un précédant billet (ici) des fonds de cartes avec R. Pour reprendre rapidement, on peut faire des cartes simplement avec des commandes de la forme suivante,
> library(maps)
> map(database="world",regions="France")
Cette dernière commande permet de tracer une carte. Bon, le soucis avec la France (d’un point de vue de la programmation sous R, je ne veux me froisser avec personnes) ce sont ses territoires d’outre-mer.
> M1=map(database="world",regions="France",xlim=c(-5,10),ylim=c(40,52))
> str(M1)
’data.frame’:   27 obs. of  5 variables:
 $ montant: num   1180374 10897008  6662276  9516513  2102222 ...
 $ Y1     : num  2003 2003 2003 2003 2003 ...
 $ Y2     : num  2004 2005 2006 2007 2008 ...
 $ Z1     : num  1 1 1 1 1 1 2 2 2 2 ...
 $ Z2     : num  1 2 3 4 5 6 1 2 3 4 ...
Pour faire quelquechose d’un peu plus joli, on peut utiliser une autre carte. 
> M1=map("france")

Remarque: il faut juste faire attention, sur les cartes un peu grandes sur le style de projection utilisé, qui peut donner des résultats plus ou moins curieux.... Mais c’est un sujet un peu compliqué, et hors sujet (pour l’instant, on verra si je trouve le temps un jour).
J’avais déjà abordé (ici) l’utilisation des départements français avec R. voici une autre méthode, basé sur le fichier dept.rda comprenant la liste des 95 départements français (nom et code). Il est disponible ici. En reprenant le code donné sur la page , on obtient
 > my.cols <- c(rgb(231/255,240/255,251/255),rgb(180/255,210/255,244/255),
               rgb(129/255,180/255,237/255),rgb(0/255,78/255,162/255))
> load("D:\\dept.rda")
> set.seed(1234)
> xx <- data.frame(names=dept[sample(1:95,15),1],n=round(seq(5,300,length=15)))
> xx$grp <- cut(xx$n,breaks=c(0,50,100,250,1000),labels=FALSE)
> map(’france’)
> map(’france’,regions=xx$names,col=my.cols[xx$grp],fill=TRUE,add=TRUE)

  • Utilisation de fichiers shp
Sur le site ici on peut récupérer des fonds de cartes gratuit au format shd (je renvoie ici pour plus de détails sur les cartes avec le langage S). En particulier, la France est dans le fichier zippé ici, ou encore (mais qui semble ressembler au premier), pour une version plus fine.On a aussi des données sur les communes ici ou , voire encore ici ou . Il y a dans ce lot des cartes dites RGC - par code postale. Le soucis est que ces cartes sont au format txt. Il semble (ici) qu’il soit possible de convertir en csv puis en shd, mais sans succès pour l’instant...
Par contre on peut toujours bricoler puisqu’on a les coordonnées de toutes les communes.... 
> B=read.table("http://perso.univ-rennes1.fr/arthur.charpentier/gc_2008b.csv",sep=";", header=TRUE)
> plot(B$XLAMB2,B$YLAMB2,col="red",cex=.2,pch=19)
> plot(B$XLAMB93,B$YLAMB93,col="green",cex=.1,pch=19)
> plot(B$LONGI_GRD,B$LATI_GRD,col="purple",cex=.1,pch=19)
> plot(B$LONGI_DMS,B$LATI_DMS,col="blue",cex=.1,pch=19)

On peut alors directement utiliser un fichier d’élections, par exemple le pourcentage de votes exprimés lors de l’élection présidentielle de 2002 (ce qui n’a aucun sens, je sais bien, un ville de 200 électeurs étant représentée comme une ville de 200 000). Les points rouges correspondent aux communes où le taux de votes exprimés était inférieur à 70%, et en vert, les communes où il était supérieur à 90%. L’exercice n’avait a priori aucun intérêt, pourtant on voit clairement se détacher des régions sur cette carte.
On peut aussi regarder les communes qui ont été déclarées victimes d’une catastrophe naturelle, par exemple les inondations. Une étude par mois donne la carte dynamique suivante
(on retrouve l’absence de corrélation et la forte corrélation spatiale sur ces cartes).
Il existe aussi des bases locales, par exemple les réserves naturelles Bretonnes, ici, ou les zones phytogéographiques, . Bon, promis, après j’arrête, on peut aussi trouver des données sur les routes ici (sur toute l’Europe). Voici quelques exemples de mise en oeuvre, avec tout d’abord des fonds de région et de départements,
> library(maptools)
> SHP="http://perso.univ-rennes1.fr/arthur.charpentier/fr.shp"
> M3=readShapePoly(SHP))
> plot(M3) 

et
> SHP="http://perso.univ-rennes1.fr/arthur.charpentier/fra.shp"
> M4=readShapePoly(SHP))
> plot(M4)

Notons qu’on peut importer autre chose que des régions (i.e. des polygones): on peut lire des lignes ou des points. Par exemple
> SHP="http://perso.univ-rennes1.fr/arthur.charpentier/railways.shp"
> M5=readShapeLines(SHP)
> plot(M5)
> map("france")
> lines(M5 ,col="red")
ou encore
> SHP="http://perso.univ-rennes1.fr/arthur.charpentier/waterways.shp"
> M6=readShapeLines(SHP)
> plot(M6)
> map("france")
> lines(M6 ,col="blue")

C’est joli non ?
Côté routes, je me contente de faire un dessin sur la Bretagne, le fichier est suffisement lourd comme ça
.
On pourrait continuer indéfiniment, la solution la plus simple semblant être de trouver des fichiers gratuits de cartes au format shp.
  • Les autres formats de fond de carte

Sinon il est aussi possible d’utiliser des fichiers de type .ai. C’est un peu plus vicieux, mais on peut les ouvrir via Adobe Image, et ensuite les sauver... Par exemple, j’ai récupéré le fichier des circonscriptions électorales. On peut alors l’utiliser pour visualiser la couleur politique du député (bon, c’est un peu facile je sais, mais je n’ai pas d’autres idées). A suivre...
Il existe aussi les fichiers dcw (Digital Chart of the World), qui se trouvent un peu partout sur internet, ici par exemple.
Beaucoup de choses se développent en ce moment sur ce sujet, par exemple ici, ou encore ici, ou (ou même pour des choses un peu plus techniques). A suivre donc...

PS et promis, la prochaine fois, je parle de lissage spatial...