Я хочу отобразить несколько особенностей набора данных карты в виде листовки.
Поскольку у меня много полигонов и много переменных, я бы хотел избежать дублирования слоев.
Я хочу воспроизвести что-то в соответствии с картой mapview
, сгенерированной ниже, но желательно в виде листовки, поскольку она обеспечивает большую гибкость и может быть сохранена в виде HTML.
Я не планировал делать это в Shinyпоскольку цель состоит не в том, чтобы настроить веб-страницу, а в том, чтобы сохранить HTML-код (не самодостаточный, поскольку в противном случае он загрузил бы весь OSM).
Я думаю, что это должно быть возможно сделать с использованием функциональности JavaScript Leaflet.но я не уверен, как именно.
# test example choropleth colour
rm(list = ls())
# pkg ---------------------------------------------------------------------
if(!require(pacman)) install.packages("pacman")
pacman::p_load(dplyr, eurostat, leaflet, sf)
# load maps ---------------------------------------------------------------
map <- eurostat::get_eurostat_geospatial(output_class = "sf") %>%
filter(LEVL_CODE == 0)
map$var1 <- runif(n = 37)
map$var2 <- runif(n = 37)
map$var3 <- runif(n = 37)
# display map -------------------------------------------------------------
m1 <- mapview(map, zcol = "var1")
m2 <- mapview(map, zcol = c("var1", "var2"))
m3 <- mapview(map, zcol = c("var1", "var2", "var3"))
полигоны дублируются в объектах m1, m2, m3, см. размер объектов * Шейп-файлы 1013 *
palette1 <- colorBin(palette = "Greens", domain = map$var1)
palette2 <- colorBin(palette = "Blues", domain = map$var1)
l1 <- leaflet() %>%
addProviderTiles("OpenStreetMap.HOT") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette1(var1))
l2 <- leaflet() %>%
addProviderTiles("OpenStreetMap.HOT") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette1(var1),
group = "var1") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette2(var2),
group = "var2") %>%
addLayersControl(baseGroups = c("var1", "var2"))
l3 <- leaflet() %>%
addProviderTiles("OpenStreetMap.HOT") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette1(var1),
group = "var1") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette2(var2),
group = "var2") %>%
addPolygons(data = map,
color = "black",
fillColor = ~palette1(var3),
group = "var3") %>%
addLayersControl(baseGroups = c("var1", "var2", "var3"))
дублируются в l1,l2, l3 объект (см. размер объекта)
m1
l1
Обратите внимание, что карта не отображается с картой евростата, а с моим шейп-файлом, поэтому, возможно, есть проблема с CRS, что я не являюсьв курсе.