Pet*_*etr 2 maps leaflet r-leaflet r-sf
我想问一下如何sf在传单中绘制对象,leaflet package我知道mapview package可以绘制它,但是我更喜欢使用 leafet 包。
我在下面提供了示例:
library(leaflet)
library(eurostat)
library(dplyr)
library(ggplot2)
options(readr.default_locale=readr::locale(tz="Europe/Berlin"))
df60 <- get_eurostat_geospatial(resolution = 60)
CE.sf <- df60 %>%
dplyr::filter(LEVL_CODE == 2 & CNTR_CODE %in% c("AT","CZ","DE","HU","PL","SK")) %>%
dplyr::select(NUTS_ID)
plot(CE.sf)
CE.sf %>%
ggplot() +
geom_sf(color = "black", size = 0.4)
CE = sf::as_Spatial(CE.sf)
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data= CE, color = "green")
Run Code Online (Sandbox Code Playgroud)
我需要从传单中的第 15 行重现情节,我在这里找到了一些想法:https : //gis.stackexchange.com/questions/239118/r-convert-sf-object-back-to-spatialpolygonsdataframe
但是,使用这种方法不起作用。
您只是忘记data在leaflet()函数中设置参数。此外,您不需要将sf对象转换为sp格式:
# packages
library(leaflet)
library(eurostat)
library(dplyr)
library(ggplot2)
options(readr.default_locale=readr::locale(tz="Europe/Berlin"))
df60 <- get_eurostat_geospatial(resolution = 60)
#> sf at resolution 1:60 read from local file
CE.sf <- df60 %>%
filter(LEVL_CODE == 2 & CNTR_CODE %in% c("AT","CZ","DE","HU","PL","SK")) %>%
select(NUTS_ID)
plot(CE.sf)
Run Code Online (Sandbox Code Playgroud)

leaflet(CE.sf) %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(color = "green")
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v0.3.0)于 2020 年 5 月 1 日创建