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

如何在R中通过质心连接两个Shapefile?

解决方案

步骤1:统一坐标系

先确认两个sf对象的坐标参考系(CRS)一致,若不同则转换对齐:

# 假设市政多边形sf名为municipalities,UTM质心sf名为utm_centroids
if (!st_crs(municipalities) == st_crs(utm_centroids)) {
  utm_centroids <- st_transform(utm_centroids, st_crs(municipalities))
}

步骤2:点-多边形空间匹配

用st_join结合st_within参数,将质心匹配到对应的市政多边形,同时保留市政几何:

# 左连接确保所有市政都被保留,哪怕无匹配的UTM网格
matched_data <- st_join(municipalities, utm_centroids, join = st_within, left = TRUE)

步骤3:按市政聚合物种数据

基于市政的唯一标识(比如muni_id,替换为你数据中的实际列名),对Ab和Sp列做聚合(示例用求和,可按需换成均值等):

# 先移除几何信息,聚合数值列
aggregated_stats <- matched_data %>%
  st_drop_geometry() %>%
  group_by(muni_id) %>%
  summarise(
    total_Ab = sum(Ab, na.rm = TRUE),
    total_Sp = sum(Sp, na.rm = TRUE)
  )

# 将聚合结果与原市政sf关联,恢复几何信息
final_sf <- left_join(municipalities, aggregated_stats, by = "muni_id")

导出结果Shapefile

st_write(final_sf, "aggregated_municipal_species.shp", delete_layer = TRUE)

关键注意点

  • st_within是核心逻辑:专门用于判断点是否包含在多边形内,完全匹配你的质心-市政匹配需求
  • 左连接+na.rm=TRUE:保证无UTM覆盖的市政也被保留,同时处理空值聚合问题
  • 聚合必须用市政唯一标识:避免同名市政导致的错误分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 06:53:13