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

Le nombre de visite :
Suite de la cartographie en Usa

Les états des états unis :

Niveau 0 une simple carte des états unis :

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

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

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

 

library(raster) 
adm_fr <- getData('GADM', country='usa', level=1)
plot(adm_fr));box()
adm_fr$NAME_1
plot(adm_fr[adm_fr$NAME_1=="Wisconsin",], lwd=2,border="#900C3F",col="orange",add=T);box()
plot(adm_fr[adm_fr$NAME_1=="Wyoming",], lwd=2,border="#000000",col="#000000",add=T);box()
legend(1, 95, legend=c("Wyoming", "Wisconsin"),
       col=c("red", "blue"), lty=1:2, cex=0.8)


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='usa', level=2)
# GADM indique que je veux des contours administratifs
# usa est le code de la usa*
# 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='usa', level=0)
plot(adm_fr)

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

Niveau 2
library(raster) 
adm_fr <- getData('GADM', country='usa', 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='usa', level=1)
plot(adm_fr);box()

N'afficher qu'une aire en l'appelant par son nom
library(raster)
adm_fr <- getData('GADM', country='usa', 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='usa', level=2)
cat("Liste des déopartements : \n")
adm_fr$NAME_2 
plot(adm_fr[adm_fr$NAME_1=="basse terre",],lwd=2);box()
plot(adm_fr[adm_fr$NAME_2=="grande terre",],add=T,col="#FCFC9C");box()
Remarque : si je veux plusieurs réogions, je peux utiliser l'éocriture %in%.


library(raster)
adm <- getData('GADM', country='usa', level=1)
carte1 <- adm[adm$NAME_1 %in% c("basse terre","grande terre"),]
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='usa', 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='usa', 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éné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="usa",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 gé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='usa', 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

 [1] "Alabama"              "Alaska"               "Arizona"             
 [4] "Arkansas"             "California"           "Colorado"            
 [7] "Connecticut"          "Delaware"             "District of Columbia"
[10] "Florida"              "Georgia"              "Hawaii"              
[13] "Idaho"                "Illinois"             "Indiana"             
[16] "Iowa"                 "Kansas"               "Kentucky"            
[19] "Louisiana"            "Maine"                "Maryland"            
[22] "Massachusetts"        "Michigan"             "Minnesota"           
[25] "Mississippi"          "Missouri"             "Montana"             
[28] "Nebraska"             "Nevada"               "New Hampshire"       
[31] "New Jersey"           "New Mexico"           "New York"            
[34] "North Carolina"       "North Dakota"         "Ohio"                
[37] "Oklahoma"             "Oregon"               "Pennsylvania"        
[40] "Rhode Island"         "South Carolina"       "South Dakota"        
[43] "Tennessee"            "Texas"                "Utah"                
[46] "Vermont"              "Virginia"             "Washington"          
[49] "West Virginia"        "Wisconsin"            "Wyoming"             


library(raster) 
adm_fr <- getData('GADM', country='usa', level=1)
plot(adm_fr));box()
adm_fr$NAME_1
plot(adm_fr[adm_fr$NAME_1=="Wisconsin",], lwd=2,border="#900C3F",col="orange",add=T);box()
plot(adm_fr[adm_fr$NAME_1=="Wyoming",], lwd=2,border="#000000",col="#000000",add=T);box()
legend(1, 95, legend=c("Wyoming", "Wisconsin"),
       col=c("red", "blue"), lty=1:2, cex=0.8)


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