如何使用包 SF 和 dplyr 制作多边形
How to make Multipolygons with Package SF and dplyr
如何使用 dplyr 将 sf 地图对象折叠成多面体几何形状?
当我使用 group_by 并进行总结时,默认生成的几何图形似乎是一个 MULTIPOINT sfg class。我希望使用下面的虚拟数据中的包传单绘制 3 个不同的多边形(每个 'area' 值 1 个)。
非常感谢任何指导。
library(tidyverse)
library(sf)
library(leaflet)
wannabe_polygons <- st_as_sf(tibble(
area =c(rep("southern suburbs", 8),
rep("northern suburbs", 6),
rep("somerset west", 5)
),
lng = c(18.35, 18.37, 18.34, 18.45,
18.49, 18.43, 18.42, 18.32,
18.49, 18.48, 18.44, 18.7,
18.74, 18.72, 18.82, 18.89,
18.92, 18.87, 18.7
),
lat = c(-34.1, -34.06, -33.99, -33.97,
-34.09, -34.14, -34.19, -34.15,
-33.88, -33.83, -33.7, -33.8,
-33.9, -34.07, -33.9, -33.9,
-34.11, -34.16, -34.05
)
),
coords = c("lng", "lat"))
wannabe_polygons <- wannabe_polygons %>%
group_by(area) %>%
summarise()
# str(wannabe_polygons)
leaflet() %>%
addTiles(group = "OSM") %>%
addPolygons(data = wannabe_polygons)
不确定为什么要转换为 MULTIPOLYGON
,但您可以这样做:
wannabe_polygons %>%
group_by(area) %>%
summarise(geometry = st_combine(geometry)) %>%
st_cast("POLYGON") %>%
summarise(geometry = st_combine(geometry)) -> new_polygons
leaflet() %>%
addProviderTiles(providers$OpenStreetMap) %>%
addPolygons(data = new_polygons)
如果您使用 MULTIPOLYGON
或 POLYGON
对生成的传单地图没有影响,因此您可以在 st_cast("POLYGON")
之后停止。
如何使用 dplyr 将 sf 地图对象折叠成多面体几何形状?
当我使用 group_by 并进行总结时,默认生成的几何图形似乎是一个 MULTIPOINT sfg class。我希望使用下面的虚拟数据中的包传单绘制 3 个不同的多边形(每个 'area' 值 1 个)。
非常感谢任何指导。
library(tidyverse)
library(sf)
library(leaflet)
wannabe_polygons <- st_as_sf(tibble(
area =c(rep("southern suburbs", 8),
rep("northern suburbs", 6),
rep("somerset west", 5)
),
lng = c(18.35, 18.37, 18.34, 18.45,
18.49, 18.43, 18.42, 18.32,
18.49, 18.48, 18.44, 18.7,
18.74, 18.72, 18.82, 18.89,
18.92, 18.87, 18.7
),
lat = c(-34.1, -34.06, -33.99, -33.97,
-34.09, -34.14, -34.19, -34.15,
-33.88, -33.83, -33.7, -33.8,
-33.9, -34.07, -33.9, -33.9,
-34.11, -34.16, -34.05
)
),
coords = c("lng", "lat"))
wannabe_polygons <- wannabe_polygons %>%
group_by(area) %>%
summarise()
# str(wannabe_polygons)
leaflet() %>%
addTiles(group = "OSM") %>%
addPolygons(data = wannabe_polygons)
不确定为什么要转换为 MULTIPOLYGON
,但您可以这样做:
wannabe_polygons %>%
group_by(area) %>%
summarise(geometry = st_combine(geometry)) %>%
st_cast("POLYGON") %>%
summarise(geometry = st_combine(geometry)) -> new_polygons
leaflet() %>%
addProviderTiles(providers$OpenStreetMap) %>%
addPolygons(data = new_polygons)
如果您使用 MULTIPOLYGON
或 POLYGON
对生成的传单地图没有影响,因此您可以在 st_cast("POLYGON")
之后停止。