{"word_count": 428, "character_count": 4384}
Camarades cartographes, je partage aujourd'hui une carte des rassemblements du mouvement Nuit Debout. La réalisation de cette carte s'effectue en deux étapes. Premièrement, la carte est générée directement avec le langage R en allant chercher la liste des lieux de rassemblement sur le site http://www.nuitdebout.fr/, grâce à des techniques de web scrapping. Le géocodage et la représentation cartographique sont également effectués dans R grâce à des packages dédiés (photon, cartography). Dans un second temps, la carte est retravaillée et mise en scène dans un logiciel de DAO. Ce processus traduit assez bien, selon moi, une façon efficace d'aborder la production cartographique, à la fois reproductible et éditoriale.Sur la carte, figurent deux éléments. Des points rouges viennent indiquer les lieux de rassemblement. Des traits bleu foncé relient les lieux distants de moins de 100 km à vol d'oiseau (choix relativement arbitraire). Cette symbolique du réseau est ici choisie pour mettre en scène l'idée que le mouvement Nuit Debout s'ancre, se diffuse et s'interconnecte sur l'ensemble du territoire national. Bref, cette carte invite à aller voir au delà de la seule place de la République à Paris.Voici ci-dessous l'ensemble du code R.#------------------------------------# Carte de France des "NUIT DEBOUT"# cc - Nicolas Lambert, avril 2016#------------------------------------ ### [ETAPE 1] webscrapping (récupérer la liste des rassemblements sur le site http://www.nuitdebout.fr/) ### # extraction du site weblibrary(xml2)webpage &#60;- read_html(x = "http://www.nuitdebout.fr/#assembly")# Mise en formelibrary(rvest)rassemblements &#60;- as.vector(webpage %&#62;% html_nodes(".chip a") %&#62;% html_text()) ### [ETAPE 2] géocodage ### # Géocodagelibrary(photon) # devtools::install_github(repo = 'rCarto/photon')rassemblements.geocoded &#60;- geocode(rassemblements, limit=1, lang="fr", key="place")# Corrections rassemblements.geocoded[rassemblements.geocoded$location=="Orleans",] &#60;- geocode("Orleans", limit=NULL, lang="fr", key="place")[2,]# Nettoyagerassemblements.geocoded &#60;- rassemblements.geocoded[,c("location","country","lon","lat")]# Selection (on ne garde que les localisation en France)rassemblements.geocoded &#60;- rassemblements.geocoded[rassemblements.geocoded$country=="France",]# création des centroideslibrary("sp")rassemblements.spdf &#60;- SpatialPointsDataFrame(coords = rassemblements.geocoded[,c("lon","lat")], data = rassemblements.geocoded[,c("location","country")],proj4string = CRS("+proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0")) ### [ETAPE 3] cartographie ### # chargement du package de cartographielibrary("cartography")data(nuts2006) # choix de projectionlibrary("proj4")lambert93 &#60;- "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"france.spdf &#60;-  spTransform(nuts0.spdf[nuts0.spdf@data$id=="FR",], CRS(lambert93))countries.spdf &#60;- spTransform(nuts0.spdf, CRS(lambert93))rassemblements.spdf &#60;- spTransform(rassemblements.spdf, CRS(lambert93))rassemblements.spdf$id &#60;- row.names(rassemblements.spdf) # Fond de carte et mise en pagelayoutLayer(title="La carte de France des #NuitDebout",            sources = "",             author = "",             col = "black",             coltitle = "white",            bg = "#C9E2FF",            scale = NULL,            frame = FALSE,            extent=france.spdf)plot(countries.spdf,col="#D9B99370", border="white",lwd="1.5", add=T)plot(france.spdf,col="#B89C7D", border="white",lwd="1.5", add=T) # Lienslibrary(rgeos)library(reshape2)mydist &#60;- 100000dist&#60;-gDistance(rassemblements.spdf,byid=TRUE)dist&#60;-melt(dist,variable.name=1, na.rm=TRUE)colnames(dist) &#60;- c("i","j","fij")dist &#60;- dist[dist$fij &#60;=mydist,]links &#60;- getLinkLayer(spdf=rassemblements.spdf, df=dist,spdfid="id")plot(links,col="blue",add=T) # lieuxrassemblements.spdf$sizes &#60;- 1propSymbolsLayer(spdf = rassemblements.spdf, df = rassemblements.spdf@data,                 var = "sizes",                  symbols = "circle",                  col =  "#920000",                 legend.pos = "n",                 inches = 0.05,                 add=T) # ....... Il reste à finaliser la carte dans un logiciel de DAOFigure : Carte de travail générée par le programme R (avant mise en page)