ST_收集 - Amazon Redshift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ST_收集

ST_Collect有两个变体。其中一种接受两种几何形状,一种接受聚合表达式。

ST_Collect的第一个变体从输入几何形状创建一个几何形状。此变体的作用如下:

  • 如果两种输入几何形状都是点,则 MULTIPOINT 返回两个点。

  • 如果两种输入几何图形都是线串,则 MULTILINESTRING 返回两个linestring。

  • 如果两种输入几何形状都是多边形,则 MULTIPOLYGON 返回两个多边形的。

  • 否则, GEOMETRYCOLLECTION 返回两个输入几何体。

ST_Collect的第二个变体从几何列中的几何体创建几何体。输入几何形状的顺序保留。此变体的作用如下:

  • 如果输入聚合表达式中的所有非NULL行都是点,则将返回包含聚合表达式中所有点的多点。

  • 如果聚合表达式中的所有非NULL行都是linestrings,则将返回聚合表达式中包含所有linestrings的多线条字符串。

  • 如果聚合表达式中的所有非NULL行都是多边形,则结果是返回聚合表达式中包含所有多边形的多多边形。

  • 否则, GEOMETRYCOLLECTION 返回聚合表达式中包含所有几何图形的。

输入几何形状的顺序保留。

Syntax

ST_Collect(geom1, geom2)
ST_Collect(aggregate_expression)

Arguments

geom1

一个 GEOMETRY 数据类型的值,或一个计算结果为 GEOMETRY 类型的表达式。

geom2

一个 GEOMETRY 数据类型的值,或一个计算结果为 GEOMETRY 类型的表达式。

aggregate_expression

一列数据类型 GEOMETRY 或计算为 GEOMETRY 类型。

返回类型

GEOMETRY 子类型 MULTIPOINT, MULTILINESTRING, MULTIPOLYGON,或 GEOMETRYCOLLECTION.

返回的几何体的空间参考系统标识符 (SRID) 值是输入几何体的 SRID 值。

如果两者 用种场出1用种场出2 为null,则返回null。

如果所有行 聚合表达式 为null,则返回null。

如果 用种场出1 为null,然后是 用种场出2 返回。同样,如果 用种场出2 为null,然后是 用种场出1 返回。

如果 geom1geom2 具有不同的 SRID 值,则返回一个错误。

如果 聚合表达式 具有不同的SRID值,则返回错误。

如果返回的几何尺寸大于 GEOMETRY,则返回错误。

Examples

以下SQL返回包含两个输入几何的几何集合。

SELECT ST_AsText(ST_Collect(ST_GeomFromText('LINESTRING(0 0,1 1)'), ST_GeomFromText('POLYGON((10 10,20 10,10 20,10 10))')));
st_astext ----------- GEOMETRYCOLLECTION(LINESTRING(0 0,1 1),POLYGON((10 10,20 10,10 20,10 10)))

以下SQL将表格中的所有几何体收集到几何集合中。

WITH tbl(g) AS (SELECT ST_GeomFromText('POINT(1 2)', 4326) UNION ALL SELECT ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL SELECT ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL SELECT NULL::geometry UNION ALL SELECT ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326)) SELECT ST_AsEWKT(ST_Collect(g)) FROM tbl;
st_astext ----------- SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(0 0,10 0),MULTIPOINT((13 4),(8 5),(4 4)),POLYGON((0 0,10 0,0 10,0 0)))

以下SQL收集按ID列分组并按此ID排序的表中的所有几何形状。在此示例中,生成的几何形状按ID分组,如下所示:

  • id1(ID1) – 多点中的点。

  • ID2 – linestrings在多线条字符串中。

  • ID3 – 几何集合中的混合子类型。

  • ID4 – 多多边形中的多边形。

  • ID5 – null和结果null。

WITH tbl(id, g) AS (SELECT 1, ST_GeomFromText('POINT(1 2)', 4326) UNION ALL SELECT 1, ST_GeomFromText('POINT(4 5)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(0 0,10 0)', 4326) UNION ALL SELECT 2, ST_GeomFromText('LINESTRING(10 0,20 -5)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTIPOINT(13 4,8 5,4 4)', 4326) UNION ALL SELECT 3, ST_GeomFromText('MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((0 0,10 0,0 10,0 0))', 4326) UNION ALL SELECT 4, ST_GeomFromText('POLYGON((20 20,20 30,30 20,20 20))', 4326) UNION ALL SELECT 1, NULL::geometry UNION ALL SELECT 2, NULL::geometry UNION ALL SELECT 5, NULL::geometry UNION ALL SELECT 5, NULL::geometry) SELECT id, ST_AsEWKT(ST_Collect(g)) FROM tbl GROUP BY id ORDER BY id;
id | st_asewkt ----+----------------------------------------------------------------------------------------------------------- 1 | SRID=4326;MULTIPOINT((1 2),(4 5)) 2 | SRID=4326;MULTILINESTRING((0 0,10 0),(10 0,20 -5)) 3 | SRID=4326;GEOMETRYCOLLECTION(MULTIPOINT((13 4),(8 5),(4 4)),MULTILINESTRING((-1 -1,-2 -2),(-3 -3,-5 -5))) 4 | SRID=4326;MULTIPOLYGON(((0 0,10 0,0 10,0 0)),((20 20,20 30,30 20,20 20))) 5 |