如何提取R中多个北卡罗来纳州县的外部边界坐标?
提取多县组合区域的外部边界(仅保留外围轮廓)
直接对多个多边形使用st_boundary()会返回每个多边形的全部边界,包括县与县之间的内部交界——这些交界线是相邻县共享的,且坐标点顺序可能相反(比如A→B和B→A),所以duplicated()无法识别并去除,导致结果包含内部线条。
解决核心是先把多个县合并为单一的多边形对象,再提取边界,具体代码如下:
# 加载依赖包 library(sf) library(dplyr) # 加载内置北卡数据,筛选目标县并转换坐标系(替换为你实际使用的投影) nc <- st_read(system.file("shape/nc.shp", package = "sf")) %>% filter(NAME %in% c("Cleveland", "Gaston", "Rutherford", "Burke")) %>% st_transform(4326) # 示例用WGS84坐标系 # 合并所有目标县为单个多边形对象 nc_combined <- st_union(nc) # 提取合并后区域的外部边界 nc_outer_boundary <- st_boundary(nc_combined) # 提取边界坐标列表 outer_boundary_coords <- data.frame(st_coordinates(nc_outer_boundary))
关键逻辑说明
st_union(nc):将四个县的多边形合并为一个整体,相邻县的重叠内部边界会被自动融合,最终得到覆盖四个县范围的单一多边形(或多面几何对象)。st_boundary(nc_combined):此时提取的是这个整体区域的外围轮廓,完全不包含内部的县际交界线。
如果需要验证结果,用leaflet绘制即可看到纯外部边界:
library(leaflet) leaflet() %>% addTiles() %>% addPolylines(data = nc_outer_boundary, color = "red", weight = 3)
内容的提问来源于stack exchange,提问作者stats_noob
相关产品推荐
相关产品推荐

