名稱

ST_CollectionExtract — 給定一個幾何集合,回傳一個僅包含指定類型元素的多重幾何。

概要

geometry ST_CollectionExtract(geometry collection);

geometry ST_CollectionExtract(geometry collection, integer type);

描述

給定一個幾何集合,回傳一個同質的多重幾何。

如果沒有指定 type,則回傳一個僅包含最高維度幾何的多重幾何。因此,多邊形優先於線,線優先於點。

如果指定了 type,則回傳一個僅包含該類型的多重幾何。如果沒有符合類型的子幾何,則會回傳一個空的幾何。僅支援點、線和多邊形。類型數字如下:

  • 1 == POINT (點)

  • 2 == LINESTRING (線字串)

  • 3 == POLYGON (多邊形)

對於原子幾何輸入,如果輸入類型與請求的類型匹配,則幾何會保持不變。否則,結果是指定類型的空幾何。如果需要,可以使用 ST_Multi 將它們轉換為多重幾何。

[Warning]

多重多邊形結果不會檢查有效性。如果多邊形元件是相鄰或重疊的,則結果將會是無效的。(例如,當對 ST_Split 結果應用此函數時,可能會發生這種情況。)可以使用 ST_IsValid 檢查這種情況,並使用 ST_MakeValid 進行修復。

可用性:1.5.0

[Note]

在 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))