R语言 使用sf包融合面要素

ffvjumwh  于 2022-12-20  发布在  其他
关注(0)|答案(1)|浏览(252)

融合是作为sf方法here讨论的常用地理处理技术。
我正在尝试复制融合,因为它在ArcGIS中的功能。考虑县两组在ArcGIS中。
ArcGIS融合命令将生成两个面,而不考虑东部半岛由其他单独的面组成的事实。

这是我想在sf中复制的功能,但是我不能,如下所示。

nc <- st_read(system.file("shape/nc.shp", package="sf"))

#create two homogenous spatial groups
nc$group <- ifelse(nc$CNTY_ <= 1980,1,2)

#plot
ggplot() + geom_sf(data=nc, aes(fill = factor(group)))  

#dissolve
library(dplyr)#the summarize function is based on the one from dplyr (which may interfere with summarize from other libraries that may be loaded)
nc_dissolve <- nc %>% group_by(group) %>% summarize() 

#plot dissolved
ggplot() + geom_sf(data=nc_dissolve, aes(fill = factor(group)))

#Cartographically, it looks like we have two polygons, but there are 
#actually several more wrapped up as MULTIPOLYGONS. We can plot these.
t <- nc_dissolve %>% st_cast() %>% st_cast("POLYGON")
ggplot() + geom_sf(data=t, aes(fill=factor(row.names(t))))

请注意,半岛具有多个无关的多边形。
我怎么能像ArcGIS那样只得到两个呢?非常感谢。

jyztefdp

jyztefdp1#

我不太熟悉ArcGIS如何定义面,但简单的要素访问,(一种ISO标准)的多边形规格是一个具有零个或多个表示孔洞的内环的单个环。这意味着,在该规格下,如果有主陆地+几个岛屿,则不存在单个多边形。要将这些表示为单个要素,对应的几何类型是多多边形。这意味着您的答案是nc_dissolve:它有两个特点。

相关问题