Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog

Le nombre de visite :
Suite de la cartographie en Algérie.

Suite de la cartographie sous R

Il suffit de recopier le texte ci-dessous tel quel et voir le résultat dans l'éditeur R

 

Départements d'Algérie

1- Charger des données en ligne a  partir d'une simple commande R
Des traces nombreuses données pour être charger dans R avec une simple commande grâce a  la librairie raster.
Etape 01 - Charger/Installer la librairie raster
install.packages("raster");library(raster)
Etape 02 - Charger les donnéoes de son choix
adm_fr <- getData('GADM', country='DZA', level=2)
# GADM indique que je veux des contours administratifs
# dza est le code de l'Algérie*
# level est le niveau de résolution  (1 : carte des régions - 2 : départements - 3 : communes)
Etape 03 - Je trace la carte
plot(adm_fr)
bbox(adm_fr) # Dimensions de la carte


Niveau 0
library(raster) 
adm_fr <- getData('GADM', country='DZA', level=0)
plot(adm_fr)

Niveau 1
library(raster) 
adm_fr <- getData('GADM', country='DZA', level=1)
plot(adm_fr)

Niveau 2
library(raster) 
adm_fr <- getData('GADM', country='DZA', level=2)
plot(adm_fr)

Réoduire la zone affichéoe avec des limites de longitude et latitude
library(raster) 
adm_fr <- getData('GADM', country='DZA', level=1)
plot(adm_fr);box()

N'afficher qu'une aire en l'appelant par son nom
library(raster)
adm_fr <- getData('GADM', country='DZA', level=1)
cat("Liste des réogions : \n")
adm_fr$NAME_1
plot(adm_fr[adm_fr$NAME_1=="Saïda",], lwd=2,border="#900C3F");box()

Séolectionner les zones a  afficher et colorer
library(raster)
adm_fr <- getData('GADM', country='DZA', level=2)
cat("Liste des déopartements : \n")
adm_fr$NAME_2 
plot(adm_fr[adm_fr$NAME_1=="Adrar",],lwd=2);box()
plot(adm_fr[adm_fr$NAME_2=="Dordogne",],add=T,col="#FCFC9C");box()
Remarque : si je veux plusieurs réogions, je peux utiliser l'éocriture %in%.

library(raster)
adm <- getData('GADM', country='DZA', level=1)
carte1 <- adm[adm$NAME_1 %in% c("Laghouat","Saïda"),]
plot(carte1)

a‰tape 1 - Tracer un fond bleu "marin"


a‰tape 2 - Tracer un contours littoral


a‰tape 3 - Remplir les terres

# ETAPE 0 - Chargement des donnéoes
library(raster)
adm_gr <- getData('GADM', country='DZA', level=1)
# Limiter la réogion chargéoe pour réoduire le temps d'affichage
adm <- adm_gr[match(toupper(adm_gr$NAME_1[7]),toupper(adm_gr$NAME_1)),]# Péoloponna¨se
# a‰tape 1 - Tracer un fond bleu "marin"
plot.new()
par(mar=c(4,4,3,4),bg="transparent") # déofinition des marges
# on préo-trace la carte pour programmer ses limites d'affichage automatiquement
plot(adm,col="white",border="white",lwd=50) ; box()
# FOND DE MER : tracéo simple d'un polygone
polygon(x = c(20, 30, 30, 20, 20), y = c(-10, -10, 50, 50, -10), col = "#bbe6fb", border = "transparent")
# a‰tape 2 - Tracer un contours littoral
plot(adm,col="white",border="#34bdf2",lwd=7,add=T)
a‰tape 3 - Remplir les terres
plot(adm, col="#FAFAB1", border="grey", lwd=1,add=T) 
Un exemple simple de carte d'un pays du monde
Carte de l'UK conforme a  la ra¨gle TOLE (Titre, Orientation, légende, Echelle)

Mots clefs : cartographique - carte R project - monde- contours des départements - longitude - latitude - points - trajet - légende - texte - rosace- ville


Et pour réaliser une carte complète du monde ?
library(raster)
WorldMap <- getData('countries')
plot(WorldMap)

 


La carte ainsi est de traces haute définition... donc longue a  produire.

Il est aussi possible de faire vite-fait des cartes de qualité moindre mais plus rapides à  afficher...


2- Indiquer un point sur la carte en précisant sa longueur et sa latitude

Indiquer un point par un couple de valeurs longitude/latitude
library(raster) 
adm_fr <- getData('GADM', country='dza', level=1)
plot(adm_fr,lwd=0.5, border="grey", col="#DFFAB1", bg="black");box()
points(0,44, col="red", pch=16, cex=2)

Pleins de types de points, de tailles et de couleurs
plot(adm_fr,lwd=0.5, border="yellow", col="#FFFAB1", bg="#00000000",box=F)
# On va génaérer 15 points aléatoire
nb_pt = 15
longitudes = rnorm(nb_pt,2,2)
latitudes = rnorm(nb_pt,46,2)
#  et 15 couleurs
liste_colors <- c("blue","green","red")
colfunc<-colorRampPalette(liste_colors,interpolate="spline")
colors <- colfunc(nb_pt)
# On trace
points(longitudes,latitudes, col=colors, pch=c(8:18), cex=c((1:10)/2),lwd=2)

Des spha¨res de tailles variables
plot(adm_fr,lwd=0.5, border="green", col="#AAAAFF", bg="#00000000",box=F)
latitude = rnorm(10,44,3)
longitude = rnorm(10,1,3)
lat <- latitude[order(rayons, decreasing = TRUE)]
long <- longitude[order(rayons, decreasing = TRUE)]
ray <- rayons[order(rayons, decreasing = TRUE)]
# Tracer les disques rouges transparents
couleur =rgb(red=(243/255), green=(105/255), blue=0, alpha=0.8)
symbols(long,lat, circles = ray, add = TRUE, bg = couleur, inches = FALSE)
text(longitude,latitude,correspondants,cex=(rayons*1.5))

 

légender des points spéociaux (taille)
Coloriser les points selon une variable (3a¨me dimension)
adm <- getData("GADM",country="DZA",level=1)
# Simuler des points sur la carte
bbox(adm)-> xy1
x <- rnorm(100,mean(xy1[1,]),2)
y <- rnorm(100,mean(xy1[2,]))
dim <- round(x+y,0) # Dim serait une valeur associéoe a  chaque point (ici on additionne long et lat, ce qui n'a pas de sens...
# Déocouper les
cut(dim,breaks=10)->niveau
colfunc <- colorRampPalette(c("white","red","black"))
colors<- colfunc(10) %>% .[as.numeric(niveau)]
plot(adm)
points(x,y,col=colors,pch=16,cex=2)
legend(x="topleft",legend = levels(niveau), cex=0.8,fill=colfunc(10),bty="n")


3- Indiquer quelques informations de base en cartographie
Lorsqu'on rélise une carte, il faut toujours respecter la ra¨gle TOLE (Titre, Orientation, légende, a‰chelle)

1- Afficher le nord ga©ographique
La fonction northarrow() réocupéoréoe sur le web (source inconnue) permet d'ajouter le nord géographique. Il faut la copier-coller.

# FONCTION POUR LA ROSACE DU NORD
northarrow <- function(loc, size, bearing = 0, cex = 1) {
  # =========================================
 cols <- rep(c("white", "black"), 8)
 # Coordonnees des polygones de la rose des vents
 radii <- rep(size/c(1, 4, 2, 4), 4) ;  x <- radii[(0:15) + 1] * cos((0:15) * pi/8 + bearing) + loc[1]
 y <- radii[(0:15) + 1] * sin((0:15) * pi/8 + bearing) + loc[2]
 # Trace des polygones
 for (i in 1:15) {
  x1 <- c(x[i], x[i + 1], loc[1])  ;   y1 <- c(y[i], y[i + 1], loc[2])  ;   polygon(x1, y1, col = cols[i])
 }
 # Trace du dernier polygone
 x1 <- c(x[16], x[1], loc[1])  ;  y1 <- c(y[16], y[1], loc[2]) ;  polygon(x1, y1, col = cols[16])
 # Rajout des lettres
 b <- c("E", "N", "O", "S")
 for (i in 0:3) {
 text((size + par("cxy")[1]) * cos(bearing + i * pi/2) + loc[1], (size + par("cxy")[2]) * sin(bearing + i * pi/2) + loc[2],
 b[i + 1], cex = cex)
 } }
library(raster) 
adm_fr <- getData('GADM', country='DZA', level=1)
plot(adm_fr,lwd=0.5, border="grey", col="#AAAAAA", bg="white",box=F)
points(0,44, col="red", pch=16, cex=2)
northarrow(loc = c(-3, 45), size = 1, cex = 2)
Et pour l'afficher manuellement en cliquant sur la carte ?

# NORD GEOGRAPHIQUE
# loc = c(longitude, latitude)
# size = la taille de l'indication
cat("Cliquer la  oa¹ vous voulez la rosace du nord");l = locator(n=1)
northarrow(loc = c(l$x,l$y), size = 1, cex =2)

2- Afficher la barre d'échelle
La librairie raster contient une fonction pour afficher des barres d'échelle : scalebar().

plot(adm_fr,lwd=0.5, border="grey", col="#AAAAAA", bg="white",box=F)
points(0,44, col="red", pch=16, cex=2)
scalebar(d = 200, xy = c(5,42), type = "bar", below = "km",lwd = 5, divs = 2, col = "black", cex = 1, lonlat = T)

3- Afficher la légende


library(raster) 
adm_fr <- getData('GADM', country='DZA', level=1)
plot(adm_fr));box()
adm_fr$NAME_1
plot(adm_fr[adm_fr$NAME_1=="Saïda",], lwd=2,border="#900C3F",col="orange",add=T);box()
plot(adm_fr[adm_fr$NAME_1=="Adrar",], lwd=2,border="#900C3F",col="#900C3F",add=T);box()
legend(x="topleft", legend=c("Adrar","LAGHOUAT"), cex=0.8,fill=c("orange","#900C3F"),bty="n")

 

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :