Name

ST_MakeLine — Erzeugt einen Linienzug aus einer Punkt-, Mehrfachpunkt- oder Liniengeometrie.

Übersicht

geometry ST_MakeLine(geometry geom1, geometry geom2);

geometry ST_MakeLine(geometry[] geoms_array);

geometry ST_MakeLine(geometry set geoms);

Beschreibung

Erzeugt einen LineString, der die Punkte von Point-, MultiPoint- oder LineString-Geometrien enthält. Andere Geometrietypen verursachen einen Fehler.

Variante 1: akzeptiert zwei Eingabegeometrien

Variante 2: akzeptiert eine Reihe von Geometrien

Variante 3: Aggregatfunktion, die ein Rowset von Geometrien akzeptiert. Um die Reihenfolge der Eingabegeometrien sicherzustellen, verwenden Sie ORDER BY im Funktionsaufruf oder eine Unterabfrage mit einer ORDER BY Klausel.

Repeated nodes at the beginning of input LineStrings are collapsed to a single point. Repeated points in Point and MultiPoint inputs are not collapsed. Components of MultiLineString are handled in the order they appear in the collection. ST_RemoveRepeatedPoints can be used to collapse repeated points from the output LineString.

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

Availability: 3.7.0 - Support for MultiLineString input elements was introduced

Verfügbarkeit: Mit 2.3.0 wurde die Unterstützung zur Eingabe von MultiPoint Elementen eingeführt

Verfügbarkeit: 2.0.0 - Unterstützung zur Eingabe von LineString Elementen eingeführt

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

Beispiele

Two-input variant.

Erstellen Sie eine Linie, die aus zwei Punkten besteht.

Code
SELECT ST_MakeLine(ST_Point(1, 2), ST_Point(3, 4));
Ausgabe von Rastern
LINESTRING(1 2,3 4)
Figure
Geometry figure for visual-st-makeline-01

Erzeugt eine BOX3D, die durch 2 geometrische 3D-Punkte definiert wird.

Code
SELECT ST_MakeLine(ST_MakePoint(1, 2, 3), ST_MakePoint(3, 4, 5));
Ausgabe von Rastern
LINESTRING(1 2 3,3 4 5)
Figure
Geometry figure for visual-st-makeline-02

Erzeugt einen Linienzug aus einer Punkt-, Mehrfachpunkt- oder Liniengeometrie.

Code
SELECT ST_MakeLine('LINESTRING(0 0,1 1)', 'LINESTRING(2 2,3 3)');
Ausgabe von Rastern
LINESTRING(0 0,1 1,2 2,3 3)
Figure
Geometry figure for visual-st-makeline-03

Array variant.

Erstellen Sie eine Zeile aus einem Array, das durch eine Unterabfrage mit Bestellung gebildet wird.

Code
SELECT ST_MakeLine(ARRAY(SELECT ST_Centroid(geom) FROM visit_locations ORDER BY visit_time));

Erstellen einer 3D-Linie aus einem Array von 3D-Punkten

Code
SELECT ST_MakeLine(ARRAY[ST_MakePoint(1, 2, 3), ST_MakePoint(3, 4, 5), ST_MakePoint(6, 6, 6)]);
Ausgabe von Rastern
LINESTRING(1 2 3,3 4 5,6 6 6)
Figure
Geometry figure for visual-st-makeline-04

Aggregate variant.

Diese Beispiel nimmt eine Abfolge von GPS Punkten entgegen und erzeugt einen Datensatz für jeden GPS Pfad, wobei das Geometriefeld ein Linienzug ist, welcher in der Reihenfolge der Aufnahmeroute aus den GPS Punkten zusammengesetzt wird.

Die Verwendung des Aggregats ORDER BY liefert einen korrekt geordneten LineString.

Code
SELECT gps.track_id, ST_MakeLine(gps.geom ORDER BY gps_time) AS geom
FROM gps_points AS gps
GROUP BY gps.track_id;

When ordering within the aggregate is not possible, ordering in a subquery can be used. However, sometimes the query plan may not respect the order of the subquery.

Code
SELECT gps.track_id, ST_MakeLine(gps.geom) AS geom
FROM (
  SELECT track_id, gps_time, geom
  FROM gps_points
  ORDER BY track_id, gps_time
) AS gps
GROUP BY gps.track_id;