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

如何在R中合并Shapefile中同ID的多个多边形要素?

解决Shapefile重复ID多边形合并问题

嘿,我来帮你搞定这个多边形合并的难题!你说得对,rbind和普通的union只能堆叠要素行或者把所有多边形合并成一个,根本没法按重复的ID_2来分组合并对应的多边形。针对埃塞俄比亚GADM Level2数据的这个情况,咱们用sf包(现在处理空间数据的主流工具)的分组融合操作就能轻松解决,最终得到79个要素的sptemp。

具体步骤如下:

1. 加载必要的R包

首先确保你安装了sf(处理空间数据)和dplyr(数据分组聚合),然后加载它们:

library(sf)
library(dplyr)

2. 读取GADM Level2的Shapefile

用st_read读取你的Shapefile文件,替换成你本地的文件路径:

# 读取埃塞俄比亚GADM Level2数据
eth_gadm <- st_read("你的文件路径/gadm36_ETH_2.shp")

3. 按ID_2分组合并多边形

核心操作是按ID_2分组,然后用st_union合并每组内的所有多边形,同时可以保留你需要的属性字段(比如NAME_2):

# 按ID_2分组,合并对应多边形并整理属性
sptemp <- eth_gadm %>%
  # 按ID_2分组
  group_by(ID_2) %>%
  # 聚合操作:合并几何图形,保留其他属性(这里用first()取每组第一个NAME_2,你可以根据需求调整)
  summarise(
    geometry = st_union(geometry),
    NAME_2 = first(NAME_2)
  ) %>%
  # 取消分组
  ungroup()

4. 验证结果

最后检查一下要素数量是不是79:

# 查看合并后的要素数量
nrow(sptemp)

额外提示:处理拓扑错误

如果合并过程中出现拓扑相关的报错,可以先修复数据的拓扑问题再合并:

# 先修复可能的拓扑无效问题
eth_gadm <- eth_gadm %>% st_make_valid()

# 再执行上面的分组合并操作
sptemp <- eth_gadm %>%
  group_by(ID_2) %>%
  summarise(
    geometry = st_union(geometry),
    NAME_2 = first(NAME_2)
  ) %>%
  ungroup()

这样操作后,你就能得到每个ID_2对应单个多边形的sptemp啦!

内容的提问来源于stack exchange,提问作者Neal Barsch

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:07:31