Apprendre à tracer une carte de France à l'aide d'un ordinateur
En l'an 2000, lors d'une discussion sur l'informatique avec une enseignante spécialisée, elle se plaignait que les ordinateurs permettaient de perdre son temps, mais pas d'effectuer un travail efficace. Sa classe ayant eu une recherche à effectuer, ils avaient fini, et elle leur laissa aller sur internet librement. Ils trouvaient des choses intéressantes, mais pas des plus utiles… Elle eu l'idée de leur proposer un exercice pour terminer les 20 minutes ou ils avaient la salle, utiliser l'ordinateur pour tracer une carte de France. Cette activité, personne n'arriva à la réaliser, et elle me dit donc « C'est quand même dingue, trouver des bêtises en tout genre, c'est facile, mais une chose aussi simple que de faire une carte de France n'est pas possible ». Je n'ai pas osé lui répondre que ce qui lui semblait « Facile » est en réalité une tache complexe, et que si l'on ne dispose pas de programme adapté, la tache serait impossible. Comme il n'est pas incongru qu'un enseignant demande à ses élèves de tracer une telle carte, je vous propose un petit tutoriel, utilisant des outils libres et gratuit.
Comme dans notre précédent tutoriel sur les graphiques, nous allons utiliser le logiciel libre R comme support.
Pour tracer une carte, il faut des ichiers de coordonnées géographique, appelés « Shapefiles ». On peut en trouver gratuitement sur le net, ici pour des donnés générales
http://www.naturalearthdata.com/downloads/ ou là pour des donnés par pays
http://www.diva-gis.org/datadown .
Créez un dossier pour stocker tous les shapefiles, décompressez les archives à l’intérieur de ce dossier. Démarrez R, et indiquer comme répertoire de travail celui ou se trouvent vos archives géographiques.
setwd("C : adresse du dossier dans l’arborescence/shapefiles")
Chargez un jeu de donné, comme les frontières de chaque pays, disponible dans « cultural » sur « natural earth data ». dsn correspond à l'adresse du dossier à l’intérieur du répertoire de travail et layer, le nom du « shapefile », sans extension. Si le « shapefile » se trouve directement dans le dossier de travail, utiliser dsn="."
readOGR(dsn="10m_cultural", layer="ne_10m_admin_0_countries")->Frontières
Nous pouvons maintenant tracer une carte :
plot(Frontières)
Cette carte doit désormais être centré sur la France, et un peut de couleur peut facilité la lecture.
plot(Frontières,xlim=c( -4.3,9.1),ylim=c(41,51),axes = TRUE, col="grey")
Les valeurs de xlim et ylim correspondent au coordonnés latitudes et longitude en dégrées.
Ajout d'autre données
De nombreuses choses peuvent être ajoutés sur une carte, la base de donnée diva-gis.org propose entre autre les régions administrative par pays, et les rivières. Libres à chacun d'ajouter les élements qu'il souhaite sur une carte.
Il faut dans un premier temps charger les donnés que l'on souhaite faire apparaître sur la carte. Ici, nous choisissons les départements et les rivières
readOGR(dsn="/Users/benjamin/Downloads/FRA_adm", layer="FRA_adm2")-> FRA_adm2
readOGR(dsn="/Users/benjamin/Downloads/FRA_wat", layer="FRA_water_lines_dcw")-> rivières
Puis il ne reste qu'à tracer :
plot(Frontières,xlim=c( -4.3,9.1),ylim=c(41,51),axes = TRUE, col="grey")
plot(rivières, add=TRUE,col="grey80")
plot(FRA_adm2, add=TRUE)
add=TRUE permet de superposer les tracés, col permet de choisir une autre couleur, grey80 signifie 80% de blanc et 20% de noir.
Ajout des villes
Une ville peut être repérée par sa latitude et sa longitude (aisément trouvable sur internet). Attention installer un point sous R demande de mettre d'abbord les horizontales puis les verticales, latitudes et longitudes sont donc inversées. Les dégrées ouest et sud sont des valeurs négatives. Les valeurs sont en degrés décimales et non sexagésimaux (minutes et secondes).
Voici donc un exemple
points( 2.359368,48.863431,pch=16,col="red",cex=1.5)
text( 2.359368,48.863431,pos=1,"Paris")
Les valeurs cex correspondent à la taille, pch à la forme (16=point rond et plein), pos à la position, à choisir entre 0 et 4, 1 signifiant en dessous. On remarque que la superposition en noir du nom et des frontières de départements rend le texte illisible. Il faut donc, réduire l'eppesseur du trait lwd=0.5 et par exemple le mettre en pointillé lty=3.
Une echelle
Une échelle est toujours nécessaire sur une carte. Les fonctions pour se faire sont rare. Et il faut utiliser un paquetage de développement.
Avant la première utilisation, exécutez :
install.packages("devtools")
library(devtools)
install_github("giby/Linarius")
Puis, vous pouvez charger ce paquetage
library(Linarius)
et demander une barre d'échelle
scalebar(c(-4,42), 200)
Les premiers nombres correspondant à la latitude et la longitude, le dernier correspondant à la taille de la barre en kilomètres (par défaut).
Une fois que le travail est satisfaisant, vous pouvez le sauvegarder en utilisant la fonction png, comme montré dans le tutoriel sur les graphiques.
png(file="carte-de-France.png",width = 15, height = 15,units = "cm",pointsize=6,res=288 )
par(mar=c(15.1, 4.1, 4.1, 2.1))
plot(Frontières,xlim=c( -4.3,9.1),ylim=c(41,51),axes = TRUE, col="grey")
plot(rivières, add=TRUE,col="grey80")
plot(FRA_adm2,lty=3,add=TRUE, lwd=0.5)
points( 2.359368,48.863431,pch=16,col="red",cex=1.5)
text( 2.359368,48.863431,pos=1,"Paris",cex=1.5)
scalebar(c(-4,42), 200)
dev.off()
Ce petit tutoriel, pour être appliqué en classe demande que l'enseignant l'ai préalablement testé, pour éviter de rester bloquer à une étape. Pour les plus jeunes, il faudra avoir préparé les ordinateurs en installant les paquetages nécessaires, et avoir déjà préparés les fichiers d’intérêts. Il a surtout pour vocation de montrer à certains enseignants qu'une tache qui semble simple demande parfois assez de travail, et surtout une bonne préparation.