--- 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)) ```