У меня проблемы с порядком построения многоугольника в листовке. Я предложил обходной путь, который включает в себя построение подмножеств данных в виде отдельных многоугольников, но это не идеально.
Есть ли менее хакерский способ отрегулировать порядок, в котором листовка строит полигоны пространственного полигона данных?
Я загрузил выписку из моего набора данных здесь: https://gofile.io/?c=Ir2aYR
rm(list = ls()); cat("\014"); gc()
pacman::p_load(tidyverse, data.table, leaflet, sp, viridis)
# DATA --------------------------------------------------------------------
catch_dt <- readRDS("I:/stackExample.RDS")
dt = catch_dt@data
dt
# MAPPING -----------------------------------------------------------------
catch_dt_lvl0 = catch_dt %>% subset(nestedLevel == 0)
catch_dt_lvl1 = catch_dt %>% subset(nestedLevel == 1)
catch_dt_lvl2 = catch_dt %>% subset(nestedLevel == 2)
catch_dt_lvl3 = catch_dt %>% subset(nestedLevel == 3)
catch_dt_lvl4 = catch_dt %>% subset(nestedLevel == 4)
nHotspotType = dt$hotspotType %>% levels %>% length
palHotspotType = colorFactor(viridis(n = nHotspotType), domain = catch_dt$hotspotType)
# Whole dataset
leaflet() %>%
addProviderTiles(provider = providers$Esri.WorldGrayCanvas) %>%
addPolygons(data = catch_dt,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt$hotspotType), fillOpacity = 1.0,
stroke = FALSE)
Это порядок, в котором полигоны отображаются при использовании полного набора данных. Обратите внимание на разницу в цвете со вторым рисунком, когда он нанесен в правильном порядке.
# Subset
leaflet() %>%
addProviderTiles(provider = providers$Esri.WorldGrayCanvas) %>%
addPolygons(data = catch_dt_lvl0,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt_lvl0$hotspotType), fillOpacity = 1.0,
stroke = FALSE) %>%
addPolygons(data = catch_dt_lvl1,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt_lvl1$hotspotType), fillOpacity = 1.0,
stroke = FALSE) %>%
addPolygons(data = catch_dt_lvl2,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt_lvl2$hotspotType), fillOpacity = 1.0,
stroke = FALSE) %>%
addPolygons(data = catch_dt_lvl3,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt_lvl3$hotspotType), fillOpacity = 1.0,
stroke = FALSE) %>%
addPolygons(data = catch_dt_lvl4,
weight = 0.2, smoothFactor = 0.2,
fillColor = ~palHotspotType(catch_dt_lvl4$hotspotType), fillOpacity = 1.0,
stroke = FALSE)
Это требуемый порядок слоев, где уровень 0 находится внизу, а уровень 1 вверху.