名称

ST_CollectionHomogenize — 返回几何集合的最简单表示。

概要

geometry ST_CollectionHomogenize(geometry collection);

描述

给定一个几何集合,返回其内容的“最简单”表示。

  • 同构(均匀)集合将作为适当的多几何体返回。

  • 异构(混合)集合将被扁平化为单个 GeometryCollection。

  • 包含单个原子元素的集合将作为该元素返回。

  • 原子几何体将保持不变。如果需要,可以使用 ST_Multi 将其转换为多几何体。

[Warning]

此函数不保证结果有效。特别是,包含相邻或重叠多边形的集合将创建一个无效的多边形。可以使用 ST_IsValid 检查这种情况,并使用 ST_MakeValid 进行修复。

可用性:2.0.0

示例

单元素集合转换为原子几何体

  SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0))'));

	st_astext
	------------
	POINT(0 0)

嵌套单元素集合转换为原子几何体

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(MULTIPOINT((0 0)))'));

	st_astext
	------------
	POINT(0 0)

集合转换为多几何体

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0),POINT(1 1))'));

	st_astext
	---------------------
	MULTIPOINT((0 0),(1 1))

嵌套异构集合扁平化为 GeometryCollection

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION(POINT(0 0), GEOMETRYCOLLECTION( LINESTRING(1 1, 2 2)))'));

	st_astext
	---------------------
	GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1,2 2))

多边形集合转换为(无效)多边形

SELECT ST_AsText(ST_CollectionHomogenize('GEOMETRYCOLLECTION (POLYGON ((10 50, 50 50, 50 10, 10 10, 10 50)), POLYGON ((90 50, 90 10, 50 10, 50 50, 90 50)))'));

	st_astext
	---------------------
	MULTIPOLYGON(((10 50,50 50,50 10,10 10,10 50)),((90 50,90 10,50 10,50 50,90 50)))

另请参阅

ST_CollectionExtractST_MultiST_IsValidST_MakeValid