leaflet
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é