Inleiding

In deze blog tonen wij het R script waarmee bovenstaande interactieve kaart is gemaakt.

Let op: het downloaden en uitpakken van de data wordt gedaan door het script. (Dit hoef je dus niet zelf te doen…)

Voer de regels hieronder één voor één uit - en zie het allemaal gebeuren. Natuurlijk: je kunt het script ook in één keer uitvoeren, maar dat is veel minder leerzaam.

Waar nodig is commentaar toegevoegd.

# InteractiefKaartvensterInRStudio.R
# Auteur: Egge-Jan Polle - 16 november 2015 - http://www.twiav.nl/
# Het laden van de benodigde packages
library(sp)
library(rgdal)
library(leaflet)

# Maak een submap aan in de werkmap (worikng directory) om data op te slaan 
dir.create("./Data")

# download en unzip de dataset met gemeentelijke data
URL <- "http://www.twiav.nl/files/NL_Gemeenten2014.zip"
download.file(URL, destfile ="./Data/NL_Gemeenten2014.zip", mode = "wb")
unzip("./Data/NL_Gemeenten2014.zip", exdir = "./Data")
unlink("./Data/NL_Gemeenten2014.zip") # gooi het zip bestand weg

# download en unzip de datasets met spoorwegdata
URL <- "http://www.twiav.nl/files/Spoorwegen2015.zip"
download.file(URL, destfile ="./Data/Spoorwegen2015.zip", mode = "wb")
unzip("./Data/Spoorwegen2015.zip", exdir = "./Data")
unlink("./Data/Spoorwegen2015.zip") # gooi het zip bestand weg
rm(URL)

# lees de gegevens in
gem2014 <- readOGR("Data", "NL_Gemeenten2014")
## OGR data source with driver: MapInfo File 
## Source: "Data", layer: "NL_Gemeenten2014"
## with 403 features
## It has 34 fields
stations2015 <- readOGR("Data", "NL_Stations2015")
## OGR data source with driver: MapInfo File 
## Source: "Data", layer: "NL_Stations2015"
## with 398 features
## It has 2 fields
spoorwegen2015 <- readOGR("Data", "NL_Spoorwegen2015")
## OGR data source with driver: MapInfo File 
## Source: "Data", layer: "NL_Spoorwegen2015"
## with 115 features
## It has 2 fields
# Bekijk de gegevens (optioneel)
View(gem2014)
View(stations2015)
View(spoorwegen2015)
plot(gem2014, col = "darkgreen", border = "darkgreen")
plot(spoorwegen2015, col = "blue", add = TRUE)
plot(stations2015, pch = 19, col = "red", add = TRUE)

# Maak de popups/tooltips aan (opmaak met html)
station_popup <- paste0("<table><tr><td bgcolor=#E0E0E0><strong>Station: </strong></td><td><a href=",stations2015$Wikipedia,">",stations2015$Station,"</a></td></tr></table>")
spoorweg_popup <- paste0("<table><tr><td bgcolor=#E0E0E0><strong>Traject: </strong></td><td>",spoorwegen2015$Traject,"</td></tr><tr><td bgcolor=#E0E0E0><strong>Treindienst: </strong></td><td>",spoorwegen2015$Treindienst,"</td></tr></table>")
gem_popup <- paste0("<table><tr><td bgcolor=#E0E0E0><strong>Naam: </strong></td><td>",gem2014$Gemeentenaam,"</td></tr><tr><td bgcolor=#E0E0E0><strong>Provincie: </strong></td><td>",gem2014$Provincie_naam,"</td></tr><tr><td bgcolor=#E0E0E0><strong>Inwoners: </strong></td><td>",format(gem2014$Inwoners, big.mark = ".", decimal.mark = ","),"</td></tr></table>")

# Maak de interactieve kaart aan
inl <- leaflet() %>%
  # Base groups
  addTiles(group = "Openstreetmap") %>%
  addProviderTiles("Stamen.TonerLite", group = "Stamen Toner Lite") %>%
  addProviderTiles("Stamen.Watercolor", group = "Stamen Watercolor") %>%
  setView(lng = 4.9, lat = 52.378333, zoom = 12) %>% # Amsterdam Centraal
  # Overlay groups
  addPolygons(
    data=spTransform(gem2014, CRS("+init=epsg:4326")),
    group = "Gemeenten (2014)",
    popup = gem_popup,
    fillOpacity = 0,
    color = "#900000",
    weight = 2
  ) %>%
  addPolylines(
    data=spTransform(spoorwegen2015, CRS("+init=epsg:4326")),
    group = "Spoorwegen",
    popup = spoorweg_popup,
    opacity = 1
  ) %>%
  addCircles(
    data=spTransform(stations2015, CRS("+init=epsg:4326")),
    group = "Stations",
    popup = station_popup,
    weight = 3,
    radius=80,
    color="#FF0000",
    stroke = TRUE,
    fillOpacity = 0.8
  ) %>%
  # Layers control
  addLayersControl(
    baseGroups = c("Openstreetmap", "Stamen Toner Lite", "Stamen Watercolor"),
    overlayGroups = c("Stations", "Spoorwegen", "Gemeenten (2014)"),
    options = layersControlOptions(collapsed = FALSE)
  )
# Toon de interactieve kaart
inl

De kaart die nu zichtbaar wordt staat bovenaan deze pagina.



Egge-Jan Pollé