Буклет R: как отобразить 'объединенный' SpatialPolygonsDataFrame, используя leaflet :: addPolygons ()? - PullRequest
0 голосов
/ 15 декабря 2018

Я понимаю, как управлять объектами класса SpatialPolygonsDataFrame, и могу отображать их на картах, используя базу R или буклет.

Однако Я не могу понять, почему приведенный ниже фрагмент кода больше не работает с«объединенные» полигоны .Я использую rmapshaper::ms_dissolve() для объединения полигонов, что не меняет класс объекта ...

Можете ли вы помочь выяснить ошибку?Заранее большое спасибо!

Ниже приведен минимальный воспроизводимый пример.Части 1 и 2 в порядке.Часть 3 перерывы ..

# Load required packages
library(dplyr)           
library(leaflet)         
library(rmapshaper) 

# load data (example dataset from leaflet)
test_data <- gadmCHE
# inspect class (SpatialPolygonsDataFrame)
test_data %>% class()

# ---------------------- #
# FIRST PART WORKS FINE  #
# - add colors           #
# - display using base R #
# - disply using leaflet #
# ---------------------- #

# add color to test_data (red)
test_data@data <- test_data@data %>% mutate(color = "#ff0000")
# basic plot (works fine)
plot(test_data, col = test_data@data$color)
# leaflet plot (works fine)
leaflet() %>% 
  addTiles() %>% 
  addPolygons(data = test_data, color = test_data@data$color)
# change color of particular regions (yellow)
test_data@data <- test_data@data %>% 
  mutate(GROUP = ifelse(OBJECTID <= 5 | OBJECTID %in% c(16,25), 99, OBJECTID),
         color = ifelse(GROUP == 99, "#ffff00", color))
# basic plot (works fine)
plot(test_data, col = test_data@data$color)
# leaflet plot (works fine)
leaflet() %>% 
  addTiles() %>% 
  addPolygons(data = test_data, color = test_data@data$color)

# ---------------------- #
# 2ND PART WORKS FINE    #
# - merge                #
# - display using base R #
# ---------------------- #

# split polygons (works fine)
temp_1 <- test_data[test_data@data$GROUP == 99,]
temp_2 <- test_data[test_data@data$GROUP != 99,]

# merge (works fine)
new_group <- ms_dissolve(temp_1, copy_fields = colnames(test_data@data))
# basic plot (works fine)
plot(new_group, col = new_group@data$color)

# ----------------------- #
# LAST PART DOES NOT WORK #
# - display using leaflet #
# ----------------------- #

# leaflet plot (DOES NOT WORK)
leaflet() %>% 
  addTiles() %>% 
  addPolygons(data = temp_2, color = temp_2@data$color)
  addPolygons(data = new_group, color = new_group@data$color)

# => HOW TO MAKE NEW_GROUP APPEAR IN YELLOW ON THE LEAFLET MAP?
...