定義
ST_GeomFromCollection は一連の st_geometry 行を返します。各行はジオメトリと整数で構成されています。整数はセット内のジオメトリの位置を表します。
ST_GeomFromCollection 関数を使用して、マルチパート ジオメトリ内の個々のジオメトリにアクセスします。入力ジオメトリがコレクションまたはマルチパート ジオメトリ (ST_MultiLineString、ST_MultiPoint、ST_MultiPolygon など) の場合、ST_GeomFromCollection はコレクションの各コンポーネントのレコードを返し、パスはコレクション内のコンポーネントの位置を表します。
シンプル ジオメトリ (ST_Point、ST_LineString、ST_Polygon など) で ST_GeomFromCollection を使用した場合は、ジオメトリは 1 つだけなので、1 つのレコードと空のパスが返されます。
構文
sde.st_geomfromcollection (shape sde.st_geometry)
ジオメトリのみを返す場合は、(sde.st_geomfromcollection (shape)).st_geo を使用します。
ジオメトリの位置のみを返す場合は、(sde.st_geomfromcollection (shape)).path[1] を使用します。
戻り値のタイプ
ST_Geometry セット
例
この例では、1 つのフィーチャと 4 パートのシェープを含むマルチライン フィーチャクラス (ghanasharktracks) を作成します。
--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
)
);
フィールドにデータが含まれていることを確認するには、テーブルを検索します。シェープ フィールド上で ST_AsText を直接使用して、シェープの座標をテキスト表示します。マルチラインストリングのテキスト記述が返されます。
--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))"
各ラインストリング ジオメトリを個別に返すには、ST_GeomFromCollection 関数を使用します。ジオメトリをテキスト表示するために、この例では、ST_AsText 関数と 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