Definition
"ST_GeomFromCollection" gibt einen Satz an "st_geometry"-Zeilen zurück. Jede Zeile besteht aus einer Geometrie und einer ganzen Zahl. Die ganze Zahl gibt die Position der Geometrie im Satz wieder.
Mit der Funktion "ST_GeomFromCollection" können Sie auf jede einzelne Geometrie in einer Multipart-Geometrie zugreifen. Wenn die Eingabe-Geometrie eine Sammlung oder eine Multipart-Geometrie ist (z. B. ST_MultiLineString, ST_MultiPoint, ST_MultiPolygon), gibt "ST_GeomFromCollection" einen Datensatz für jede Sammlungskomponente zurück, und der Pfad gibt die Position der Komponente in der Sammlung wieder.
Wenn Sie "ST_GeomFromCollection" bei einer einfachen Geometrie verwenden (z. B. ST_Point, ST_LineString, ST_Polygon), wird ein einfacher Datensatz mit einem leeren Pfad zurückgegeben, da es nur eine Geometrie gibt.
Syntax
sde.st_geomfromcollection (shape sde.st_geometry)
Verwenden Sie (sde.st_geomfromcollection (shape)).st_geo, um nur die Geometrie zurückgeben zu lassen.
Verwenden Sie (sde.st_geomfromcollection (shape)).path[1], um nur die Position der Geometrie zurückgeben zu lassen.
Rückgabetyp
ST_Geometry Satz
Beispiel
Erstellen Sie in diesem Beispiel eine Multiline-Feature-Class (ghanasharktracks) mit einem Feature, das ein vierteiliges Shape umfasst.
--Create the feature class.
CREATE TABLE ghanasharktracks (objectid integer, shape sde.st_geometry);
--Insert a multiline with four parts using SRID 4326.
INSERT INTO ghanasharktracks VALUES
(1,
sde.st_geometry('MULTILINESTRING Z (( 1 1 0, 1 6 0),(1 3 0, 3 3 0),(3 1 0, 3 3 0), (4 1 0, 4 6 0))',
4326
)
);
Um sicherzustellen, dass das Feld Daten enthält, führen Sie eine Abfrage für die Tabelle durch. Verwenden Sie "ST_AsText" direkt für das Shape-Feld, um die Shape-Koordinaten als Text anzeigen zu lassen. Dabei wird die Textbeschreibung des Multilinestrings zurückgegeben.
--View inserted feature. SELECT gst_orig.objectid, sde.st_astext(gst_orig.shape) shapetext FROM ghanasharktracks gst_orig;
shapetext
-------------------------------
"MULTILINESTRING Z (( 1.00000000 1.00000000 0.00000000, 1.00000000 6.00000000 0.00000000),(1.00000000 3.00000000 0.00000000, 3.00000000 3.00000000 0.00000000),(3.00000000 1.00000000 0.00000000, 3.00000000 3.00000000 0.00000000), (4.00000000 1.00000000 0.00000000, 4.00000000 6.00000000 0.00000000))"
Um jede Linestring-Geometrie einzeln zurückgeben zu lassen, müssen Sie die Funktion "ST_GeomFromCollection" verwenden. Um die Geometrie als Text anzuzeigen, wird in diesem Beispiel die Funktion "ST_AsText" mit der Funktion "ST_GeomFromCollection" verwendet.
--Return each linestring in the multilinestring
SELECT sde.st_astext((sde.st_geomfromcollection(gst.shape)).st_geo) shapetext, ((sde.st_geomfromcollection(gst.shape)).path[1]) path FROM ghanasharktracks gst;
shapetext path
-----------------------------------------------------------------------------------------------------------
"LINESTRING Z ( 1.00000000 1.00000000 0.00000000, 1.00000000 6.00000000 0.00000000)" 1
"LINESTRING Z ( 1.00000000 3.00000000 0.00000000, 3.00000000 3.00000000 0.00000000)" 2
"LINESTRING Z ( 3.00000000 1.00000000 0.00000000, 3.00000000 3.00000000 0.00000000)" 3
"LINESTRING Z ( 4.00000000 1.00000000 0.00000000, 4.00000000 6.00000000 0.00000000)" 4