29.13 SDO_PC_PKG.PC_DIFFERENCE

書式

SDO_PC_PKG.PC_DIFFERENCE(
     pc_table1            IN  VARCHAR2,
     pc_column1           IN  VARCHAR2, 
     id_column1           IN  VARCHAR2, 
     id1                  IN  VARCHAR2, 
     pc_table2            IN  VARCHAR2, 
     pc_column2           IN  VARCHAR2,
     id_column2           IN  VARCHAR2,
     id2                  IN  VARCHAR2,
     result_table_name    IN  VARCHAR2,
     tol                  IN  NUMBER,
     query_geom           IN  MDSYS.SDO_GEOMETRY DEFAULT NULL
     ) DETERMINISTIC PARALLEL_ENABLE;

説明

2つの点群(近いジオメトリがもう一方の点群にある可能性もあれば、ない可能性もある)を比較し、新しい点群として出力差異を返します。

パラメータ

pc_table1

最初の点群に対してSDO_POINT_CLOUD列およびID列が定義されている表の名前。

pc_column1

pc_table1パラメータに指定された表のSDO_POINT_CLOUDオブジェクトの列名。

id_column1

pc_table1パラメータに指定された表のID列の列名。

id1

ID値。

pc_table2

2番目の点群に対してSDO_POINT_CLOUD列およびID列が定義されている表の名前。

pc_column2

pc_table2パラメータに指定された表のSDO_POINT_CLOUDオブジェクトの列名。

id_column2

pc_table2パラメータに指定された表のID列の列名。

id2

ID値。

result_table_name

出力差異を新しい点群データとして格納するための表の名前。

tol

点の近くにあるものを決定する長さの測定単位。

query_geom

ジオメトリを問い合せます。

使用上のノート

プロシージャSDO_PC_PKG.PC_DIFFERENCEを使用して2つの点群を比較できます。これは、もう一方の点群にある近いジオメトリがない点群の点を識別することによって行います。

たとえば、2つの点群ABを考えてみます。点群B内の近いジオメトリがない点群Aの点は、次のことを表します。

  • 以前はそこにはなかった車など、実際の変更。
  • レーザーが到達しない、遮られたスポットによる変更。
  • 前述の2つのシナリオの組合せ - 新しく到着した車は2番目の点群に登録され、それによって建物の壁または照明用ポールの一部が見えなくなっています。壁の一部が消えたように見える可能性があります。
  • 天蓋を大きくすると、高さをより高く再現するために、いくつかの点が消える可能性があります。差異の検出では、1つのフィーチャが消え、もう1つのフィーチャが現れたとみなすことがあります。

したがって、複数の点群のコンテキストでは、2つの点群間の差異を検出すると、次のことを判断するのに非常に役立ちます。

  • 開発またはインフラストラクチャ・プロジェクトでの毎週の進捗状況。
  • 自然災害や人災による損害。
  • 天蓋や他の動きが遅いプロセスの変更。
  • 不動産の変更や木の伐採など、ヒューマン・アクティビティの検出。

プロシージャSDO_PC_PKG.PC_DIFFERENCEでは、2つの点群ABが次の入力パラメータで識別されます。

  • 点群A: pc_table1pc_column1id_column1id1
  • 点群B: pc_table2pc_column2id_column2id2

2つの点群は同じSRIDを持つことが重要です。SRID間の座標変換がサポートされています。

出力の差異は、列VAL_Diを持つ単純な表である新しい点群です。

次の例では、2つの点群の差異を生成し、出力点群データが表PC1M2_Bに格納されます。

SQL> call
  2    sdo_pc_pkg.pc_difference(
  3      pc_table1         => 'PCS',
  4      pc_column1        => 'PC',
  5      id_column1        => 'ID',
  6      id1               => '1',
  7      pc_table2         => 'PCS',
  8      pc_column2        => 'PC',
  9      id_column2        => 'ID',
 10      id2               => '2',
 11      result_table_name => 'PC1M2_B',
 12      tol               => 1,
 13      query_geom        => SDO_GEOMETRY(
 14                             2003,
 15                             27700,
 16                             NULL,
 17                             SDO_ELEM_INFO_ARRAY(
 18                               1, 1003, 3),
 19                             SDO_ORDINATE_ARRAY(
 20                               0, 0,
 21                               1000, 1000))
);
Call completed.

次のように座標を問い合せることができます。


SQL> select * from pc1m2_b order by val_d1, val_d2, val_d3;

    VAL_D1     VAL_D2     VAL_D3
---------- ---------- ----------
         1          1          5

1 row selected.