SDO_PC_PKG.PC_DIFFERENCE

Format

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;

Description

Compares two point clouds, that may or may not have neighbors in the other point cloud, and returns the output difference as a new point cloud.

Parameters

pc_table1

Name of the table that has the SDO_POINT_CLOUD column and ID column defined for the first point cloud.

pc_column1

Column name of the SDO_POINT_CLOUD object in the table provided for pc_table1 parameter.

id_column1

Column name for the ID column in the table provided for pc_table1 parameter.

id1

ID value.

pc_table2

Name of the table that has the SDO_POINT_CLOUD column and ID column defined for the second point cloud.

pc_column2

Column name of the SDO_POINT_CLOUD object in the table provided for pc_table2 parameter.

id_column2

Column name for the ID column in the table provided for pc_table2 parameter.

id2

ID value.

result_table_name

Name of the table for storing the output difference as a new point cloud data.

tol

A length unit of measure that determines the neighborhood of a point.

query_geom

Query geometry.

Usage Notes

The procedure SDO_PC_PKG.PC_DIFFERENCE can be used to compare two point clouds by identifying points in either without close neighbors in the other.

For example, consider two point clouds, A and B. A point in point cloud A without a geometric neighbor in point cloud B may signify:

Therefore, in the context of multiple point clouds, detecting differences between two point clouds can be very useful to determine:

In the procedure SDO_PC_PKG.PC_DIFFERENCE, the two point clouds, A and B, are identified by the following input parameters:

It is important that the two point clouds have the same SRID. A coordinate transformation between SRIDs is supported.

The output difference is a new point cloud which is a simple table with columns VAL_Di.

Examples

The following example generates the difference between two point clouds and the output point cloud data is stored in the table 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.

You can then query the ordinates as shown:

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.