ST_Collect — Erzeugt eine GeometryCollection oder Multi*-Geometrie aus einer Reihe von Geometrien.
geometry ST_Collect(geometry g1, geometry g2);
geometry ST_Collect(geometry[] g1_array);
geometry ST_Collect(geometry set g1field);
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.
|
|
|
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). |
|
|
|
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.
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))
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))
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