適用於:
執行時間 18 LTS 及以上
Note
Databricks Runtime 18 比 Databricks Runtime 18.0、18.1 和 18.2 更新。 原本會以後期編號版本推出的功能,現在改為以 Databricks Runtime 18 的更新形式提供。 詳情請參見 關於統一發布說明。
將 GEOGRAPHY 或 GEOMETRY 的數值陣列收集成單一多點、多線條、多邊形或幾何集合。
Syntax
st_collect ( geoArray )
論點
-
geoArray:一個值陣列GEOGRAPHY,或一個值陣GEOMETRY列。
Returns
一個型別 GEOGRAPHY 為 的 GEOMETRY值,代表多點、多線條、多邊形或幾何集合。
NULL會忽略輸入陣列中的任何值。 輸出的類型取決於非NULL 輸入幾何的類型:
- 若所有非
NULL元素皆為點,則返回多點。 - 如果所有非
NULL元素都是線條,則回傳多行字串。 - 若所有非
NULL元素皆為多邊形,則返回多邊形。 - 否則,會回傳一個幾何集合。
每個輸出包含一個非NULL 陣列元素。
多型輸入(多點、多線字串、多多邊形)及幾何集合輸入會作為所得幾何集合的元素被保留;它們並未被壓扁。
輸出的 SRID 值是非NULL 輸入幾何的共用 SRID 值。
輸出的維度是非NULL 輸入幾何體的最大公維度。
若輸入陣列為空或僅 NULL 包含數值,則會回傳 2D 空幾何集合。 此時,輸出的 SRID 可確定如下:
- 若輸入陣列的元素類型為
GEOGRAPHY(ANY),則輸出的 SRID 為4326。 - 若輸入陣列的元素類型為
GEOMETRY(ANY),則輸出的 SRID 為0。 - 否則,輸出的 SRID 即為輸入陣列元素類型的 SRID。
如果輸入為 NULL,則函式會傳NULL回 。
錯誤條件
- 如果任兩個非
NULL輸入幾何體的 SRID 值不同,函式會回傳 ST_DIFFERENT_SRID_VALUES。
Examples
-- Collects an array of points into a multipoint.
> SELECT st_astext(st_collect(array(st_geomfromtext('POINT(1 2)'),st_geomfromtext('POINT(3 4)'))));
MULTIPOINT((1 2),(3 4))
-- Collects an array of polygons into a multipolygon.
> SELECT st_astext(st_collect(array(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))'))));
MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)))
-- Collects an array of mixed geometry kinds into a geometry collection.
> SELECT st_astext(st_collect(array(st_geomfromtext('POLYGON((0 0,10 0,10 10,0 10,0 0))'),st_geomfromtext('LINESTRING(1 2,3 4)'))));
GEOMETRYCOLLECTION(POLYGON((0 0,10 0,10 10,0 10,0 0)),LINESTRING(1 2,3 4))
-- Returns the 2D empty geometry collection for an empty input array.
> SELECT st_astext(st_collect(array()));
GEOMETRYCOLLECTION EMPTY
-- Returns NULL for a NULL input.
> SELECT st_collect(NULL);
NULL