Name

ST_Collect — Erzeugt eine GeometryCollection oder Multi*-Geometrie aus einer Reihe von Geometrien.

Synopsis

geometry ST_Collect(geometry g1, geometry g2);

geometry ST_Collect(geometry[] g1_array);

geometry ST_Collect(geometry set g1field);

Beschreibung

Sammelt Geometrien in einer Geometriesammlung. Das Ergebnis ist entweder ein Multi* oder eine GeometryCollection, je nachdem, ob die Eingabegeometrien denselben oder einen unterschiedlichen Typ haben (homogen oder heterogen). Die Eingangsgeometrien bleiben in der Sammlung unverändert.

Variante 1: akzeptiert zwei Eingabegeometrien

Variante 2: akzeptiert eine Reihe von Geometrien

Variante 3: Aggregatfunktion, die ein Rowset von Geometrien akzeptiert.

[Note]

Handelt es sich bei einer der Eingabegeometrien um Sammlungen (Multi* oder GeometryCollection), gibt ST_Collect eine GeometryCollection zurück (da dies der einzige Typ ist, der verschachtelte Sammlungen enthalten kann). Um dies zu verhindern, verwenden Sie ST_Dump in einer Unterabfrage, um die Eingabekollektionen in ihre atomaren Elemente zu zerlegen (siehe Beispiel unten).

[Note]

ST_Collect und ST_Union scheinen ähnlich zu sein, funktionieren aber in Wirklichkeit ganz anders. ST_Collect fasst Geometrien in einer Sammlung zusammen, ohne sie in irgendeiner Weise zu verändern. ST_Union führt Geometrien dort zusammen, wo sie sich überschneiden, und teilt Linienstränge an Schnittpunkten. Es kann einzelne Geometrien zurückgeben, wenn es Grenzen auflöst.

Verfügbarkeit: 1.4.0 - ST_MakeLine(geomarray) wurde eingeführt. ST_MakeLine Aggregatfunktion wurde verbessert, um mehr Punkte schneller handhaben zu können.

Diese Funktion unterstützt 3d und lässt den Z-Index nicht fallen.

Diese Methode unterstützt kreisförmige Strings und Kurven.

Beispiele - Verwendung von XLink

Sammeln Sie 2D-Punkte.

SELECT ST_AsText( ST_Collect( ST_GeomFromText('POINT(1 2)'),
        ST_GeomFromText('POINT(-2 3)') ));

st_astext
----------
MULTIPOINT((1 2),(-2 3))

Sammeln Sie 3D-Punkte.

SELECT ST_AsEWKT( ST_Collect( ST_GeomFromEWKT('POINT(1 2 3)'),
                ST_GeomFromEWKT('POINT(1 2 4)') ) );

                st_asewkt
-------------------------
 MULTIPOINT(1 2 3,1 2 4)
 

Kurven sammeln.

SELECT ST_AsText( ST_Collect( 'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
                'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)'));

                st_astext
------------------------------------------------------------------------------------
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
 CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))

Beispiele: Verwendung der Feld-Version

Verwendung eines Array-Konstruktors für eine Subquery.

SELECT ST_Collect( ARRAY( SELECT geom FROM sometable ) );

Verwendung eines Array-Konstruktors für Werte.

SELECT ST_AsText(  ST_Collect(
                ARRAY[ ST_GeomFromText('LINESTRING(1 2, 3 4)'),
                        ST_GeomFromText('LINESTRING(3 4, 4 5)') ] )) As wktcollect;

--wkt collect --
MULTILINESTRING((1 2,3 4),(3 4,4 5))

Beispiele: Spatiale Aggregatversion

Erstellen mehrerer Sammlungen durch Gruppierung von Geometrien in einer Tabelle.

SELECT stusps, ST_Collect(f.geom) as geom
         FROM (SELECT stusps, (ST_Dump(geom)).geom As geom
                                FROM
                                somestatetable ) As f
        GROUP BY stusps

Siehe auch

ST_Dump, ST_AsBinary