ST_CollectionExtract — 给定几何图形集合,返回仅包含指定类型的元素的多个几何图形。
geometry ST_CollectionExtract(
geometry collection)
;
geometry ST_CollectionExtract(
geometry collection, integer type)
;
给定几何图形集合,返回同构多几何图形。
如果 类型
未指定,则返回仅包含最高维度的几何图形的多重几何图形。因此,多边形比线更受欢迎,而线比点更受欢迎。
如果 类型
则返回仅包含该类型的多重几何图形。如果没有正确类型的子几何图形,则返回空几何图形。仅支持点、线和面。类型编号为:
1==点
2==线条
3==多边形
对于原子几何体输入,如果输入类型与请求的类型匹配,几何体将原封不动地恢复。否则,结果是指定类型的空几何图形。如果需要,可以使用将这些几何转换为多个几何 ST_Multi 。
![]() | |
不检查多重多边形结果的有效性。如果多边形分量相邻或重叠,则结果将无效。(例如,将此函数应用于 ST_Split 结果。)这种情况可以通过以下方式进行核实 ST_IsValid 并用其修复 ST_MakeValid 。 |
可用性:1.5.0
![]() | |
在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))