st_collect 函数

适用于:检查标记为是 Databricks Runtime 18.3 及更高版本

Important

此功能目前以公共预览版提供。

将一组 GEOGRAPHYGEOMETRY 值收集到单个多点、多行字符串、多多边形或几何图形集合中。

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

错误条件

示例

-- 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