ST_Collect — 从一组几何图形创建GeometryCollection或Multi*几何图形。
geometry
ST_Collect
(
geometry
g1
, geometry
g2
)
;
geometry
ST_Collect
(
geometry[]
g1_array
)
;
geometry
ST_Collect
(
geometry set
g1field
)
;
将几何图形收集到几何图形集合中。结果是一个多*或一个GeometryCollection,这取决于输入几何的类型是相同的还是不同的(同构或异类)。输入几何图形在集合中保持不变。
变体1: 接受两个输入几何
变体2: 接受几何图形数组
变体3: 接受几何图形行集的聚合函数。
![]() |
|
如果任何输入几何图形是集合(多*或GeometryCollection),ST_Collect将返回GeometryCollection(因为这是唯一可以包含嵌套集合的类型)。要防止出现这种情况,请使用 ST_Dump 在子查询中将输入集合扩展到它们的原子元素(请参见下面的示例)。 |
![]() |
|
ST_COLLECT和 ST_Union 看起来很相似,但实际上运作方式截然不同。ST_Collect将几何图形聚合到一个集合中,而不会以任何方式更改它们。ST_UNION以几何形式合并重叠的几何图形,并在交点处拆分线串。融合边界时,它可能会返回单个几何图形。 |
可用性:1.4.0-ST_COLLECT(Geomray)已推出。ST_Collect得到了增强,可以更快地处理更多的几何图形。
This function supports 3d and will not drop the z-index.
This method supports Circular Strings and Curves
收集二维点。
SELECT ST_AsText( ST_Collect( ST_GeomFromText('POINT(1 2)'),
ST_GeomFromText('POINT(-2 3)') ));
st_astext
----------
MULTIPOINT((1 2),(-2 3))
收集三维点。
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))