29.7 SDO_PC_PKG.CREATE_PC_UNIFIED

書式

CREATE_PC_UNIFIED(
  pc_type                  VARCHAR2,
  inp_table                VARCHAR2,
  base_table               VARCHAR2,
  data_table               VARCHAR2,
  pc_id                    NUMBER,
  pc_tol                   NUMBER,
  blk_size                 NUMBER,
  srid                     NUMBER       DEFAULT NULL,
  sfc_domain               SDO_GEOMETRY DEFAULT NULL,
  sfc_type                 VARCHAR2     DEFAULT '2D Hilbert as NUMBER', -- ('2D Hilbert as NUMBER', '2D Hilbert as RAW')
  pc_extent                SDO_GEOMETRY DEFAULT NULL,
  feature_table            VARCHAR2     DEFAULT NULL,
  feature_block_link_table VARCHAR2     DEFAULT NULL,
  feature_buffer           NUMBER       DEFAULT NULL,
  drop_non_interacting_pts NUMBER       DEFAULT 0,
  create_unblocked_table   NUMBER       DEFAULT 0,
  create_pyramid           NUMBER       DEFAULT 1,
  preserve_pyramid_leaves  NUMBER       DEFAULT 0
);

説明

構成可能なモデルの点群を作成します(Hilbert Rツリー・ブロック、Rツリー・ブロック、フラット、ハイブリッドなど)。

パラメータ

pc_type

点群タイプまたはモデル。

サポートされている点群タイプは次のとおりです:

  • Rツリー: 点は地理的ブロックにパーティション化され、このモデルはRツリー構造のバリエーションです。
  • Hilbert Rツリー: 点は地理的ブロックにパーティション化され、このモデルはHilbert Rツリー構造のバリエーションです。
  • フィーチャ・ブロック: 点は地理的なブロックにパーティション化され、このモデルは特定のフィーチャのリスト(道路、郵便番号、ビルディング・ブロックなど)に基づいています。
  • フラット: 点は、プレーン・データベース表またはフラット・データベース表に直接格納されます。この場合、ExadataはExadataスマート・スキャンを使用し、非Exadataは(VAL_D1、VAL_D2)または(VAL_D1、VAL_D2、VAL_D3)のBツリーを使用します。また、非Exadataのプラットフォームでは、フラット・モデルによって、10億ポイントの点群サイズを超える問合せが遅くなります。
  • ハイブリッドまたはハイブリッドのHilbert Rツリー: 点はフラット・モデルと同様に格納されます。ただし、Hilbert Rツリー・ブロック・モデルに似た論理ブロックを使用する索引構成表の場合を除きます。
inp_table

入力点群データを含む表またはビューの名前を指定します。

この表またはビューには、次の列が含まれている必要があります:

  • VAL_D1 (NUMBER): 次元1の座標
  • VAL_D2 (NUMBER): 次元2の座標
  • ...
  • VAL_Dn (NUMBER): 次元nの座標。ここで、nは最も数字の大きい次元です。nは、点群が初期化されたときのSDO_PC_PKG.INITファンクションのコールに含まれるpc_tot_dimensionsパラメータ値と一致する必要があります。
base_table

点群オブジェクトが格納される表の名前。

次に、この表を作成するためのDDL文の例を示します:

CREATE TABLE pcs (id NUMBER, pc SDO_PC);

data_table

点群データが格納される表の名前。

次に、ブロック・モデルに対してこの表を作成するためのDDL文の例を示します:

CREATE TABLE blocks AS SELECT * FROM mdsys.sdo_pc_blk_table WHERE rownum < 0;

フラット・モデルまたはハイブリッド・モデルの場合、表はデータベース・スキーマに自動的に作成されます。

pc_id

点群の数値ID

pc_tol

点群で使用される許容差。

blk_size

点単位のブロック・サイズ。

これは、Rツリーのブロック、Hilbert Rツリーのブロック、またはハイブリッドが使用されている場合に適用されます。

srid

点群に使用されるSRID座標系。

sfc_domain

現在は使用されていません。

sfc_type

現在は使用されていません。

pc_extent

点群の地理的範囲。

feature_table

フィーチャ・ブロックに使用されるフィーチャ表の名前。

指定されたフィーチャの周囲で点がブロックされます。

feature_block_link_table

フィーチャ表(feature_table)と点群ブロック表(data_table)の間の外部キー・リンクを提供するために作成された表。

たとえば:

SQL> desc feature_block_links;
 Name                                      Null?    Type
 ----------------------------------------- -------- ---------
 FEATURE_ID                                         NUMBER
 OBJ_ID                                             NUMBER
 BLK_ID                                             NUMBER
feature_buffer

高速道路など、各フィーチャの周りの地理的バッファ。

drop_non_interacting_pts

現在は使用されていません。

create_unblocked_table

現在は使用されていません。

create_pyramid

ブロックされている場合に、点群をピラミッドに編成できるかどうかを決定します。

preserve_pyramid_leaves

すべての点をピラミッド・ブロックの1つにのみ格納する必要があるか、リーフ以外のポイントもリーフに格納できるかどうかを決定します。

使用上のノート

CREATE_PC_UNIFIEDファンクションは、Rツリー・ブロック・モデルのみをサポートするCREATE_PCとは対照的に、すべての点群モデルをサポートします。このファンクションと同等の問合せはSDO_PC_PKG.CLIP_PC_INTO_TABLEで、すべてのモデルもサポートされます。ファンクションSDO_PC_PKG.CLIP_PCは、ブロック・モデルでのみ機能します。

次の例では、ID値が12345でブロック・サイズが10000のHilbert Rツリー・ブロック点群を作成します。

call
  sdo_pc_pkg.create_pc_unified(
    pc_type    => 'Hilbert R-tree',
    inp_table  => 'INPTAB',
    base_table => 'PCS',
    data_table => 'BLOCKS',
    pc_id      => 12345,
    pc_tol     => 0.05,
    blk_size   => 10000,
    srid       => 27700,
    create_pyramid => 0
  );

次の例では、フィーチャ・ブロック点群を作成します。これは、自動クラスタ化ではなく、指定されたフィーチャの数に基づいてブロックされます。

create table features (
  feature_id number,
  geom sdo_geometry);

call
  sdo_pc_pkg.create_pc_unified(
    pc_type                  => 'Feature-Blocked',
    inp_table                => 'INPTAB',
    base_table               => 'PCS',
    data_table               => 'BLOCKS',
    pc_id                    => 1,
    pc_tol                   => 0.05,
    blk_size                 => 10000,
    srid                     => null,
    feature_table            => 'FEATURES',
    feature_block_link_table => 'FEATURE_BLOCK_LINKS',
    feature_buffer           => 1,
    create_pyramid           => 0
  );