Chapitre 13 Focus sur OpenStreetMap
OpenStreetMap (OSM) est un projet de cartographie participative qui a pour but de constituer une base de données géographiques libre à l’échelle mondiale. OpenStreetMap vous permet de voir, modifier et d’utiliser des données géographiques du monde entier.
Conditions d’utilisation
OpenStreetMap est en données ouvertes : vous êtes libre de l’utiliser pour n’importe quel but tant que vous créditez OpenStreetMap et ses contributeurs. Si vous modifiez ou vous appuyez sur les données d’une façon quelconque, vous pouvez distribuer le résultat seulement suivant la même licence. (…)
Contributeurs
(…) Nos contributeurs incluent des cartographes enthousiastes, des professionnels du SIG, des ingénieurs qui font fonctionner les serveurs d’OSM, des humanitaires cartographiant les zones dévastées par une catastrophe et beaucoup d’autres. (…)
R propose une série de packages qui se basent sur OpenStreetMap.
Dans ce chapitre nous allons utiliser les packages suivants :
# packages CRAN
library(ggspatial)
library(leaflet)
library(mapview)
library(osmdata)
library(osmextract)
library(osrm)
library(sf)
library(tidyverse)
# packages Github
library(COGiter) # remotes::install_github("MaelTheuliere/COGiter")
library(gouvdown) # remotes::install_github("spyrales/gouvdown")
# Données
load("extdata/sirene.RData")
load("extdata/admin_express.RData")
13.1 Afficher une carte interactive
Les deux principaux packages qui permettent d’afficher une carte interactive basée sur OSM sont {leaflet}
et {mapview}
, vus précédemment.
{leaflet}
utilise la libraire javascript Leaflet pour créer des cartes interactives.
Site web de {leaflet}
: Leaflet for R
{mapview}
s’appuie sur {leaflet}
pour créer des cartes interactives, son utilisation est plus simple car les instructions sont très concises.
Site web de {mapview}
: mapview
13.2 Importer les fonds de carte pour ggplot
Le package {ggspatial}
permet de télécharger et d’afficher des fonds de cartes raster issu d’OSM grâce à la fonction annotation_map_tile()
.
boul_44 <- filter(sirene44, APET700 == "1071C") %>%
select(SIREN, NOMEN_LONG)
ggplot(data = boul_44) +
annotation_map_tile(type = "osm") +
geom_sf() +
theme_void()
| | | 0% | |================== | 25% | |=================================== | 50% | |==================================================== | 75% | |======================================================================| 100%
13.3 Importer des données OSM
13.3.1 {osmdata}
Le package
{osmdata}
permet d’extraire des données vectorielles depuis OSM en utilisant l’API Overpass turbo.
On développe ici un exemple dans lequel on extrait les pistes cyclables sur Nantes Métropole.
On commence par définir la bbox de requête, au CRS 4326.
# Sélection de l'emprise de la requête,
nantes_metro <- epci_geo %>%
filter(NOM_EPCI == "Nantes Métropole") %>%
st_transform(4326)
# Définition d'une bounding box de requête
q <- opq(bbox = st_bbox(nantes_metro, 4326))
# Extraction des pistes cyclables
req <- add_osm_feature(opq = q, key = 'highway', value = "cycleway")
res <- osmdata_sf(req)
# Reduction du resultats
# (les points composant les polygones sont supprimés)
res <- unique_osmdata(res)$osm_lines
mapview(res)