Interaktive Karten

Jan-Philipp Kolb

23 November 2017

Die Daten - Weltkulturerbe

url <- "https://raw.githubusercontent.com/Japhilko/
GeoData/master/2015/data/whcSites.csv"

whcSites <- read.csv(url) 
whcSitesDat <- with(whcSites,data.frame(name_en,category))

Eine erste interaktive Tabelle - Das Paket DT

install.packages("DT")

Weitere Variablen WHC Datensatz

whcSitesDat2 <- with(whcSites,data.frame(name_en,category,
                                         longitude,latitude,date_inscribed,area_hectares,danger_list))
library('DT')
datatable(whcSitesDat2)

Das Ergebnis bei Rpubs

http://rpubs.com/Japhilko82/WHCdata

Das Paket magrittr

install.packages("magrittr")
library("magrittr")

Die Pipes nutzen

library(magrittr)

str1 <- "Hallo Welt"
str1 %>% substr(1,5)
## [1] "Hallo"
str1 %>% substr(1,5) %>% toupper()
## [1] "HALLO"

Das Paket leaflet

install.packages("leaflet")
library("leaflet")

Was sind Tiles?

Eine interaktive Karte erstellen

m <- leaflet() %>%
  addProviderTiles("Esri.NatGeoWorldMap") %>%
  addMarkers(lng=whcSites$lon, 
             lat=whcSites$lat, 
             popup=whcSites$name_en)

Die Karte zeigen

m

Farbe hinzu

whcSites$color <- "red"
whcSites$color[whcSites$category=="Cultural"] <- "blue"
whcSites$color[whcSites$category=="Mixed"] <- "orange"

Eine Karte mit Farbe erzeugen

m1 <- leaflet() %>%
  addProviderTiles("Esri.NatGeoWorldMap") %>%
  addCircles(lng=whcSites$lon, 
             lat=whcSites$lat, 
             popup=whcSites$name_en,
             color=whcSites$color)

Die Karte mit mehr Farbe

Weltkulturerbe

Weltkulturerbe

Die Karte abspeichern

Layers ein- und ausblenden

m2 <- leaflet() %>%
  addTiles(group = "OSM (default)") %>%  
  addProviderTiles("Stamen.Toner", group = "Toner") %>%
  addProviderTiles("Stamen.TonerLite", group = "Toner Lite") %>%

  addCircles(lng=whcSites$lon, 
             lat=whcSites$lat, 
             popup=whcSites$name_en) %>% 
  
  addLayersControl(
    baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
    options = layersControlOptions(collapsed = FALSE)
  )
m2

Ein weiteres Beispiel mit Erdbebendaten

outline <- quakes[chull(quakes$long, quakes$lat),]
map <- leaflet(quakes) %>%
  # Base groups
  addTiles(group = "OSM (default)") %>%
  addProviderTiles("Stamen.Toner", group = "Toner") %>%
  addProviderTiles("Stamen.TonerLite", group = "Toner Lite") %>%
  # Overlay groups
  addCircles(~long, ~lat, ~10^mag/5, stroke = F, group = "Quakes") %>%
  addPolygons(data = outline, lng = ~long, lat = ~lat,
    fill = F, weight = 2, color = "#FFFFCC", group = "Outline") %>%
  # Layers control
  addLayersControl(
    baseGroups = c("OSM (default)", "Toner", "Toner Lite"),
    overlayGroups = c("Quakes", "Outline"),
    options = layersControlOptions(collapsed = FALSE)
  )
map

Beispiel US Staaten

library(maps)
mapStates = map("state", fill = TRUE, plot = FALSE)
leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor = topo.colors(10, alpha = NULL))

Der Befehl setView

Die Basiskarte ändern

m <- leaflet() %>% setView(lng = 9.180501, lat = 48.77814, zoom = 12)
m %>% addProviderTiles("Stamen.Toner")

Basiskarte - CartoDB

m %>% addProviderTiles("CartoDB.Positron")

Esri.NatGeoWorldMap

m %>% addProviderTiles("Esri.NatGeoWorldMap")

OpenTopoMap

m %>% addProviderTiles("OpenTopoMap")

Thunderforest.OpenCycleMap

m %>% addProviderTiles("Thunderforest.OpenCycleMap")

Cluster Optionen für Marker

leaflet(quakes) %>%
addProviderTiles("Esri.NatGeoWorldMap") %>%
addMarkers(
  clusterOptions = markerClusterOptions()
)

Ein Rechteck hinzufügen

leaflet() %>% 
    addProviderTiles("Esri.NatGeoWorldMap") %>%
  addRectangles(
    lng1=-118.456554, lat1=34.078039,
    lng2=-118.436383, lat2=34.062717,
    fillColor = "transparent"
  )