1.8 トポロジのApplication Program Interface

トポロジ・データ・モデルのApplication Program Interface (API)は、次のもので構成されます。

1.8.1 トポロジ演算子

トポロジ・データ・モデルのPL/SQL APIでは、次を除く、Oracle Spatialの演算子を使用できます。

  • SDO_RELATE(ただし、maskパラメータを使用しないSDO_RELATEの簡易演算子は使用できます)

  • SDO_NN

  • SDO_NN_DISTANCE

  • SDO_WITHIN_DISTANCE

トポロジ・データ・モデルで空間演算子を使用するには、Spatialの演算子の使用方法およびリファレンス情報(『Oracle Spatial開発者ガイド』を参照)を理解しておく必要があります。このトピックでは、トポロジでの空間演算子の使用に適用される追加情報または相違点についてのみ説明します。この項で特に指定されていないかぎり、『Oracle Spatial開発者ガイド』に記載されている演算子関連の情報は、トポロジ・データで演算子を使用する場合に適用されます。

トポロジで空間演算子を使用する場合、最初の2つのパラメータの形式には次のいずれかを使用できます。

  • 2つのトポロジ・ジオメトリ・オブジェクト(SDO_TOPO_GEOMETRY型)

    たとえば、次の文は、P3という名前の土地区画フィーチャと相互作用するすべての通りを検出します。(この例では、「トポロジ・データから作成したトポロジ」の定義およびデータを使用しています。)

    SELECT c.feature_name FROM city_streets c, land_parcels l
      WHERE l.feature_name = 'P3' AND
        SDO_ANYINTERACT (c.feature, l.feature) = 'TRUE';
     
    FEATURE_NAME                                                                    
    ------------------------------                                                  
    R1 
    
  • 第1のパラメータとしてのトポロジ・ジオメトリ・オブジェクト(SDO_TOPO_GEOMETRY型)および第2のパラメータとしての空間ジオメトリ(SDO_GEOMETRY型)

    たとえば、次の文は、P3という名前の土地区画フィーチャの境界と同じポリゴンになったジオメトリ・オブジェクトと相互作用するすべての通りを検出します。(この例では、「空間ジオメトリから作成したトポロジ」の定義およびデータを使用しています。)

    SELECT c.feature_name FROM city_streets c
      WHERE SDO_ANYINTERACT (c.feature,
        SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1),
          SDO_ORDINATE_ARRAY(35,6, 47,6, 47,14, 47,22, 35,22, 35,14, 35,6))) = 'TRUE';
     
    FEATURE_NAME                                                                    
    ------------------------------                                                  
    R1
    
  • 第1のパラメータとしてのトポロジ・ジオメトリ・オブジェクト(SDO_TOPO_GEOMETRY型)および第2のパラメータとしてのトポロジ・オブジェクト配列オブジェクト(SDO_TOPO_OBJECT_ARRAY型)

    たとえば、次の文は、P3という名前の土地区画フィーチャと同じになったSDO_TOPO_OBJECT_ARRAYオブジェクトと相互作用するすべての通りを検出します。(この例では、「空間ジオメトリから作成したトポロジ」の定義およびデータを使用しています。)

    SELECT c.feature_name FROM city_streets c WHERE
      SDO_ANYINTERACT (c.feature,
       SDO_TOPO_OBJECT_ARRAY (SDO_TOPO_OBJECT (5, 3), SDO_TOPO_OBJECT (8, 3)))
       = 'TRUE';
     
    FEATURE_NAME                                                                    
    ------------------------------                                                  
    R1
    

例1-11では、通りのフィーチャとP3という名前の土地区画との特別な関係をチェックする、別のトポロジ演算子を示しています。最初の文はSDO_FILTER演算子を示しています。残りの文は、演算子名にマスクが含まれているSDO_RELATEの簡易演算子を示しています。この例の簡易演算子では、SDO_ANYINTERACT、SDO_OVERLAPBDYINTERSECTおよびSDO_OVERLAPSのみが、結果として生成されるフィーチャ・データを戻します。(「フィーチャ」図1-3が示すように、P3という名前の土地区画と相互作用する唯一の通りフィーチャはR1です。)例1-11のすべての文では、最初の2つのパラメータがトポロジ・ジオメトリ・オブジェクトである形式を使用しています。

例1-11 トポロジ演算子

-- SDO_FILTER
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_FILTER (c.feature, l.feature) = 'TRUE';
 
FEATURE_NAME                                                                    
------------------------------                                                  
R1                                                                              
 
-- SDO_RELATE convenience operators
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_ANYINTERACT (c.feature, l.feature) = 'TRUE';
 
FEATURE_NAME                                                                    
------------------------------                                                  
R1                                                                              
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_CONTAINS (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_COVEREDBY (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_COVERS (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_EQUAL (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_INSIDE (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_ON (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_OVERLAPBDYINTERSECT (c.feature, l.feature) = 'TRUE';
 
FEATURE_NAME                                                                    
------------------------------                                                  
R1                                                                              
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_OVERLAPBDYDISJOINT (c.feature, l.feature) = 'TRUE';
 
no rows selected
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_OVERLAPS (c.feature, l.feature) = 'TRUE';
 
FEATURE_NAME                                                                    
------------------------------                                                  
R1                                                                              
 
SELECT c.feature_name FROM city_streets c, land_parcels l
  WHERE l.feature_name = 'P3' AND
    SDO_TOUCH (c.feature, l.feature) = 'TRUE';
 
no rows selected

関連項目:

1.8.2 トポロジ・データ・モデルのJavaインタフェース

ノート:

Oracle Databaseリリース23aiでは、データベースのOJVMがJDK11をサポートしているため、Oracle Spatialトポロジ・データ・モデルAPIはJDK 11でコンパイルされます。ただし、下位互換性のために、APIは引き続きJDK8でサポートされます。APIを使用する場合は、関連するすべてのJARファイルが、使用されているJDKバージョン(JDK 8またはJDK 11)と一致していることを確認してください。様々なJDKバージョンでサポートされているJDBCドライバの詳細は、Oracle JDBCドライバのRDBMSおよびJDKバージョン互換性を参照してください。

トポロジ・データ・モデルのJavaクライアント・インタフェースは、次のクラスで構成されます。

  • TopoMap: エッジ、ノードおよびフェイスを格納するクラスです。キャッシュと基礎となるデータベース表の両方でトポロジの一貫性を保持しながら要素を追加および削除するためのメソッドを提供します。

  • Edge: エッジ用のクラスです。

  • Face: フェイス用のクラスです。

  • Node: ノード用のクラスです。

  • Point2DD: 点用のクラスです。

  • CompGeom: 静的な計算ジオメトリのメソッド用クラスです。

  • InvalidTopoOperationException: 無効なトポロジ操作の場合の例外用のクラスです。

  • TopoValidationException: トポロジの検証が正常に実行されなかった場合の例外用のクラスです。

  • TopoEntityNotFoundException: エンティティが検出されなかった場合の例外用のクラスです。

  • TopoDataException: 無効な入力の場合の例外用のクラスです。

SpatialのJavaクラス・ライブラリは、<ORACLE_HOME>/md/jlib/ディレクトリ下の.jarファイルに格納されています。

関連項目:

トポロジ・データ・モデル・クラスに関する詳細なリファレンス情報と、Java APIの使用方法については、Oracle Spatial Java APIリファレンスを参照してください。