You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 01:12:41