全部產品
Search
文件中心

PolarDB:ST_Union

更新時間:Jul 06, 2024

返回一個代表一些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字串,例如'{"parallel": 4}'代表開啟並行計算同時並行度為4,預設為空白'{}',即串列執行。

描述

  • 輸出類型可以是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;

    12

  • 指定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;