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

合并重叠多边形后如何保留最早关联多边形的日期与ID

解决方法

要实现合并重叠洪水多边形并保留每组最早洪水的日期与ID,可按以下步骤程序化处理:

步骤1:合并原始图层

先将两个季风季的洪水图层合并为一个完整数据集,方便统一处理:

# 合并两个原始洪水图层
flood_all <- rbind(flood1, flood2)

步骤2:生成带分组ID的合并区域

对所有洪水多边形进行合并(dissolve重叠部分),并为每个合并后的区域分配唯一分组ID:

# 生成合并后的洪水区域并添加分组标识
flood_agg <- sf::st_union(flood_all) %>%
  sf::st_cast("POLYGON") %>%
  sf::st_sf() %>%
  dplyr::mutate(group_id = dplyr::row_number())

步骤3:空间连接关联原始多边形与合并组

通过空间交集操作,将每个原始洪水多边形匹配到对应的合并区域分组:

# 空间连接:匹配每个原始多边形所属的合并组
joined <- sf::st_join(flood_all, flood_agg, join = sf::st_intersects)

步骤4:提取每组最早的洪水记录

按分组ID聚合,筛选出每个合并组中日期最早的洪水记录,保留对应的ID与日期:

# 按分组筛选最早日期的记录
earliest_records <- joined %>%
  dplyr::group_by(group_id) %>%
  dplyr::filter(date == min(date)) %>%
  dplyr::select(group_id, id, date) %>%
  dplyr::distinct(group_id, .keep_all = TRUE) # 若同一组存在多个同日期洪水,取第一条记录;可按需调整

步骤5:合并得到最终结果

将合并后的洪水区域与对应的最早洪水信息关联,得到包含目标属性的最终图层:

# 合并区域与最早记录,生成结果图层
final_flood <- dplyr::left_join(flood_agg, earliest_records, by = "group_id")

注意事项

  • 若同一合并组存在多个日期相同的最早洪水,可根据需求修改distinct部分,例如用paste(id, collapse = ", ")合并所有对应ID。
  • 该方法针对2000个左右的多边形完全适用,sf与dplyr的组合操作效率足以处理这类规模的数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:27:28