按变量合并 st_voronoi 个多边形
merge st_voronoi polygons by variable
我想用 st_voronoi 创建多边形并通过变量合并它们
library(sf)
nc_centroids <- st_transform(nc_centroids,crs=32119)
nc_centroids$foo <- c(rep("green",50),rep("red",50))
nc <- st_transform(nc,crs=32119)
v <- st_voronoi(st_union(nc_centroids))
plot(v, col = 0)
plot(st_intersection(st_cast(v), st_union(nc)), col = 0)
plot(nc_centroids, add = TRUE)
如何通过 nc_centroids$foo 合并 v 中的多边形来创建两个大多边形?我可以想到一些 hack,比如使用 lapply 来连接 v 的各个多边形,例如 (v[[1]][[x]])。但肯定有更简单的事情
请在下面找到详细说明一种可能方法的代表。
Reprex
- 代码
library(sf)
library(dplyr)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc_centroids <- st_centroid(nc)
nc_centroids <- st_transform(nc_centroids,crs=32119)
nc_centroids$foo <- c(rep("green",50),rep("red",50))
nc <- st_transform(nc,crs=32119)
v <- st_voronoi(st_union(nc_centroids))
v <- v %>%
st_collection_extract(., "POLYGON") %>%
st_as_sf()
v_result <- v %>%
st_join(., nc_centroids, st_intersects) %>%
group_by(foo) %>%
summarize()
nc_result <- nc %>%
st_join(., v_result) %>%
group_by(foo) %>%
summarize()
- 输出
plot(nc_result)
由 reprex package (v2.0.1)
创建于 2022-02-07
我想用 st_voronoi 创建多边形并通过变量合并它们
library(sf)
nc_centroids <- st_transform(nc_centroids,crs=32119)
nc_centroids$foo <- c(rep("green",50),rep("red",50))
nc <- st_transform(nc,crs=32119)
v <- st_voronoi(st_union(nc_centroids))
plot(v, col = 0)
plot(st_intersection(st_cast(v), st_union(nc)), col = 0)
plot(nc_centroids, add = TRUE)
如何通过 nc_centroids$foo 合并 v 中的多边形来创建两个大多边形?我可以想到一些 hack,比如使用 lapply 来连接 v 的各个多边形,例如 (v[[1]][[x]])。但肯定有更简单的事情
请在下面找到详细说明一种可能方法的代表。
Reprex
- 代码
library(sf)
library(dplyr)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc_centroids <- st_centroid(nc)
nc_centroids <- st_transform(nc_centroids,crs=32119)
nc_centroids$foo <- c(rep("green",50),rep("red",50))
nc <- st_transform(nc,crs=32119)
v <- st_voronoi(st_union(nc_centroids))
v <- v %>%
st_collection_extract(., "POLYGON") %>%
st_as_sf()
v_result <- v %>%
st_join(., nc_centroids, st_intersects) %>%
group_by(foo) %>%
summarize()
nc_result <- nc %>%
st_join(., v_result) %>%
group_by(foo) %>%
summarize()
- 输出
plot(nc_result)
由 reprex package (v2.0.1)
创建于 2022-02-07