Name

ST_CollectionExtract — 给定几何图形集合,返回仅包含指定类型的元素的多个几何图形。

Synopsis

geometry ST_CollectionExtract(geometry collection);

geometry ST_CollectionExtract(geometry collection, integer type);

描述

给定几何图形集合,返回同构多几何图形。

如果 类型 未指定,则返回仅包含最高维度的几何图形的多重几何图形。因此,多边形比线更受欢迎,而线比点更受欢迎。

如果 类型 则返回仅包含该类型的多重几何图形。如果没有正确类型的子几何图形,则返回空几何图形。仅支持点、线和面。类型编号为:

  • 1==点

  • 2==线条

  • 3==多边形

对于原子几何体输入,如果输入类型与请求的类型匹配,几何体将原封不动地恢复。否则,结果是指定类型的空几何图形。如果需要,可以使用将这些几何转换为多个几何 ST_Multi

[Warning]

不检查多重多边形结果的有效性。如果多边形分量相邻或重叠,则结果将无效。(例如,将此函数应用于 ST_Split 结果。)这种情况可以通过以下方式进行核实 ST_IsValid 并用其修复 ST_MakeValid

可用性:1.5.0

[Note]

在1.5.3之前,此函数返回未更改的原子输入,无论类型如何。在1.5.3中,不匹配的单个几何图形返回空结果。在2.0.0中,不匹配的单一几何图形返回请求类型的空结果。

示例

提取最高维度类型:

SELECT ST_AsText(ST_CollectionExtract(
        'GEOMETRYCOLLECTION( POINT(0 0), LINESTRING(1 1, 2 2) )'));
    st_astext
    ---------------
    MULTILINESTRING((1 1, 2 2))

提取点(类型1==点):

SELECT ST_AsText(ST_CollectionExtract(
        'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)))',
        1 ));
    st_astext
    ---------------
    MULTIPOINT((0 0))

提取线(类型2==线条):

SELECT ST_AsText(ST_CollectionExtract(
        'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1)),LINESTRING(2 2, 3 3))',
        2 ));
    st_astext
    ---------------
    MULTILINESTRING((0 0, 1 1), (2 2, 3 3))

另请参阅

ST_CollectionHomogenize, ST_Multi, ST_IsValid, ST_MakeValid