書式
SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT( geom_table IN VARCHAR2, geom_column IN VARCHAR2, result_table IN VARCHAR2, commit_interval IN NUMBER DEFAULT -1, conditional IN VARCHAR2 DEFAULT 'TRUE' , flag10g IN VARCHAR2 DEFAULT 'FALSE', geom_schema IN VARCHAR2 DEFAULT NULL);
説明
格納済のジオメトリがジオメトリ・オブジェクトに対して定義された規則に従っているかどうかを判断するためにジオメトリ列を検査し、無効なジオメトリに関するコンテキスト情報を戻します。
パラメータ
空間ジオメトリ表を指定します。geom_schema
パラメータが指定されていないかぎり、schema.table形式で指定できます(たとえばscott.shapes
など)。
検査するジオメトリ・オブジェクト列を指定します。
検査結果を格納する結果表を指定します。無効なジオメトリの場合、result_table
に行が追加されます。無効なジオメトリが存在しない場合、結果がDONEである1つ以上(commit_interval
値によって異なる)の行が追加されます。
Spatial and Graphが内部コミット操作を実行し、結果がDONEである行をresult_table
に書き込む(最後のコミット後に無効なジオメトリの行が書き込まれなかった場合)前に検査するジオメトリの数を指定します。commit_interval
を指定しない場合、検査時には内部コミット操作は実行されません。
commit_interval
オプションは、検査の実行中にresult_table
の内容を参照する必要がある場合に有効です。
条件付きのフラグを指定します(3次元の複合表面または複合ソリッドにのみ適用)。文字列値がTRUE
(デフォルト)である場合、2つの外部の輪が同じ平面にあり、エッジを共有していると、検証は行われなくなります。文字列値がFALSE
である場合、2つの外部の輪が同じ平面にあり、エッジを共有していても検証を行います。
Oracle Database 10g互換性フラグ。文字列値がTRUE
である場合、2次元ジオメトリに固有の検証のみが実行され、3次元固有の検証は実行されません。文字列値がFALSE
(デフォルト)である場合は、ジオメトリに関連するすべての検証が実行されます。(flag10g
パラメータの詳細は、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションの「使用上の注意」を参照してください。)
geom_table
表のスキーマを指定します(現在のスキーマと異なる場合)。geom_schema
が指定されている場合、geom_table
パラメータはschema.table形式で指定できません。
使用上の注意
データで空間操作を実行する前に、すべてのジオメトリ・データを検査し、検査エラーがあれば修正する必要があります(「空間データのロードおよび検査の推奨手順」を参照)。
このプロシージャは、結果表に検査の結果をロードします。
このプロシージャをコールする前に、空の結果表(result_table
パラメータに指定する表)を作成する必要があります。この結果表の形式は、(sdo_rowid ROWID, result VARCHAR2(2000))です。result_table
が空の場合は、行が追加される前にプロシージャによって自動的に切り捨てられます。
結果表には、それぞれの無効なジオメトリに1つの行が含まれます。ジオメトリが有効な場合、次の場合を除き、行は書き込まれません。
commit_interval
が指定されていない場合(またはcommit_interval
値がレイヤーのジオメトリの数より大きい場合)、無効なジオメトリが検出されないと、RESULT値がDONEである単一行が書き込まれます。
commit_interval
が指定されている場合、ある内部コミットとその直前の内部コミット(または初回の内部コミットの検査の開始時)との間に無効なジオメトリが検出されないと、最後に検査されたジオメトリの主キーおよびRESULT値がDONEである単一行が書き込まれます。(最後の内部コミット操作後に無効なジオメトリが存在しない場合、結果がDONEである前の行がこの行に置換されます。)
無効なジオメトリの各行のSDO_ROWID列には、無効なジオメトリを含む行のROWID値が含まれます。また、RESULT列にはOracleエラー・メッセージ番号およびエラーのコンテキスト(ジオメトリが無効になった原因の座標、エッジまたは輪)が含まれます。エラー・メッセージを検索すると、失敗の原因の詳細を参照できます。
このプロシージャは、レイヤー(geom_column
)の各ジオメトリについて次のことを確認します。
SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションによって実行されるすべてのジオメトリ・タイプの一貫性チェックおよびジオメトリの一貫性チェック(SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXTファンクションの「使用上の注意」を参照)
ジオメトリのSRID値(座標系)がUSER_SDO_GEOM_METADATAビュー(「ジオメトリのメタデータ・ビュー」を参照)のDIMINFO列で指定した値と同じか
例
次の例では、COLA_MARKETS表のSHAPE列に格納されているジオメトリ・オブジェクトを検査します。この例では、結果表の作成も含めて示しています。検査の実行前に、意図的に無効な状態で作成されているジオメトリが表に挿入されたと想定します。
-- Is a layer valid? (First, create the result table.) CREATE TABLE val_results (sdo_rowid ROWID, result varchar2(1000)); -- (Next statement must be on one command line.) CALL SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT('COLA_MARKETS','SHAPE','VAL_RESULTS'); Call completed. SQL> SELECT * from val_results; SDO_ROWID ------------------ RESULT -------------------------------------------------------------------------------- Rows Processed <12> AAABXNAABAAAK+YAAC 13349 [Element <1>] [Ring <1>][Edge <1>][Edge <3>]