Name

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

Übersicht

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.

[Warnung]

ST_Collect does not dissolve boundaries or resolve overlaps. Collecting overlapping polygons can produce an invalid MultiPolygon. If the result must be a valid polygonal geometry with overlaps merged, use ST_Union instead. ST_Union also splits linestrings at intersections and may return a single geometry after dissolving boundaries.

If any input geometry is a collection (Multi* or GeometryCollection), ST_Collect returns a GeometryCollection, since that is the only type which can contain nested collections. To prevent this, use ST_Dump in a subquery to expand input collections to their atomic elements (see example below).

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

Two-input variant.

Sammeln Sie 2D-Punkte.

Code
SELECT ST_Collect(
    'POINT(1 2)',
    'POINT(-2 3)' );
Ausgabe von Rastern
MULTIPOINT((1 2),(-2 3))
Figure
Geometry figure for visual-st-collect-01

Sammeln Sie 3D-Punkte.

Code
SELECT ST_Collect(
        'POINT(1 2 3)',
        'POINT(1 2 4)' );
Ausgabe von Rastern
MULTIPOINT(1 2 3,1 2 4)
Figure
Geometry figure for visual-st-collect-02

Kurven sammeln.

Code
SELECT ST_Collect(
        'CIRCULARSTRING(220268 150415,220227 150505,220227 150406)',
        'CIRCULARSTRING(220227 150406,2220227 150407,220227 150406)');
Ausgabe von Rastern
MULTICURVE(CIRCULARSTRING(220268 150415,220227 150505,220227 150406),
CIRCULARSTRING(220227 150406,2220227 150407,220227 150406))
Figure
Geometry figure for visual-st-collect-03

Array variant.

Verwendung eines Array-Konstruktors für eine Subquery.

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

Verwendung eines Array-Konstruktors für Werte.

Code
SELECT ST_Collect(
        ARRAY[ 'LINESTRING(1 2,3 4)'::geometry,
            'LINESTRING(3 4,4 5)'::geometry ] ) As wktcollect;
Ausgabe von Rastern
MULTILINESTRING((1 2,3 4),(3 4,4 5))
Figure
Geometry figure for visual-st-collect-04

Aggregate variant.

Erstellen mehrerer Sammlungen durch Gruppierung von Geometrien in einer Tabelle.

Code
SELECT stusps, ST_Collect(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