プライマリ・コンテンツに移動
Oracle® Spatial and Graph開発者ガイド
12cリリース1 (12.1)
B72470-07
目次へ移動
目次
索引へ移動
索引

前
次

27.2 SDO_PC_PKG.CLIP_PC_FLAT

書式

SDO_PC_PKG.CLIP_PC_FLAT(
     geometry       IN SDO_GEOMETRY, 
     table_name     IN VARCHAR2, 
     tolerance      IN NUMBER, 
     other_dim_qry  IN SDO_MBR, 
     mask           IN VARCHAR2 DEFAULT NULL 
     ) RETURN REF CURSOR;

説明

点群データが平面表に格納された、平面形式の点群でクリップ操作を実行します。

パラメータ

geometry

クリップ・ウィンドウとして使用する2次元ジオメトリです。次に例を示します。

geometry =>
  SDO_GEOMETRY(
    2003,
    NULL,
    NULL,
    SDO_ELEM_INFO_ARRAY(1, 1003, 3),
    SDO_ORDINATE_ARRAY(
      0.75, 0.75,
      1.25, 1.25))
table_name

点群データを含む表またはビューの名前を指定します。表またはビューの最初の2つの列は、XおよびYという名前で、Oracle NUMBER型にする必要があります。オプションで、XおよびYに続いて、表またはビューにはNUMBER型のZ列と、その他の非空間の点群属性を含めることができます。その他の非空間の点群属性は、任意のデータ型を持つことができますが、other_dim_qryパラメータの制約として指定する場合は、Oracle NUMBER型にする必要があります。

tolerance

点群のオブジェクトの許容差を指定します(空間許容差の詳細は、「許容差」を参照してください)。このパラメータがNULLの場合、デフォルト値は0.0000000000005です。

other_dim_qry

Oracle NUMBER型の任意の列(X列とY列を除く)に対する、ユーザー定義の問合せ範囲を提供する最小境界矩形(MBR)を指定します。

SDO_MBR型は(LOWER_LEFT SDO_VPOINT_TYPE, UPPER_RIGHT SDO_VPOINT_TYPE)として定義され、SDO_V_POINT_TYPEはVARRAY(64) OF NUMBERとして定義されます。

問合せ範囲で制約されない、Oracle NUMBER型の列に対しては、SDO_V_POINT_TYPE配列にNULLを指定します。

mask

ポリゴンと相互作用する点に適用可能な位相関係を指定します。有効な値は'mask=<value>'で、<value>SDO_RELATE演算子に対して有効な1つ以上のマスク値(TOUCHOVERLAPBDYDISJOINTOVERLAPBDYINTERSECTEQUALINSIDECOVEREDBYCONTAINSCOVERSANYINTERACTON)です。近似チェックを実行するFILTERも指定できます。FILTERは、ポリゴンと交差するすべての候補と、その他のいくつかのものを戻します。論理ブール演算子ORを使用して、'mask=inside+touch'のように複数のマスクを組み合せることができますが、FILTERは他のマスクと組み合せることはできません。

このパラメータがNULLであるか、または空の文字列を含む場合、mask=ANYINTERACTであるとみなされます。

使用上の注意

このファンクションは、SDO_PCオブジェクトに格納された入力点群データを使用するSDO_PC_PKG.CLIP_PCとは異なり、平面形式の点群を使用できます。SDO_PCの代替として、ハードウェア環境と使用方法に応じて、平面形式が点群サポートに追加されました。平面形式の利点の1つは、その動的な性質で、点データに対する更新であるため、再ブロック化を必要としません。

Exadata以外の環境では、X列とY列に対して複合Bツリー索引を作成することを強くお薦めします。複合Bツリー索引には、other_dim_qryパラメータに対して記述されているユーザー定義の問合せ範囲で制約される他のOracle NUMBER列も含めます。点群データの更新があると、自動的にBツリー索引が更新されます。

このファンクションをSDO_PC_PKG.CLIP_PCと比較すると、このファンクションは、SDO_PCオブジェクトに格納された点群データを入力として使用します。

点群を使用してソリッドをモデル化する方法は、「ソリッドのモデル化」を参照してください。この項には、点群データを格納するためのSDO_PCと平面表のアプローチの説明があります。

次の例では、INPPTABという名前の表の最初の3つの列からINPTAB2という名前のビューを作成します。次に、点群データに対してクリップ操作を実行します。

CREATE VIEW inptab2 AS (select x x, y y, z z from inptab);
 
DECLARE
  my_cursor sys_refcursor;
  TYPE rec IS RECORD(x NUMBER, y NUMBER, z number);
  TYPE lst IS TABLE OF rec;
  result_list lst;
BEGIN
  my_cursor :=
    SDO_PC_PKG.CLIP_PC_FLAT(
      geometry =>
        MDSYS.SDO_GEOMETRY(
          2003,
          NULL,
          NULL,
          MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 3),
          MDSYS.SDO_ORDINATE_ARRAY(
            0.75, 0.75,
            1.25, 1.25)),
      table_name    => 'INPTAB2',
      tolerance     => 0.05,
      other_dim_qry => null,
      mask          => null);
 
  FETCH my_cursor BULK COLLECT INTO result_list;
  FOR I in 1 .. result_list.COUNT LOOP
    dbms_output.put_line(
      '(' || result_list(i).x || ', ' ||
             result_list(i).y || ', ' ||
             result_list(i).z || ')');
  END LOOP;
  CLOSE my_cursor;
END;
/