ジオメトリを最低レベルのコンポーネントジオメトリに分解します。
st_geometry_dump ( geometry [, options ] )
geometry 分解するジオメトリ値。
options セミコロンで区切ったパラメーターと値の VARCHAR(255) 文字列。プロシージャーの出力を設定するために使用できます。
次の表は、指定できるパラメーターのリストです。
パラメーター | デフォルト値 | 指定可能な値 | 説明 |
---|---|---|---|
Format | Original | Original、Internal、または Mixed | ジオメトリを返すフォーマット。Original を指定すると、ジオメトリは元のフォーマットで返されます。Internal を指定すると、ジオメトリは正規化フォーマットで返されます。Mixed を指定すると、使用可能な格納フォーマットがどのようなものであっても、1 つのフォーマットにつき 1 ローが返されます。 |
ExpandPoints | Yes | Yes、No | デフォルトでは、ポイント (ST_LineString や ST_MultiPoint など) を含むジオメトリを分解すると、st_geometry_dump システムプロシージャーは構成ポイントを別々のローに出力します。これらの余分なローが生成されないようにするには、ExpandPoints を No に設定します。 |
MaxDepth | -1 | -1、0 以上の任意の数値 | デフォルトでは、st_geometry_dump システムプロシージャーは、リーフオブジェクトに達するまで、オブジェクト階層の分解を続けます。MaxDepth パラメーターを設定して、階層内でのジオメトリの分解レベル数を制限できます。値を 0 に設定すると、ルートジオメトリのみが返されます。値を 1 に設定すると、ジオメトリとその直近の子が返されます。それ以降についても同様です。 |
SetGeom | Yes | Yes、No | st_geometry_dump システムプロシージャーは、元の型階層内のオブジェクトに関連付けられている ST_Geometry のカラムを返します。このカラムが必要でない場合は、SetGeom パラメーターを No に設定して、プロシージャーの実行時間と出力サイズを減少させることができます。 |
Validate | Basic | None、Basic、Full | デフォルトでは、st_geometry_dump システムプロシージャーは、ジオメトリのロード時にデータベースサーバーで使用される検証ルールを適用し、ロー内のオブジェクトがこれらのルールに一致する場合は、結果セットの Valid カラムを 1 に設定します。Validate パラメーターを None に設定すると、このチェックが無効になり、Full に設定すると、ST_IsValid メソッドによって実行される追加のチェックも適用されます。Full でのチェックは実行に時間がかかります。 |
次の表は、st_geometry_dump プロシージャーによって返される結果を示します。
カラム | データ型 | 説明 |
---|---|---|
id | UNSIGNED BIGINT | 結果内のこのローのユニークな ID。 |
parent_id | UNSIGNED BIGINT | このオブジェクトの直近の親の ID。 |
depth | INT | ルートオブジェクトから、このローに関連付けられているオブジェクトまでの深さ。 |
format | VARCHAR(128) | ジオメトリが元の表現 (Original) であるか、または正規化表現 (Internal) であるか。 |
valid | BIT | ジオメトリが有効 (1) かどうか (Validate オプションで指定したチェックレベルに基づく)。 |
geom_type | VARCHAR(128) | ジオメトリの型 (ST_GeometryType によって返される)。 |
geom | ST_Geometry | ジオメトリの仕様。SetGeom パラメーターを No に設定すると、結果セットにジオメトリの仕様は返されません。 |
xmin | DOUBLE | ジオメトリの x の最小値。 |
xmax | DOUBLE | ジオメトリの x の最大値。 |
ymin | DOUBLE | ジオメトリの y の最小値。 |
ymax | DOUBLE | ジオメトリの y の最大値。 |
zmin | DOUBLE | ジオメトリの z の最小値。 |
zmax | DOUBLE | ジオメトリの z の最大値。 |
mmin | DOUBLE | ジオメトリの m の最小値。 |
mmax | DOUBLE | ジオメトリの m の最大値。 |
details | LONG VARCHAR | ジオメトリに関する追加の詳細 (オブジェクトが有効でない理由に関する追加情報など)。 |
st_geometry_dump システムプロシージャーは、ジオメトリ階層を分解するときに、階層内のオブジェクト (ルートオブジェクトを含む) ごとに 1 つのローを使用します。階層内の各ジオメトリを検証して、各ジオメトリが有効かどうか、有効でない場合はその理由を調査できます。
st_geometry_dump システムプロシージャーの一部の機能は、ST_GeometryN や ST_PointN などの型固有のメソッドを使用して照合できます。
st_geometry_dump システムプロシージャーを使用して、無効なジオメトリを修正できます。
なし。
なし。
次の例では、多角形 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))'
をそのコンポーネントジオメトリに分解します。
SELECT * FROM st_geometry_dump( 'Polygon ((0 0, 3 0, 3 3, 0 3, 0 0))', 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Internal | 1 | ST_Polygon | Polygon ((0 0, 3 0, 3 3, 0 3, 0 0)) |
0 | 3 | 0 | 3 | ... |
2 | 1 | 1 | Internal | 1 | ST_LineString | LineString (0 0, 3 0, 3 3, 0 3, 0 0) |
0 | 3 | 0 | 3 | ... |
3 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
4 | 2 | 2 | Internal | 1 | ST_Point | Point (3 0) |
3 | 3 | 0 | 0 | ... |
5 | 2 | 2 | Internal | 1 | ST_Point | Point (3 3) |
3 | 3 | 3 | 3 | ... |
6 | 2 | 2 | Internal | 1 | ST_Point | Point (0 3) |
0 | 0 | 3 | 3 | ... |
7 | 2 | 2 | Internal | 1 | ST_Point | Point (0 0) |
0 | 0 | 0 | 0 | ... |
次の例は、st_geometry_dump システムプロシージャーを使用して、ジオメトリ内の無効なポイントを見つける方法を示します。この例では、LineString に経度 1200 のポイントが含まれています。このため、結果ではそのポイントと LineString の両方が無効 (valid=0) であるとレポートされています。
SET TEMPORARY OPTION st_geometry_on_invalid='Ignore'; CREATE OR REPLACE VARIABLE @geo ST_Geometry; SET @geo = new ST_LineString( 'LineString(1200 2, 80 10)', 4326 ); SELECT * FROM dbo.st_geometry_dump( @geo, 'SetGeom=No' ); |
id | parent_id | depth | format | valid | geom_type | geom | xmin | xmax | ymin | ymax | ... | details |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | 0 | Original | 0 | ST_LineString | (NULL) | 80 | 1,200 | 2 | 10 | ... | Value 1200.000000 out of range for coordinate longitude (SRS allows -180.000000 to 180.000000). |
2 | 1 | 1 | Original | 0 | ST_LineString | (NULL) | 1,200 | 1,200 | 2 | 2 | ... | Value 1200.000000 out of range for coordinate longitude (SRS allows -180.000000 to 180.000000). |
3 | 1 | 1 | Original | 1 | ST_Point | (NULL) | 80 | 80 | 10 | 10 | ... |
無効なデータが識別されたら、st_geometry_dump システムプロシージャーを他の空間メソッドとともに使用して、無効な要素を修正して有効なジオメトリを組み立てることができます。次の例は、経度 1200 の無効なポイントを経度 120.0 に修正する方法を示します。
SELECT ST_LineString::ST_LineStringAggr( new ST_Point( IF xmax = 1200 then 120.0 ELSE xmax ENDIF, ymax, 4326 ) ORDER BY id ) FROM dbo.st_geometry_dump( @geo ) WHERE geom_type='ST_Point'; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |