Commit c5e67354 authored by Roelandt nicolas's avatar Roelandt nicolas
Browse files

Merge branch 'add-R-spatial-course' into 'master'

Add r spatial course

See merge request !10
parents 93428a38 a4b46976
Pipeline #399071 passed with stages
in 58 seconds
......@@ -23,6 +23,9 @@ Etudier la proportion d'abris à vélo dans les quartiers de la ville de Nantes.
# Chargement des données
Lien vers le projet R contenant les données et le code source:
[roelandtn.frama.io/R-webinars/analyse.zip](https://roelandtn.frama.io/R-webinars/analyse/analyse.html)
## Packages utilisés
```{r chargement_sf}
......@@ -39,6 +42,7 @@ library(units) # gestion des unités
library(ggspatial) # ajout de décorations en complément de ggplot
library(ggrepel) # déplacer les étiquettes
library(here) # gestion des chemins de fichiers
library(knitr) # pour inclure des images
```
Notez que {sf} se lie à [GDAL](http://www.gdal.org/), [PRØJ](http://proj.org/) et [GEOS](https://trac.osgeo.org/geos) qui sont des bibliothèques géospatiales open-source utilisées dans d'autres projets (QGIS, PostGIS, etc).
......@@ -280,7 +284,7 @@ Il est possible aussi de sélectionner les abris qui se trouvent à une certaine
```{r within-distance}
matrice <- st_is_within_distance(abris, quartiers, dist = 30, sparse = FALSE)
abris %>% mutate(
inBuffer =
inBuffer = matrice
)
```
......@@ -809,22 +813,161 @@ leaflet(data = quartiers %>% st_transform(4326)) %>%
smoothFactor = 0)
```
## Avec {mapsf}
Sorti en mars 2021, {mapsf} vise à succéder à {sf} en proposant de nouvelles fonctionnalités (thèmes, inserts, gestion du format d'export) et une API modernisée par rapport à ce dernier.
Les modes de représentation les plus courants (symboles proportionnels, aplats de couleurs, etc) sont présents.
Certains modes de représentation de {sf} ne seront pas reconduits dans {mapsf}.
```{r load-mapsf}
library(mapsf)
```
### Carte choroplète
```{r densite-velo-mapsf, message=FALSE}
# Initialiser la carte avec un thème, des marges, une sortie fichier
mf_init(x = quartiers,
theme = "dark",
expandBB = c(0,0,0,.3),
export = "svg",
filename = "img/quartiers.svg",
width = 6) # taille en pouce pour les fichiers svg
# Ajouter une ombre à notre couche de polygones
mf_shadow(quartiers, col = "grey10", add = TRUE)
# Créer la carte choroplète
mf_map(x = quartiers, var = "densite", type = "choro",
pal = "Dark Mint",
breaks = "quantile",
nbreaks = 3,
leg_title = "Densité d'abris\nà vélo par km²",
leg_val_rnd = 2,
add = TRUE)
# Démarrer le paramètrage de l'insert
mf_inset_on(x = "worldmap", pos = "right")
# Cartographier la position des données sur le globe
mf_worldmap(quartiers, col = "#0E3F5C")
# Fermer l'insert
mf_inset_off()
# Plot a title
mf_title("Densité d'abris à vélo par quartier de la ville de Nantes")
# Ajouter les crédits
mf_credits("Nicolas Roelandt, Univ. Gustave Eiffel/AME, 2020\nSources: Nantes Métropole, 31/05/2018")
# Ajouter une barre d'échelle
mf_scale(size = 5)
# et une flèche nord
mf_arrow('topleft')
# Fermer le fichier ouvert par mf_init()
dev.off()
```
Pour ajouter une image à votre document Rmarkdown, vous pouvez utiliser la méthode `include_graphics` fournit par {knitr}.
```{r}
knitr::include_graphics("img/quartiers.svg")
```
### Carte bivariée
```{r bivariee-mapsf, message=FALSE}
# Thème customisable
custom <- list(
name = "custom",
bg = "white",
fg = "#2f2a85",
mar = c(0.2, 0.2, 0.2, 1),
tab = FALSE,
pos = "center",
inner = TRUE,
line = 2,
cex = 1.5,
font = 3
)
mf_theme(custom)
# Initialiser la carte avec un thème, des marges, une sortie fichier
mf_init(x = quartiers,
theme = custom,
expandBB = c(0,0,0,.3),
export = "png",
filename = "img/carte_bivariee_velos_nantes.png",
width = 3000, # pixels for png
# height = 1200, # pixels for png
res = 300 # ou résolution en pixels
)
# fond de carte
mf_map(quartiers, type = "base", col = "#92c56e", add = TRUE)
# Ajouter la couche bivariée
centroid_quartiers %>% # chainage des fonctions
mf_map(
var = c("nombre_abris", "densite"),
type = "prop_choro",
border = "white",
lwd = 1,
leg_pos = c("left","right"),
leg_title= c("Nombre d'abris","Densité\n(abris par km²)"),
breaks = "equal",
nbreaks = 4,
pal = "Greens",
leg_val_rnd = c(1,2), # arrondis
leg_frame = c(TRUE, TRUE)
) %>%
mf_label(
var = "nom", halo = TRUE, cex = 0.8,
overlap = FALSE, lines = FALSE
)
# Plot a title
mf_title("Nombre et densité d'abris à vélo dans la ville de Nantes")
# Ajouter les crédits
mf_credits("Nicolas Roelandt, Univ. Gustave Eiffel/AME, 2021\nSources: Nantes Métropole, 31/05/2018")
# Ajouter une barre d'échelle
mf_scale(size = 3)
# et une flèche nord
mf_arrow(pos = "topleft")
# Fermer le fichier ouvert par mf_init()
dev.off()
```
```{r}
knitr::include_graphics("img/carte_bivariee_velos_nantes.png")
```
# Aller plus loin
## Continuer l'exercice
Pour aller plus loin, essayez de créer une carte de densité d'emplacements vélo (pas seulement d'abris).
## Accéder aux algorithmes de QGIS, GRASS ou SAGA
QGIS, depuis le version 3.14.16, propose une interface de commande permettant d'accéder à ses algorithmes de géotraitement, mais aussi ceux de GRASS et SAGA si ceux-ci ont été installés avec QGIS.
Le package [{qgisprocess}](https://github.com/paleolimbot/qgisprocess) permet d'utiliser cette interface depuis R.
## Ressources utiles
- [Modern Geospatial Data Analysis with R - Zev Ross](http://files.zevross.com/workshops/spatial/slides/html/0-deck-list.html)
- [Cartographie avec R à l'usage des statisticiens - Thomas Vroylandt](https://tvroylandt.github.io/r-cartostat/)
- [Spatial Data Science with R - Robert J. Hijmans](https://rspatial.org/)
- [Spatial Data Science - Edzer Pebesma, Roger Bivand (en cours de rédaction)](https://keen-swartz-3146c4.netlify.com/)
- [Geocumputation with R - Lovelace](https://geocompr.robinlovelace.net)
- [Geocomputation with R - Lovelace](https://geocompr.robinlovelace.net)
## Accéder aux algorithmes de QGIS, GRASS ou SAGA
QGIS, depuis le version 3.14.16, propose une interface de commande permettant d'accéder à ses algorithmes de géotraitement, mais aussi ceux de GRASS et SAGA si ceux-ci ont été installés avec QGIS.
Le package [{qgisprocess}](https://github.com/paleolimbot/qgisprocess) permet d'utiliser cette interface depuis R.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment