名稱

ST_Collect — 從一組幾何物件建立 GeometryCollection 或 Multi* 幾何物件。

概要

geometry ST_Collect(geometry g1, geometry g2);

geometry ST_Collect(geometry[] g1_array);

geometry ST_Collect(geometry set g1field);

描述

將幾何物件收集到一個幾何物件集合中。結果會是 Multi* 或 GeometryCollection,取決於輸入的幾何物件是否具有相同或不同的類型(同質或異質)。輸入的幾何物件在集合內保持不變。

變體 1: 接受兩個輸入幾何物件

變體 2: 接受一個幾何物件陣列

變體 3: 聚合函數接受幾何物件的資料列集合。

[Note]

如果任何輸入的幾何物件是集合(Multi* 或 GeometryCollection),則 ST_Collect 會傳回一個 GeometryCollection(因為這是唯一可以包含巢狀集合的類型)。為了防止這種情況,請在子查詢中使用ST_Dump 將輸入集合展開為其原子元素(請參閱以下範例)。

[Note]

ST_Collect 和 ST_Union 看起來相似,但實際上運作方式截然不同。ST_Collect 將幾何物件聚合到一個集合中,而不會以任何方式更改它們。ST_Union 會在幾何物件重疊的地方進行幾何合併,並在相交處分割線串。當它消除邊界時,可能會傳回單個幾何物件。

可用性:1.4.0 - 引入了 ST_Collect(geomarray)。ST_Collect 已增強,可以更快地處理更多幾何物件。

此函數支援 3D,並且不會捨棄 z 索引。

此方法支援圓弧字串和曲線。

範例 - 雙輸入變體

收集 2D 點。

SELECT ST_AsText( ST_Collect( ST_GeomFromText('POINT(1 2)'),
	ST_GeomFromText('POINT(-2 3)') ));

st_astext
----------
MULTIPOINT((1 2),(-2 3))

收集 3D 點。

SELECT ST_AsEWKT( ST_Collect( ST_GeomFromEWKT('POINT(1 2 3)'),
		ST_GeomFromEWKT('POINT(1 2 4)') ) );

		st_asewkt
-------------------------
 MULTIPOINT(1 2 3,1 2 4)
 

收集曲線。

SELECT ST_AsText( ST_Collect( 'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
		'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)'));

		st_astext
------------------------------------------------------------------------------------
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
 CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))

範例 - 陣列變體

為子查詢使用陣列建構函式。

SELECT ST_Collect( ARRAY( SELECT geom FROM sometable ) );

為值使用陣列建構函式。

SELECT ST_AsText(  ST_Collect(
		ARRAY[ ST_GeomFromText('LINESTRING(1 2, 3 4)'),
			ST_GeomFromText('LINESTRING(3 4, 4 5)') ] )) As wktcollect;

--wkt collect --
MULTILINESTRING((1 2,3 4),(3 4,4 5))

範例 - 聚合變體

透過分組表格中的幾何物件來建立多個集合。

SELECT stusps, ST_Collect(f.geom) as geom
	 FROM (SELECT stusps, (ST_Dump(geom)).geom As geom
				FROM
				somestatetable ) As f
	GROUP BY stusps

參見

ST_DumpST_Union