Definición
ST_GeomFromCollection devuelve un conjunto de filas de st_geometry. Cada fila consta de una geometría y un entero. El entero representa la posición de la geometría en el conjunto.
Use la función ST_GeomFromCollection para acceder a cada geometría individual de una geometría multiparte. Si la geometría de entrada es una colección o una geometría multiparte (por ejemplo, ST_MultiLineString, ST_MultiPoint, ST_MultiPolygon), ST_GeomFromCollection devuelve un registro para cada uno de los componentes de la colección y la ruta expresa la posición del componente en la colección.
Si usa ST_GeomFromCollection con una geometría simple (por ejemplo, ST_Point, ST_LineString, ST_Polygon), se devuelve un solo registro con una ruta vacía, dado que solo existe una geometría.
Sintaxis
sde.st_geomfromcollection (shape sde.st_geometry)
Para devolver solo la geometría, use (sde.st_geomfromcollection (shape)).st_geo.
Para devolver solo la posición de la geometría, use (sde.st_geomfromcollection (shape)).path[1].
Tipo de devolución
Conjunto ST_Geometry
Ejemplo
En este ejemplo, cree una clase de entidad multilínea (ghanasharktracks) que contiene una sola entidad con una forma de cuatro partes.
--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
)
);
Para confirmar que el campo contiene datos, ejecute una consulta con la tabla. Use ST_AsText directamente en el campo de forma para ver las coordenadas de la forma como texto. Observe que se devuelve la descripción de texto de la cadena de texto multilínea.
--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))"
Para devolver individualmente cada geometría de la cadena de texto de línea, use la función ST_GeomFromCollection. Para ver la geometría como texto, este ejemplo usa la función ST_AsText con la función ST_GeomFromCollection.
--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