Nuit Debout !
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 web library(xml2) webpage <- read_html(x = "http://www.nuitdebout.fr/#assembly") # Mise en forme library(rvest) rassemblements <- as.vector(webpage %>% html_nodes(".chip a") %>% html_text()) ### [ETAPE 2] géocodage ### # Géocodage library(photon) # devtools::install_github(repo = 'rCarto/photon') rassemblements.geocoded <- geocode(rassemblements, limit=1, lang="fr", key="place") # Corrections rassemblements.geocoded[rassemblements.geocoded$location=="Orleans",] <- geocode("Orleans", limit=NULL, lang="fr", key="place")[2,] # Nettoyage rassemblements.geocoded <- rassemblements.geocoded[,c("location","country","lon","lat")] # Selection (on ne garde que les localisation en France) rassemblements.geocoded <- rassemblements.geocoded[rassemblements.geocoded$country=="France",] # création des centroides library("sp") rassemblements.spdf <- 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 cartographie library("cartography") data(nuts2006) # choix de projection library("proj4") lambert93 <- "+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 <- spTransform(nuts0.spdf[nuts0.spdf@data$id=="FR",], CRS(lambert93)) countries.spdf <- spTransform(nuts0.spdf, CRS(lambert93)) rassemblements.spdf <- spTransform(rassemblements.spdf, CRS(lambert93)) rassemblements.spdf$id <- row.names(rassemblements.spdf) # Fond de carte et mise en page layoutLayer(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) # Liens library(rgeos) library(reshape2) mydist <- 100000 dist<-gDistance(rassemblements.spdf,byid=TRUE) dist<-melt(dist,variable.name=1, na.rm=TRUE) colnames(dist) <- c("i","j","fij") dist <- dist[dist$fij <=mydist,] links <- getLinkLayer(spdf=rassemblements.spdf, df=dist,spdfid="id") plot(links,col="blue",add=T) # lieux rassemblements.spdf$sizes <- 1 propSymbolsLayer(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 DAO
Figure : Carte de travail générée par le programme R (avant mise en page)
Bon travail! Cette carte m’apprends beaucoup et me donne a reflechir. Je vois sans étonement, l’isolement relatif de la region parisienne, une ville conçue pour dominer les provinces, la concentration plus surprenante autour de Bordeaux, le corridor de Lion a Marseilles bien sur. Je constate le manque de communication et peu etre d’enthusiasme dans les regions de montagne. Utiliser la distance me semble une idée valable, J’habite aux antipodes et je suis fauché, conduire cinquante km pour un meeting ou une demonstration coute cher dans mon budget même si la cause est bonne. Psychologiquement L’internet n’a pas remplacé le contact réel en politique. On prends confiance au coude a coude.
Je vois aussi d’autre applications pour ce genre de methode qui produit essentiellement une toile d’araignée plus ou moins serrée, pollution des eaux par exemple, propagation d’une maladie dans les ruches, phenomène dépendant d’un mouvement. Bravo pour ajouter le programme.
Merci pour l’article, c’est au top et très intéressant 😉
L’agenda Nuit Debout est Open Data, tout est récupérable dans l’export json: https://openagenda.com/nuitdebout/actions/
C’est noté 🙂
L’exercice est sympa, mais je ne comprends pas l’idée de rajouter ces “connexions” qui tranchent avec la sémiologie cartographique conventionnelle: si on les représente, alors c’est qu’elles ont un rapport avec les données qui font la carte. Or, ici, elles sont décoratives puisque la diffusion du mouvement Nuit Debout n’a rien à voir avec la proximité des lieux de manifestation, ce n’est pas un individu qui a parcouru ces distances pour répandre le mouvement. D’ailleurs, si on cherchait à représenter cette diffusion, à l’heure des réseaux sociaux, il y a fort à parier que la carte serait une étoile autour de Paris/de la place de la République.
Bonjour Martin. Je reconnais que ces connexions sont en grande partie décoratives. Et effectivement, la donnée a vol d’oiseau a assez peu de sens. Néanmoins, j’ai voulu jouer de la proximité pour mettre en exergue le fait que le mouvement nuit debout, c’e n’est pas ce qui se passe place de la république mais qu’il s’agit d’un véritable maillage territorial en construction. Avec cette figuration linéaire, je souhaitais insister visuellement sur cette emprise territoriale à la façon d’une toile d’araignée. L’idée n’est pas du tout du suggérer des distances potentiellement parcourues par des individus. Evidemment, il y avait, il y avait 1000 autres façons de procéder. En tout cas, j’entends les remarques 🙂
Merci pour la réponse! Autre idée pour rendre cette question de la proximité bien visible mais moins interprétable comme une “relation” formelle entre les lieux : représenter cette carte sous la forme d’une “heatmap”, ou alors dessiner des cercles concentriques autour des points pour un rendu topographique en “courbes de niveau”. 😉
Oui mais de ce cas, le visage cartographique et sa symbolique ne seraient pas les mêmes. Mais de toute façon, on ne peut enfermer le réel dans une représentation unique. Toutes les cartes du mouvement sont les bienvenues 🙂
Une idée intéressante et de faire une carte montrant la diffusion des nuits debout, selon la date de la première nuit à tel ou tel endroit. Pour voir si, à la base, c’est un phénomène métropolitain et urbain, et comment ça infuse jusqu’à la campagne profonde !
C’était bien mon idée de départ. J’y viendrai peut être mais constituer les données prend du temps…
ça vaut que ça vaut mais bon… https://fr.wikipedia.org/wiki/Nuit_debout#Ampleur_du_mouvement