返回一个代表一些Geometry对象并集的Geometry对象。
语法
geometry ST_Union(geometry set g1Field);
geometry ST_Union(geometry g1 , geometry g2);
geometry ST_Union(geometry[] g1Array);
geometry ST_Union(geometry set g1Field, float8 gridsize);
geometry ST_Union(geometry set g1Field, cstring options);
geometry ST_Union(geometry set g1Field, float8 gridsize, cstring options);
geometry ST_Union(geometry[] g1Array, float8 gridsize);
geometry ST_Union(geometry[] g1Array, cstring options);
geometry ST_Union(geometry[] g1Array, float8 gridsize, cstring options);
参数
参数名称 | 描述 |
g1field | Geometry对象在数据集中的字段。 |
g1 | 第一个Geometry对象。 |
g2 | 第二个Geometry对象。 |
g1Array | Geometry对象数组。 |
gridsize | 指定网格大小,使得union时在相同网格内的顶点会直接合并,默认值为-1.0,表示不启用。 |
options | 如果要开启并行执行,可通过options指定并行度。 并行度范围为1~64,格式为JSON字符串,例如 |
描述
输出类型可以是Multi类型或GeometryCollection类型。该函数有两种形式:
形式1:输入参数是两个Geometry对象。输出类型可以是Multi类型,非Multi类型或GeometryCollection。如果任意一个输入对象是NULL,返回值也是NULL。
形式2:是一个聚合功能函数,输入对象是一个Geometry对象的集合,输出类型可能是Multi类型或非Multi类型。
ST_Collect和ST_Union经常可以互换使用。ST_Collect一般来说要比ST_Union快很多,因为ST_Collect不会去分解输入Geometry对象的边界或者检查一个MultiPolygon对象是否有重叠部分。
示例
对比ST_Union和ST_Collect:
SELECT ST_Union(g1,g2),ST_Collect(g1,g2) from (select 'POLYGON((0 0,1 0,1 2,0 2,0 0))'::geometry as g1,'POLYGON((1 0,3 0,3 1,1 1,1 0))'::geometry as g2) as t;
指定gridsize和options:
--指定gridsize select st_area(st_union(geom, 0.005)) from tableA; --指定并行度 select st_area(st_union(geom, '{"parallel": 4}'::cstring)) from tableA; --同时指定gridsize和并行度 select st_area(st_union(geom, 0.005, '{"parallel": 4}'::cstring)) from tableA;