Динамически изменять fillColor на листовой карте (не блестящий) - PullRequest
0 голосов
/ 04 марта 2019

Я хочу отобразить несколько особенностей набора данных карты в виде листовки.

Поскольку у меня много полигонов и много переменных, я бы хотел избежать дублирования слоев.

Я хочу воспроизвести что-то в соответствии с картой 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, что я не являюсьв курсе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...