15.159 SEM_APIS.VALIDATE_GEOMETRIES
形式
SEM_APIS.VALIDATE_GEOMETRIES( model_name IN VARCHAR2, SRID IN NUMBER, tolerance IN NUMBER, parallel IN PLS_INTEGER DEFAULT NULL, tablespace_name IN VARCHAR2 DEFAULT NULL, options IN VARCHAR2 DEFAULT NULL, network_owner IN VARCHAR2 DEFAULT NULL, network_name IN VARCHAR2 DEFAULT NULL);
説明
指定モデルのすべてのジオメトリ・リテラルが指定したSRIDおよび許容値について有効であるかどうかを判別します。
パラメータ
- model_name
-
検証するジオメトリ・リテラルが含まれるモデルの名前。ネイティブ・モデルのみ指定できます。
- SRID
-
空間参照システムのSRID。
- tolerance
-
検証に使用する許容値。
- parallel
-
操作に関連付けられている並列度。パラレル実行の詳細は、『Oracle Database VLDBおよびパーティショニング・ガイド』を参照してください。
- tablespace_name
-
表{model_name}_IVG$、{model_name}_FXT$および{model_name}_NFT$の宛先表領域。
- options
-
検証のオプションを指定する文字列。サポートされているオプションは次のとおりです。
-
RECTIFY=T。ステージング表{model_name}_FXT$および{model_name}_NFT$が作成され、それぞれ修正できるトリプルと修正できないトリプルが含まれます。これらの表を使用してモデルを修正できます。
-
AUTOCORRECT=T。無効でも修正できるジオメトリが含まれるトリプルが修正されます。また、修正できないジオメトリが含まれるトリプルが入っている表{model_name}_NFT$が、そのようなトリプルを手動で修正できるように作成されます。
-
STANDARD_CRS_URI=T。標準CRS (座標参照システム) URIを使用します。
-
GML_LIT_SRL=T。修正されたジオメトリ・リテラルに
ogc:gmlLiteral
シリアライズを使用します。ogc:wktLiteral
シリアライズがデフォルトです。 - GEOJSON_LIT_SRL=T。修正されたジオメトリ・リテラルに
ogc:geoJSONLiteral
シリアライズを使用します。ogc:wktLiteral
シリアライズがデフォルトです。 - KML_LIT_SRL=T。修正されたジオメトリ・リテラルに
ogc:kmlLiteral
シリアライズを使用します。ogc:wktLiteral
シリアライズがデフォルトです。
-
- network_owner
-
RDFネットワークの所有者。(表1-2を参照してください。)
- network_name
-
RDFネットワークの名前。(表1-2を参照してください。)
使用に関するノート
このプロシージャは、SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT関数のラッパーです。
無効なジオメトリ・リテラルが含まれる表{model_name}_IVG$が作成されます。オプションで、ステージング表{model_name}_FXT$および{model_name}_NFT$を作成でき、それぞれ修正できるトリプルと修正できないトリプルが含まれます。ステージング表を使用すると、ユーザーは無効なジオメトリを修正できます。モデルの無効でも修正できるジオメトリ・リテラルは、指定した場合、自動的に修正することもできます。
モデルの無効なジオメトリの修正後、SEM_APIS.PURGE_UNUSED_VALUESを実行してセマンティク・ネットワークから無効なジオメトリ・リテラル値をパージすることをお薦めします。
モデルの詳細は、「セマンティク・データのモデル化」および「データベースのセマンティク・データ」を参照してください。
セマンティク・ネットワークのタイプおよびオプションの詳細は、「RDFネットワーク」を参照してください。
例
次の例では、無効なジオメトリ・リテラルがいくつか含まれるモデルを作成し、RECTIFY=T
オプションおよびSTANDARD_CRS_URI=T
オプションを使用してモデルを検証しています。
-- Create model EXEC sem_apis.create_sem_model('m', NULL, NULL, network_owner=>'RDFUSER', network_name=>'NET1'); -- Insert invalid geometries -- Duplicated coordinates - rectifiable insert into RDFUSER.NET1#RDFT_M(triple) values (sdo_rdf_triple_s('m','<http://my.org/geom1>', '<http://www.opengis.net/rdf#asWKT>', '"POLYGON((1.0 2.0, 3.0 2.0, 1.0 4.0, 1.0 2.0, 1.0 2.0))"^^<http://xmlns.oracle.com/rdf/geo/WKTLiteral>'), network_owner=>'RDFUSER', network_name=>'NET1'); -- Boundary is not closed – rectifiable insert into RDFUSER.NET1#RDFT_M(triple) values (sdo_rdf_triple_s('m','<http://my.org/geom2>', '<http://www.opengis.net/rdf#asWKT>', '"POLYGON((1.0 2.0, 3.0 2.0, 3.0 4.0, 1.0 4.0))"^^<http://xmlns.oracle.com/rdf/geo/WKTLiteral>'), network_owner=>'RDFUSER', network_name=>'NET1'); -- Less than 4 points – non rectifiable insert into RDFUSER.NET1#RDFT_M(triple) values (sdo_rdf_triple_s('m:<http://my.org/g2>','<http://my.org/geom3>', '<http://www.opengis.net/rdf#asWKT>', '"POLYGON((1.0 2.0, 3.0 2.0, 1.0 4.0))"^^<http://xmlns.oracle.com/rdf/geo/WKTLiteral>'), network_owner=>'RDFUSER', network_name=>'NET1'); commit; -- Validate EXEC sem_apis.validate_geometries(model_name=>'m',SRID=>8307,tolerance=>0.1, options=>'STANDARD_CRS_URI=T RECTIFY=T', network_owner=>'RDFUSER', network_name=>'NET1'); -- Check invalid geometries SELECT original_vid, error_msg, corrected_geom_literal FROM M_IVG$; -- Check rectified triples select RDF$STC_GRAPH, RDF$STC_SUB, RDF$STC_PRED, RDF$STC_OBJ from M_FXT$; -- Check non-rectified triples select RDF$STC_GRAPH, RDF$STC_SUB, RDF$STC_PRED, RDF$STC_OBJ, ERROR_MSG from M_NFT$;
親トピック: SEM_APISパッケージのサブプログラム