Порядок расположения пространственного полигона в листовке - PullRequest
0 голосов
/ 03 апреля 2019

У меня проблемы с порядком построения многоугольника в листовке. Я предложил обходной путь, который включает в себя построение подмножеств данных в виде отдельных многоугольников, но это не идеально.

Есть ли менее хакерский способ отрегулировать порядок, в котором листовка строит полигоны пространственного полигона данных?

Я загрузил выписку из моего набора данных здесь: 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)

enter image description here Это порядок, в котором полигоны отображаются при использовании полного набора данных. Обратите внимание на разницу в цвете со вторым рисунком, когда он нанесен в правильном порядке.

# 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)

enter image description here

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

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