ST_CollectionExtract — 給定一個幾何集合,回傳一個僅包含指定類型元素的多重幾何。
geometry ST_CollectionExtract(
geometry collection)
;
geometry ST_CollectionExtract(
geometry collection, integer type)
;
給定一個幾何集合,回傳一個同質的多重幾何。
如果沒有指定 type
,則回傳一個僅包含最高維度幾何的多重幾何。因此,多邊形優先於線,線優先於點。
如果指定了 type
,則回傳一個僅包含該類型的多重幾何。如果沒有符合類型的子幾何,則會回傳一個空的幾何。僅支援點、線和多邊形。類型數字如下:
1 == POINT (點)
2 == LINESTRING (線字串)
3 == POLYGON (多邊形)
對於原子幾何輸入,如果輸入類型與請求的類型匹配,則幾何會保持不變。否則,結果是指定類型的空幾何。如果需要,可以使用 ST_Multi 將它們轉換為多重幾何。
![]() |
|
多重多邊形結果不會檢查有效性。如果多邊形元件是相鄰或重疊的,則結果將會是無效的。(例如,當對 ST_Split 結果應用此函數時,可能會發生這種情況。)可以使用 ST_IsValid 檢查這種情況,並使用 ST_MakeValid 進行修復。 |
可用性:1.5.0
![]() |
|
在 1.5.3 之前,此函數會回傳未變更的原子輸入,無論類型如何。在 1.5.3 中,不匹配的單一幾何會回傳 NULL 結果。在 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 == POINT)
SELECT ST_AsText(ST_CollectionExtract( 'GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0)))', 1 )); st_astext --------------- MULTIPOINT((0 0))
提取線(類型 2 == LINESTRING)
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))