如何合并Shapefile中的多个要素为单个多边形?
问题描述
我从FAO获取了Shapefile数据,通过以下代码读取并筛选出名为"Narmada"的流域区域:
读取数据
library(sf);library(terra); library(exactextractr) file <- st_read("~\\Major_hydrobasins.shp")
筛选目标区域
aoi=subset(file, file$MAJ_NAME == "Narmada")
筛选后发现该区域包含6个空间要素,虽然绘图时显示为一个完整多边形,但使用exact_extract计算栅格均值时返回了6个结果:
a <- rast(ncols=40, nrows=40, xmin=-180, xmax=180, ymin=-40, ymax=60, crs="+proj=longlat +datum=WGS84") values(a) <- 1:ncell(a) exactextractr::exact_extract(a, aoi, "mean")
需要将这6个要素合并为单个多边形,以得到单一的栅格均值结果。
解决方案
使用sf包的st_union()函数即可合并多个空间要素为单个多边形:
基础合并(仅保留几何)
# 合并所有要素为单一几何对象 aoi_merged <- st_union(aoi)
保留属性的合并
如果需要保留原数据的属性字段(如MAJ_NAME),可以结合dplyr进行分组聚合:
library(dplyr) aoi_merged_with_attr <- aoi %>% group_by(MAJ_NAME) %>% summarize(geometry = st_union(geometry), .groups = "drop")
验证合并结果
合并后再计算栅格均值,将得到单一结果:
exactextractr::exact_extract(a, aoi_merged, "mean")
内容的提问来源于stack exchange,提问作者Tpellirn
相关产品推荐
相关产品推荐

