# /!\/!\/!\ à exécuter si nécessaire
# install.packages("tidyverse", type = "win.binary")
# 0 - Nettoyer son env de travail
rm(list=ls())
# Charger librairies
library(dplyr)
library(sf)
library(leaflet)
library(ggplot2)
library(ggspatial)
library(osmdata)
library(osrm)
library(tidyr)
library(readxl)
# 0 -Fixer le repertoire de travail
setwd("~/git/MASTER_1_R/data")
1 - Ouvrir et afficher les données
# 1 - Ouvrir les shapefiles
<- st_read("~/git/MASTER_1_R/data/COMMUNE.shp", quiet=T)
commune.shp <- st_read("~/git/MASTER_1_R/data/TERRAIN_DE_SPORT.shp", quiet=T)
terrain.shp
# Afficher graphique des objets
plot(st_geometry(commune.shp))
2 - Filtrer les données
<- commune.shp %>%
commune.shp.filter filter(INSEE_COM %in% c("76451","76108", "76216", "76540", "76157")) %>% st_transform(4326)
# Réduire la dimension des dataframes
<- commune.shp.filter %>%
commune.shp.filter select(NOM, INSEE_COM)
<- terrain.shp %>%
terrain.shp.filter filter(NAT_DETAIL == "Stade d'athlétisme") %>%
st_zm()
<- leaflet() %>%
map4 addProviderTiles("Esri.WorldImagery") %>%
addPolygons(data=commune.shp.filter, color = "green")
map4
3 - Exporter les données
# Exporter les donnees filtrees
st_write(commune.shp.filter, "data/COMMUNE_filter.shp", delete_dsn = TRUE)
Deleting source `data/COMMUNE_filter.shp' using driver `ESRI Shapefile'
Writing layer `COMMUNE_filter' to data source
`data/COMMUNE_filter.shp' using driver `ESRI Shapefile'
Writing 5 features with 2 fields and geometry type Multi Polygon.
4 - Réaliser une jointure spatiale
# Veirifer le SCR des deux shapefiles
st_crs(terrain.shp.filter) == st_crs(commune.shp.filter)
[1] FALSE
# Reprojeter les données
<- terrain.shp.filter %>%
terrain.shp.filter st_transform(4326)
# Jointure spatiale pour ajouter le nom de la commune au terrain de sport
<- st_intersection(terrain.shp.filter, commune.shp.filter) terrain.shp.filter
5 - Calculer des superficies
<- terrain.shp.filter %>%
terrain.shp.filter mutate(AREA = st_area(.))
head(terrain.shp.filter %>% select(ID,NOM,INSEE_COM,AREA,geometry))
Simple feature collection with 5 features and 4 fields
Geometry type: POLYGON
Dimension: XY
Bounding box: xmin: 1.029957 ymin: 49.43274 xmax: 1.149572 ymax: 49.46725
Geodetic CRS: WGS 84
ID NOM INSEE_COM AREA
10 TERRSPOR0000000064257448 Mont-Saint-Aignan 76451 3939.357 [m^2]
16 TERRSPOR0000000356874267 Canteleu 76157 3824.463 [m^2]
12 TERRSPOR0000000356874269 Rouen 76540 4078.266 [m^2]
20 TERRSPOR0000000356977218 Rouen 76540 4014.215 [m^2]
26 TERRSPOR0000002011504418 Rouen 76540 3277.727 [m^2]
geometry
10 POLYGON ((1.076727 49.46577...
16 POLYGON ((1.031149 49.45081...
12 POLYGON ((1.072183 49.43414...
20 POLYGON ((1.148475 49.45796...
26 POLYGON ((1.121702 49.44958...
6 - Calculer des statistiques
%>%
terrain.shp.filter group_by(NOM) %>%
summarize(MIN = min(AREA),
MEAN = mean(AREA),
MAX = max(AREA),
TOTAL = sum(AREA),
COUNT = n())
Simple feature collection with 3 features and 6 fields
Geometry type: GEOMETRY
Dimension: XY
Bounding box: xmin: 1.029957 ymin: 49.43274 xmax: 1.149572 ymax: 49.46725
Geodetic CRS: WGS 84
# A tibble: 3 × 7
NOM MIN MEAN MAX TOTAL COUNT geometry
<chr> [m^2] [m^2] [m^2] [m^2] <int> <GEOMETRY [°]>
1 Canteleu 3824. 3824. 3824. 3824. 1 POLYGON ((1.031149 49.45081,…
2 Mont-Saint-Aignan 3939. 3939. 3939. 3939. 1 POLYGON ((1.076727 49.46577,…
3 Rouen 3278. 3790. 4078. 11370. 3 MULTIPOLYGON (((1.121702 49.…