我想把 CO(一个多边形)分成几个没有被道路(线串)切割的区域(也是多边形)。也就是说,我希望小多边形的区域由道路或州边界组成,并且不包含任何进出多边形的道路。
我可以使用
我的最终目标是确保我的点(单独的数据)不会被道路分开。如果您有更直接的解决方案,我非常愿意听取建议。
有人找到或看到了这个问题的解决方法吗?
我可以使用
lwgeom::st_split
生成一个几何图集,但我不确定它是否对我有帮助。我陷入了困境,因为我不知道如何从集合中提取几何图形,并为其分配唯一的 ID。我的最终目标是确保我的点(单独的数据)不会被道路分开。如果您有更直接的解决方案,我非常愿意听取建议。
library(tidyverse)
library(tigris)
library(sf)
library(lwgeom)
co <- states(cb = T) %>%
filter(NAME == "Colorado")
roads <- primary_secondary_roads(state = 'Colorado')
cosplit <- st_split(co,roads)
有人找到或看到了这个问题的解决方法吗?
st_coordinates(sl)
,你会注意到你的 "sl" 对象的点不再按照它们原来的顺序排列:X = 5,10,20,15,25,而不是原来的 5,10,15,20,25。在你的情况下,st_union()
是创建你的 "sls" 对象的错误步骤。相反,你应该使用summarise()
将你的经度/纬度组合成几何图形,例如sls <- data.frame('lon' = c(5,10,15,20,25), 'lat' = c(7,7,7,7,7)) %>% st_as_sf(coords = c('lon', 'lat'), crs = 4326) %>% summarise(geometry = st_combine(geometry)) %>% st_cast("LINESTRING") %>% st_split(., rb) %>% st_collection_extract("LINESTRING")
。 - undefinedsummarise(geometry = st_combine(geometry))
代替concaveman()
来创建多边形对象,而且你也不需要第五个节点,例如rb <- data.frame('lon' = c(10,10,20,20), 'lat' = c(5,10,10,5)) %>% st_as_sf(coords = c('lon', 'lat'), crs = 4326) %>% summarise(geometry = st_combine(geometry)) %>% st_cast("POLYGON")
。 - undefined