Определение
ST_GeomFromCollection возвращает набор строк st_geometry. В каждой строке находится геометрия и целочисленное значение. Значение соответствует положению геометрии в наборе.
Используйте функцию ST_GeomFromCollection для доступа к отдельным геометрическим формам в составной геометрии. Когда входная геометрия является группой или составной геометрией (например, ST_MultiLineString, ST_MultiPoint, ST_MultiPolygon), ST_GeomFromCollection возвращает строку для каждого компонента группы, а path указывает положение компонента в группе.
Если вы используете ST_GeomFromCollection с простой геометрией (например, ST_Point, ST_LineString, ST_Polygon), возвращается одна запись с пустым значением path, поскольку геометрия только одна.
Синтаксис
sde.st_geomfromcollection (shape sde.st_geometry)
Чтобы вернуть только геометрию, используйте (sde.st_geomfromcollection (shape)).st_geo.
Чтобы вернуть только положение геометрии, используйте (sde.st_geomfromcollection (shape)).path[1].
Тип возвращаемого значения
ST_Geometry set
Пример:
In this example, create a multiline feature class (ghanasharktracks) containing a single feature with a four-part shape.
--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
)
);
To confirm the field contains data, query the table. Use ST_AsText directly on the shape field to see the shape coordinates as text. Note that the text description of the multilinestring is returned.
--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))"
To return each linestring geometry individually, use the ST_GeomFromCollection function. To see the geometry as text, this example uses the ST_AsText function with the ST_GeomFromCollection function.
--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