多转一空间连接:将点要素HN字段值合并至多边形新字段
我来帮你搞定这个一对多空间连接并合并字段的需求,下面分主流GIS工具给出具体可操作的步骤:
需求回顾
- 点要素表:包含
ID、HN、Street字段,数据如下:
ID HN Street 1 5 Examplestreet 2 6 Examplestreet 3 2 Otherstreet 4 2 Anotherstreet - 多边形要素表:包含
Name字段,值为Firstpolygon、Secondpolygon、Otherpolygon- 核心目标:执行一对多空间连接,将落入对应多边形的点的
HN字段值合并,在多边形表中生成新字段all_HN(例如Firstpolygon对应5,6,如果ID1、ID2的点落入该多边形)
1. QGIS 实现步骤
第一步:建立空间关联(一对多)
- 加载点图层和多边形图层到QGIS
- 菜单栏选择
矢量 > 数据管理工具 > 连接属性(空间)- 输入图层:选择你的多边形图层
- 连接图层:选择点图层
- 连接类型:选「每个要素连接到最匹配的要素(一对多)」
- 空间谓词:选「包含」(如果需要点和多边形边界接触也算,可换「相交」)
- 点击「运行」,得到包含所有匹配点属性的临时图层
第二步:合并HN字段值
- 打开
处理工具箱 > 矢量表 > 聚合工具- 输入图层:选择刚才生成的空间连接结果图层
- 分组依据:选择多边形的
Name字段(或其他唯一标识字段) - 聚合函数:添加新字段
all_HN,函数选「连接」,输入字段选HN,分隔符填, - 点击「运行」,最终输出的图层就是带合并后
all_HN字段的多边形图层
2. ArcGIS Pro 实现步骤
第一步:创建一对多空间连接
- 加载点和多边形图层到ArcGIS Pro
- 打开
分析 > 工具 > 空间连接- 目标要素:选择多边形图层
- 连接要素:选择点图层
- 连接操作:选「保留所有目标要素并连接所有匹配的连接要素(一对多)」
- 匹配选项:选「包含」(按需调整空间关系)
- 运行工具,得到带所有点属性的临时图层
第二步:汇总合并HN字段
- 打开
分析 > 工具 > 汇总统计数据- 输入表:选择空间连接生成的结果表
- 案例分组字段:选择多边形的
Name字段 - 统计字段:添加
HN,统计类型选「连接」,分隔符输入, - 运行后得到汇总表,再通过「连接字段」工具把汇总的
all_HN关联回原多边形图层即可
3. PostGIS(SQL)实现方法
如果用PostgreSQL+PostGIS,直接用SQL就能一步完成:
-- 假设点表名为points,多边形表名为polygons,几何字段分别为geom SELECT p.name, STRING_AGG(pt.hn::TEXT, ', ') AS all_HN FROM polygons p LEFT JOIN points pt ON ST_Contains(p.geom, pt.geom) GROUP BY p.name;
- 说明:
ST_Contains判断点是否完全在多边形内,STRING_AGG把匹配的HN值用,拼接起来,GROUP BY按多边形名称分组
内容的提问来源于stack exchange,提问作者Max Mustermann




