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

PostGIS按距离合并行:将500米范围内的多边形合并为单一多边形

基于PostGIS合并500米范围内的多边形

核心思路

先通过密度聚类算法将距离500米内的多边形归为同一组,再对每组多边形执行合并操作。PostGIS的ST_ClusterDBSCAN函数正好适配这类空间聚类需求。

前提注意

确保几何数据使用米为单位的投影坐标系(如UTM系列)。如果原数据是WGS84经纬度(EPSG:4326),需先转换为对应区域的UTM坐标系,否则距离计算会出现偏差。

完整SQL示例

假设你的表名为polygons_table,几何列是geom,原坐标系为EPSG:4326,目标UTM带为EPSG:32633(根据数据所在地区调整):

-- 先给每个多边形分配聚类ID,再合并同组多边形
WITH clustered_polygons AS (
  SELECT
    -- 转换坐标系后执行聚类,eps=500代表500米阈值,minpoints=1确保孤立多边形也被保留
    ST_ClusterDBSCAN(ST_Transform(geom, 32633), eps := 500, minpoints := 1) OVER () AS cluster_id,
    geom,
    attribute_column,
    text_column
  FROM polygons_table
)
SELECT
  cluster_id,
  -- 合并后转换回原坐标系(按需选择)
  ST_Transform(ST_Union(geom), 4326) AS merged_geom,
  -- 若需保留原属性,可添加聚合函数处理
  MAX(attribute_column) AS max_attr,
  STRING_AGG(text_column, ', ') AS combined_text
FROM clustered_polygons
GROUP BY cluster_id;

关键函数说明

  • ST_ClusterDBSCAN: 基于密度的空间聚类函数,eps为聚类的距离阈值,minpoints定义一个聚类最少包含的要素数量(设为1避免丢失孤立多边形)。
  • ST_Transform: 转换几何数据的坐标系,保证距离计算以米为单位。
  • ST_Union: 将同一聚类的多个多边形合并为单个几何对象(若需保留多个独立几何,可替换为ST_Collect)。

调整建议

  • 匹配正确的UTM带:根据数据所在经度范围选择对应UTM投影(比如东经10-16度用EPSG:32633,东经16-22度用EPSG:32634),跨多带数据可使用ST_TransformToUtm自动匹配。
  • 若原数据已是米单位投影,直接移除ST_Transform即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 18:10:31