r-dataviz-formation/leaflet.Rmd

136 lines
4.9 KiB
Text
Raw Normal View History

2016-10-08 21:22:51 +00:00
---
title: "Visualisation de données avec R"
author: François Pelletier
date: 15 octobre 2016
runtime: shiny
output:
html_document:
fig_caption: no
highlight: tango
keep_md: yes
number_sections: yes
theme: cerulean
toc: yes
---
# Leaflet
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = FALSE)
```
## Introduction
Leaflet est une librairie en JavaScript permet de créer des cartes géographiques interactives avec différents langages de programmation dont R.
Pour installer cette librairie dans R, utiliser la commande suivante:
```{r, echo=TRUE, eval=FALSE}
install.packages("leaflet")
```
Pour la charger, utilisez
```{r, echo=TRUE}
library("leaflet")
```
## Autres librairies
Ces autres librairies nous seront utiles
```{r, echo=TRUE}
library("rgdal")
library("dplyr")
library("webshot")
library("shiny")
library("htmltools")
```
## La composition d'une carte
Une carte peut être composée de plusieurs éléments:
- Le fond de la carte est composé de tuiles
- Les différentes régions géographiques peuvent être représentées par des polygones et des lignes
- Les éléments de données peuvent être représentés par des marqueurs
- On peut y ajouter divers autres éléments informatifs ou décoratifs
## Acquisition des données
Les données géographiques vectorielles (polygones, lignes, points) sont souvent représntées sous forme de fichiers KML, geoJSON ou ESRI Shapefiles. Les tuiles de données ou raster sont souvent au format geoTIFF.
L'objet data de la vignette peut accueillir différentes structures de données, mais il faut au préalablement les créer à partir des données sources
Nous utiliserons la librairie `rgdal` our lire les données et créer ces structures
## Données utilisées dans cet atelier
Dans cet atelier, nous cherchons à représenter la couverture WiFi du réseau [ZAP Québec](http://www.zapquebec.org/) à l'aide de la localisation des différents points d'accès contenus dans le fichier "WIFI.KML" téléchargé sur[le portail Données Québec](https://www.donneesquebec.ca/recherche/fr/dataset/vque_29). Ce fichier est partagé sous la licence [Creative Commons - Attribution 4.0](https://www.donneesquebec.ca/fr/licence/#cc-by).
## KML
Le format de fichiers KML est un standard ouvert [développé par Google](https://developers.google.com/kml/documentation/) pour l'application Google Earth. C'est un fichier XML avec des caractéristiques particulières.
## Acquisition des données (1/2)
Pour le lire, on utilise la fonction `readOGR`:
```{r, echo=TRUE}
WIFI_DATA <- readOGR("./DATA/WIFI.KML", "WIFI")
```
## Acquisition des données (2/2)
On obtient un objet de la classe `SpatialPointsDataFrame`.
```{r, echo=TRUE}
class(WIFI_DATA)
```
## Attributs
Chaque point présente 6 attributs:
- ARROND : Nom de l'arrondissement où se situe le réseau WiFi.
- NO_CIV : Numéro civique du réseau WiFi.
- NOM_BATI : Nom de l'édifice où se situe le réseau WiFi.
- RUE : Nom de la rue où se situe le réseau WiFi.
- LONGITUDE : Longitude du réseau WiFi.
- LATITUDE : Latitude du réseau WiFi.
## La vignette interactive Leaflet
La création d'une carte débute avec la vignette interactive (widget) `leaflet()`:
```{r, echo=TRUE,eval=FALSE}
leaflet()
```
Cette vignette peut être modifiées à l'aide de différentes propriétés et différents opérateurs que nous explorerons dans cet atelier.
## Ajout des données à la carte
On associe à la propriété data les données que nous avons importé. On utilise la fonction `addTiles` pour ajouter des tuiles de fond et `addMarker` pour ajouter des marqueurs basés sur les coordonnées géographiques. Enfin, on utilise l'argument popup pour inclure une description qui sera affichée en cliquant sur un marqueur. Les données que bous tilisons incluent déjà une description en HTML.
```{r, echo=TRUE}
l1 <- leaflet(data=WIFI_DATA) %>%
addTiles() %>%
addMarkers(popup = ~ description)
```
```{r, echo=TRUE}
renderLeaflet(l1)
```
## Ajout d'une couleur de marqueur pour chaque arrondissement
```{r, echo=TRUE}
palette_arrond <- colorFactor(rainbow(levels(WIFI_DATA$ARROND) %>% length()),
WIFI_DATA$ARROND)
l2 <- leaflet(data=WIFI_DATA) %>%
addTiles() %>%
addCircleMarkers(popup = ~ description, color = ~palette_arrond(ARROND))
```
```{r, echo=TRUE}
renderLeaflet(l2)
```
## Ajout des polygones des arrondissements
On importe les données des limites des arrondissements à partir du fichier "ARROND.KML" téléchargé sur[le portail Données Québec](https://www.donneesquebec.ca/recherche/fr/dataset/vque_2). Ce fichier est partagé sous la licence [Creative Commons - Attribution 4.0](https://www.donneesquebec.ca/fr/licence/#cc-by).
```{r, echo=TRUE}
ARROND <- readOGR("DATA/ARROND.KML","ARRONDISSEMENT")
palette_arrondissement <- colorFactor(rainbow(levels(ARROND$NOM) %>% length()),
ARROND$NOM)
l1 %>% addPolygons(data=ARROND, color = ~palette_arrondissement(NOM))
```