Name

ST_CollectionHomogenize — Returnerar den enklaste representationen av en geometrisamling.

Synopsis

geometry ST_CollectionHomogenize(geometry collection);

Beskrivning

Ger en geometrisamling och returnerar den "enklaste" representationen av innehållet.

  • Homogena (enhetliga) samlingar returneras som lämplig multigeometri.

  • Heterogena (blandade) samlingar plattas ut till en enda GeometryCollection.

  • Samlingar som innehåller ett enda atomärt element returneras som det elementet.

  • Atomgeometrier returneras oförändrade. Om så krävs kan dessa konverteras till en multigeometri med hjälp av ST_Multi.

[Warning]

Denna funktion garanterar inte att resultatet är giltigt. I synnerhet kommer en samling som innehåller intilliggande eller överlappande polygoner att skapa en ogiltig MultiPolygon. Denna situation kan kontrolleras med ST_IsValid och repareras med ST_MakeValid.

Tillgänglighet: 2.0.0

Exempel

Samling med ett enda element omvandlad till en atomär geometri

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

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

Nästlad samling av enskilda element konverterad till en atomär geometri:

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

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

Samling omvandlad till en multigeometri:

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

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

Nästlad heterogen samling som plattats ut till en 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))

Samling av polygoner som konverterats till en (ogiltig) MultiPolygon:

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