适用于:
Databricks Runtime 18.3 及更高版本
Important
此功能目前以公共预览版提供。
将一组 GEOGRAPHY 或 GEOMETRY 值收集到单个多点、多行字符串、多多边形或几何图形集合中。
Syntax
st_collect ( geoArray )
Arguments
-
geoArray:值的数组GEOGRAPHY,或值的数组GEOMETRY。
Returns
类型或GEOGRAPHYGEOMETRY表示多点、多行字符串、多多边形或几何图形集合的值。
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。
示例
-- 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