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

如何合并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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 06:35:27