如何将摩洛哥省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
相关产品推荐
相关产品推荐

