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

如何用SQL结合PostGIS的ST_Join合并名称前两词相同的多边形

实现方案

该需求完全可以通过单条PostgreSQL + PostGIS语句实现,你提到的ST_Join应为笔误,多边形合并需使用PostGIS提供的ST_Union函数。

核心逻辑

  1. 对name字段按空格拆分,提取前两个单词拼接为分组标识
  2. 按分组标识做聚合,将同组所有多边形用ST_Union合并为单个几何对象

可直接运行的SQL示例

SELECT
    -- 提取前两个单词作为合并后的分组名称
    CONCAT(split_part(name, ' ', 1), ' ', split_part(name, ' ', 2)) AS group_name,
    -- 合并同组几何,ST_MakeValid用于修正可能存在的无效几何
    ST_MakeValid(ST_Union(geom)) AS merged_geometry,
    -- 可选字段:统计该组合并前的原始要素数量
    COUNT(*) AS original_feature_num
FROM
    替换为你的空间表名
WHERE
    -- 过滤名称不足两个单词的无效数据,不需要可删除该行
    array_length(string_to_array(name, ' '), 1) >= 2
GROUP BY
    group_name;

优化说明

  • 如果你的数据存在名称前后带空格、单词间多个连续空格的情况,可以将分组名称的提取逻辑替换为更鲁棒的正则拆分写法:
    CONCAT((regexp_split_to_array(trim(name), '\s+'))[1], ' ', (regexp_split_to_array(trim(name), '\s+'))[2]) AS group_name
    
  • 若需要将合并结果持久化存储到新表,只需在语句开头增加CREATE TABLE 合并后的新表名 AS即可
  • 针对你给出的示例数据,该语句会自动生成ANGELHOLM TMA、ANKARA TMA、ANTALYA APP、ANTANANARIVO TMA四个分组分别合并,无需硬编码任何前缀匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:54:07