29.17 SDO_PC_PKG.SDO_PC_NN_FOR_EACH

書式

SDO_PC_PKG.SDO_PC_NN_FOR_EACH(
     blocks     IN SIMPLE_BLK_REF, 
     pc          IN SDO_PC, 
     n           IN NUMBER, 
     max_dist    IN NUMBER, 
     qry_min_res IN NUMBER, 
     qry_max_res IN NUMBER 
     ) RETURN POINT_NEIGHBOR_PAIR_TAB;

説明

各点が問合せ範囲内にある、最も近いn個の点を戻します。

パラメータ

blocks

PCブロック、個々の問合せウィンドウおよび非空間問合せ制約の表。

pc

SDO_PC型の点群オブジェクト。

n

各点が問合せ範囲内にあり、探す対象となる最も近い点の数。

max_dist

近隣をチェックする最大距離。

qry_min_res

ピラミッドを持つ点群の最小ピラミッド・レベル。(例に示すように、ピラミッド・レベルごとに異なる(見る人からより近いまたはより遠い)問合せウィンドウを使用できます。

qry_max_res

ピラミッドを持つ点群の最大ピラミッド・レベル。(例に示すように、ピラミッド・レベルごとに異なる(見る人からより近いまたはより遠い)問合せウィンドウを使用できます。

使用上のノート

このファンクションに関連する型は次のように定義されます。

TYPE SIMPLE_BLK_REF is RECORD (
  blk_id        number,
  ind_dim_qry   MDSYS.sdo_geometry,
  other_dim_qry MDSYS.sdo_mbr);

TYPE POINT_NEIGHBOR_PAIR_ROW is RECORD (
  obj_id          number,
  blk_id          number,
  pt_id           number,
  pt_x            number,
  pt_y            number,
  pt_z            number,
  neighbor_rank   number,
  neighbor_dist   number,
  neighbor_blk_id number,
  neighbor_pt_id  number,
  neighbor_x      number,
  neighbor_y      number,
  neighbor_z      number);

TYPE POINT_NEIGHBOR_PAIR_TAB is TABLE of POINT_NEIGHBOR_PAIR_ROW;

点群を使用してソリッドをモデル化する方法は、「ソリッドのモデル化」を参照してください。

次の例では、各点が指定された問合せ範囲内にある、最も近い10個の点を戻します。

define query_window = SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(100,100,102,102));

with
  candidates AS (
    select
      blocks.blk_id,
      SDO_GEOM.SDO_INTERSECTION(subqueries.ind_dim_qry, blocks.blk_extent, 0.05),
      subqueries.other_dim_qry
    from
      blocks blocks,
      (
        select 1 min_res, 1 max_res, &query_window ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual union all
        select 2 min_res, 5 max_res, &query_window ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual
      ) subqueries
    where
      blocks.obj_id = 1 and
      blocks.pcblk_min_res <= max_res and
      blocks.pcblk_max_res >= min_res and
      SDO_ANYINTERACT(blocks.blk_extent, subqueries.ind_dim_qry))
select /*+ parallel (2) */
  *
from
  table(
    sdo_pc_pkg.sdo_pc_nn_for_each(
      blocks      => cursor(select * from candidates),
      pc          => (select pc from pcs where id = 1),
      n           => 10,
      max_dist    => 10,
      qry_min_res => 1,
      qry_max_res => 1))
order by
  obj_id,
  blk_id,
  pt_id,
  neighbor_rank;

old  10:         select 1 min_res, 1 max_res, &query_window ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual union all
new  10:         select 1 min_res, 1 max_res, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(100,100,102,102)) ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual union all
old  11:         select 2 min_res, 5 max_res, &query_window ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual
new  11:         select 2 min_res, 5 max_res, SDO_GEOMETRY(2003,NULL,NULL,SDO_ELEM_INFO_ARRAY(1,1003,3),SDO_ORDINATE_ARRAY(100,100,102,102)) ind_dim_qry, cast(null as sdo_mbr) other_dim_qry from dual

    OBJ_ID     BLK_ID      PT_ID       PT_X       PT_Y       PT_Z NEIGHBOR_RANK NEIGHBOR_DIST NEIGHBOR_BLK_ID NEIGHBOR_PT_ID NEIGHBOR_X NEIGHBOR_Y NEIGHBOR_Z
---------- ---------- ---------- ---------- ---------- ---------- ------------- ------------- --------------- -------------- ---------- ---------- ----------
         1          2        272        100        100        200             1             0               2            272        100        100        200
         1          2        272        100        100        200             2    1.41421356               2            268         99        101        200
         1          2        272        100        100        200             3    1.41421356               2            271         99        100        199
         1          2        272        100        100        200             4    1.41421356               2            293        100         99        199
         1          2        272        100        100        200             5    1.41421356               2            275        100        101        201
         1          2        272        100        100        200             6    1.41421356               2            273        101        100        201
         1          2        272        100        100        200             7    1.41421356               2            292        101         99        200
         1          2        272        100        100        200             8    2.44948974               2            269         98        101        199
         1          2        272        100        100        200             9    2.44948974               2            250         99         99        198
         1          2        272        100        100        200            10    2.44948974               2            267         99        102        201
         1          2        273        101        100        201             1             0               2            273        101        100        201
         1          2        273        101        100        201             2    1.41421356               2            272        100        100        200
         1          2        273        101        100        201             3    1.41421356               2            275        100        101        201
         1          2        273        101        100        201             4    1.41421356               2            292        101         99        200
         1          2        273        101        100        201             5    1.41421356               2            274        101        101        202
         1          2        273        101        100        201             6    1.41421356               2            291        102         99        201
         1          2        273        101        100        201             7    1.41421356               2            286        102        100        202
         1          2        273        101        100        201             8    2.44948974               2            268         99        101        200
         1          2        273        101        100        201             9    2.44948974               2            293        100         99        199
         1          2        273        101        100        201            10    2.44948974               2            276        100        102        202
         1          2        274        101        101        202             1             0               2            274        101        101        202
         1          2        274        101        101        202             2    1.41421356               2            276        100        102        202
         1          2        274        101        101        202             3    1.41421356               2            275        100        101        201
         1          2        274        101        101        202             4    1.41421356               2            273        101        100        201
         1          2        274        101        101        202             5    1.41421356               2            279        101        102        203
         1          2        274        101        101        202             6    1.41421356               2            286        102        100        202
         1          2        274        101        101        202             7    1.41421356               2            285        102        101        203
         1          2        274        101        101        202             8    2.44948974               2            267         99        102        201
         1          2        274        101        101        202             9    2.44948974               2            272        100        100        200
         1          2        274        101        101        202            10    2.44948974               2            277        100        103        203
         1          2        275        100        101        201             1             0               2            275        100        101        201
         1          2        275        100        101        201             2    1.41421356               2            267         99        102        201
         1          2        275        100        101        201             3    1.41421356               2            268         99        101        200
         1          2        275        100        101        201             4    1.41421356               2            272        100        100        200
         1          2        275        100        101        201             5    1.41421356               2            276        100        102        202
         1          2        275        100        101        201             6    1.41421356               2            273        101        100        201
         1          2        275        100        101        201             7    1.41421356               2            274        101        101        202
         1          2        275        100        101        201             8    2.44948974               2            264         98        102        200
         1          2        275        100        101        201             9    2.44948974               2            266         99        103        202
         1          2        275        100        101        201            10    2.44948974               2            271         99        100        199
         1          2        276        100        102        202             1             0               2            276        100        102        202
         1          2        276        100        102        202             2    1.41421356               2            266         99        103        202
         1          2        276        100        102        202             3    1.41421356               2            267         99        102        201
         1          2        276        100        102        202             4    1.41421356               2            277        100        103        203
         1          2        276        100        102        202             5    1.41421356               2            275        100        101        201
         1          2        276        100        102        202             6    1.41421356               2            274        101        101        202
         1          2        276        100        102        202             7    1.41421356               2            279        101        102        203
         1          2        276        100        102        202             8    2.44948974               2            265         98        103        201
         1          2        276        100        102        202             9    2.44948974               2            469         99        104        203
         1          2        276        100        102        202            10    2.44948974               2            268         99        101        200
         1          2        279        101        102        203             1             0               2            279        101        102        203
         1          2        279        101        102        203             2    1.41421356               2            277        100        103        203
         1          2        279        101        102        203             3    1.41421356               2            276        100        102        202
         1          2        279        101        102        203             4    1.41421356               2            274        101        101        202
         1          2        279        101        102        203             5    1.41421356               2            278        101        103        204
         1          2        279        101        102        203             6    1.41421356               2            280        102        102        204
         1          2        279        101        102        203             7    1.41421356               2            285        102        101        203
         1          2        279        101        102        203             8    2.44948974               2            266         99        103        202
         1          2        279        101        102        203             9    2.44948974               2            458        100        104        204
         1          2        279        101        102        203            10    2.44948974               2            275        100        101        201
         1          2        280        102        102        204             1             0               2            280        102        102        204
         1          2        280        102        102        204             2    1.41421356               2            278        101        103        204
         1          2        280        102        102        204             3    1.41421356               2            279        101        102        203
         1          2        280        102        102        204             4    1.41421356               2            285        102        101        203
         1          2        280        102        102        204             5    1.41421356               2            281        102        103        205
         1          2        280        102        102        204             6    1.41421356               2            283        103        102        205
         1          2        280        102        102        204             7    1.41421356               2            284        103        101        204
         1          2        280        102        102        204             8    2.44948974               2            277        100        103        203
         1          2        280        102        102        204             9    2.44948974               2            457        101        104        205
         1          2        280        102        102        204            10    2.44948974               2            274        101        101        202
         1          2        285        102        101        203             1             0               2            285        102        101        203
         1          2        285        102        101        203             2    1.41421356               2            274        101        101        202
         1          2        285        102        101        203             3    1.41421356               2            279        101        102        203
         1          2        285        102        101        203             4    1.41421356               2            280        102        102        204
         1          2        285        102        101        203             5    1.41421356               2            286        102        100        202
         1          2        285        102        101        203             6    1.41421356               2            284        103        101        204
         1          2        285        102        101        203             7    1.41421356               2            287        103        100        203
         1          2        285        102        101        203             8    2.44948974               2            276        100        102        202
         1          2        285        102        101        203             9    2.44948974               2            273        101        100        201
         1          2        285        102        101        203            10    2.44948974               2            278        101        103        204
         1          2        286        102        100        202             1             0               2            286        102        100        202
         1          2        286        102        100        202             2    1.41421356               2            273        101        100        201
         1          2        286        102        100        202             3    1.41421356               2            274        101        101        202
         1          2        286        102        100        202             4    1.41421356               2            291        102         99        201
         1          2        286        102        100        202             5    1.41421356               2            285        102        101        203
         1          2        286        102        100        202             6    1.41421356               2            287        103        100        203
         1          2        286        102        100        202             7    1.41421356               2            288        103         99        202
         1          2        286        102        100        202             8    2.44948974               2            275        100        101        201
         1          2        286        102        100        202             9    2.44948974               2            292        101         99        200
         1          2        286        102        100        202            10    2.44948974               2            279        101        102        203

90 rows selected.

Elapsed: 00:00:03.02