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

如何将摩洛哥省Shapefile中的两个多边形要素合并为一个?

合并摩洛哥省份Shapefile并可视化

1. 加载依赖包

首先加载处理空间数据和绘图所需的R包:

library(sf)
library(ggplot2)
library(dplyr)

2. 读取Shapefile(若未完成)

假设你的摩洛哥省份Shapefile路径为"morocco_provinces.shp",读取并存储为sf对象:

morocco_sf <- st_read("morocco_provinces.shp", quiet = TRUE)

3. 合并指定省份

核心步骤说明:

  • 筛选出Es Semara和Tarfaya两个省份
  • 将它们的省份名称统一替换为ET
  • 合并两个省份的多边形要素
  • 更新原数据集,移除旧省份并添加合并后的新要素
# 定义需要合并的目标省份
target_provs <- c("Es Semara", "Tarfaya")

# 合并多边形并生成新的sf行
et_merged <- morocco_sf %>%
  filter(province_name %in% target_provs) %>%  # 替换为你实际的省份名称列名
  mutate(province_name = "ET") %>%
  st_union() %>%  # 合并多边形
  st_sf(province_name = "ET", geometry = .)

# 更新数据集:移除原省份,添加合并后的新区域
morocco_updated <- morocco_sf %>%
  filter(!province_name %in% target_provs) %>%
  bind_rows(et_merged)

4. 验证合并结果(ggplot绘图)

运行以下代码检查合并后的区域是否正确显示:

ggplot() +
  geom_sf(data = morocco_updated, aes(fill = province_name), color = "white", linewidth = 0.2) +
  theme_minimal() +
  labs(title = "摩洛哥省份地图(含合并ET区域)", fill = "省份名称")

拓扑问题处理

如果合并后的多边形出现缝隙或拓扑错误,可通过st_buffer(0)修复:

et_merged <- morocco_sf %>%
  filter(province_name %in% target_provs) %>%
  mutate(province_name = "ET") %>%
  st_buffer(0) %>%  # 修复拓扑异常
  st_union() %>%
  st_sf(province_name = "ET", geometry = .)

内容的提问来源于stack exchange,提问作者Saïd Maanan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:12:40