De la non-connexité du Vaucluse

Avant-hier, José, un ancien collègue rennais me faisait noter une bizarrerie de la cartographie (et me posait des questions sur l’impact sur les cartes faites avec R). En fait, il m’a fait découvrir que le département du Vaucluse n’était pas connexe. Comme on le voit sur la carte ci-contre, il y a l’enclave des papes, qui est enclavé dans la Drome, mais administrativement rattachée au Vaucluse. Étonnant non ?

Maintenant avec R, ce genre de choses existent. Par exemple, il est possible de travailler avec les îles, qui sont rattachées à tel ou tel département. Regardons ce qui se passe ici, avec les cartes standards de R,

>  library(maps)
>  france = map(database="france")
>  france$names
  [1] "Nord"                                
  [2] "Pas-de-Calais"

(…)

 [92] "Gard"                                
 [93] "Vaucluse"                            
 [94] "Tarn-et-Garonne"                     
 [95] "Alpes-Maritimes"                     
 [96] "Vaucluse"                            
 [97] "Tarn"                                
[108] "Hautes-Pyrenees"                     
[109] "Var:Iles d'Hyeres:I. du Levant"      
[110] "Var:Iles d'Hyeres:I. de Porquerolles"
[111] "Var:Iles d'Hyeres:I. de Port Cros"   
[112] "Haute-Corse"                         
[113] "Pyrenees-Orientales"                 
[114] "Corse du Sud"

On voit que le Vaucluse apparaît deux fois dans la liste des départements. Pour les îles, elles sont rattachées à un département avec un nom spécifique (comme on le voit sur l’île de Porquerolles, par exemple). Mais pas l’enclave des papes. En fait, si on cherche le Vaucluse, il apparaît deux fois

>  which(substr(tolower(france$names),1,5)=="vaucl")
[1] 93 96

Aussi, si on colore le Vaucluse, c’est le département tout entier (avec l’enclave) qui ressort,

 Le code est ici

>  dpt="Vaucluse"
>  couleur="red"
>  match=match.map(france,dpt)
>  color=couleur[match]
>  map(database="france", fill=TRUE, col=color)

On peut aussi faire ressortir l’enclave. Pour cela, il suffit d’aller demander de colorer de manières différentes les deux régions,

>  match[which(match==1)[2]]=2
>  couleur=c("blue","red")
>  color=couleur[match]
>  map(database="france", fill=TRUE, col=color)

Ah, la joie des cartes avec R…

 


6 thoughts on “De la non-connexité du Vaucluse”

  1. Merci Joël pour cette précision et le post sur la cartographie. J’avais pensé utiliser les .shp et c’est l’avantage de R de proposer plusieurs solutions à un même problème. Mais, c’est aussi là son défaut ! Il est parfois difficile de choisir entre plus plusieurs packages et lorsqu’on commence à maîtriser un package c’est couteux d’en changer.

  2. À titre de précision (tu le sais sans doute, mais ça peut intéresser les lecteurs), R propose plusieurs classes pour les objets cartographiques. La classe maps en est une, mais les classes issues du package “sp” (dans le cas présent, une classe SpatialPolygons ou SpatialPolygonsDataFrame) de Roger Bivand me semblent les plus largement utilisées et, surtout, les meilleures techniquement.
    Or, dans une classe SpatialPolygons(DataFrame), le département du Vaucluse serait constitué d’un seul objet polygone. Cela me semble préférable/plus logique, notamment lors de l’étape de la jointure entre les données spatiales (le fonds de carte) et les données à représenter.
    Nos voisins de quanti.hypotheses.org ont fait il y a peu un post sur la cartographie avec R : http://quanti.hypotheses.org/795/. Je crois que nous sommes par ailleurs plusieurs à développer des fonctions cartographiques sous R.

  3. Merci Arthur pour cette élégante solution !
    Je comprends maintenant pourquoi le Vaucluse apparait deux fois dans la liste des départements ! C’est aussi le cas du Nord:

    > which(substr(tolower(france$names),1,5)==”nord”)
    [1] 1 4

    et des “Hautes-Pyrenees”. En consultant la page wikipedia, indiquée par Baptiste, je m’aperçois que c’est certainement pour des raisons similaires.
    A bientôt,
    José

Leave a Reply

Your email address will not be published. Required fields are marked *