在R中使用sf合并多边形边界时内部边界未消除的问题求助
解决sf包合并多边形后内部边界未移除的问题
核心解决步骤
- 加载依赖包:
library(sf) library(dplyr) - 读取GeoJSON数据:
police_data <- st_read("你的GeoJSON文件路径") - 筛选需要合并的目标多边形:
target_polys <- police_data %>% filter(POL_STN_NM %in% c("PS RAJ PARK", "PS SULTAN PURI", "PS MANGOL PURI")) - 修复拓扑错误(关键:多数内部边界残留源于原数据拓扑问题):
target_polys <- target_polys %>% st_make_valid() - 合并并清理内部边界:
merged_poly <- target_polys %>% st_union() %>% # 合并多边形 st_buffer(dist = 0) %>% # 溶解内部边界、修复拓扑 st_sf() # 转回sf对象方便绘图 - 绘图验证:
plot(merged_poly$geometry, col = "lightblue", border = "black")
为什么直接用st_union没效果?
大概率是原GeoJSON数据存在拓扑错误(比如多边形自相交、边界缝隙、重叠),单纯的st_union无法处理这类问题。st_make_valid会先修复这些错误,再配合st_buffer(0)可以彻底溶解相邻多边形的内部边界,生成单一连通区域。
内容的提问来源于stack exchange,提问作者Anisha Garg
相关产品推荐
相关产品推荐

