MINI MINI MANI MO

Path : /proc/self/root/opt/oracle/product/18c/dbhomeXE/md/admin/
File Upload :
Current File : //proc/self/root/opt/oracle/product/18c/dbhomeXE/md/admin/sdopc.sql

Rem Copyright (c) 2006, 2017, Oracle and/or its affiliates. 
Rem All rights reserved.
Rem
Rem    NAME
Rem      sdotin.sql - <one-line expansion of the name>
Rem
Rem    DESCRIPTION
Rem      <short description of component this file declares/defines>
Rem
Rem    NOTES
Rem      <other useful comments, qualifications, etc.>
Rem
Rem    BEGIN SQL_FILE_METADATA 
Rem    SQL_SOURCE_FILE: sdo/admin/sdopc.sql 
Rem    SQL_SHIPPED_FILE: md/admin/sdopc.sql 
Rem    SQL_PHASE: SDOPC
Rem    SQL_STARTUP_MODE: NORMAL 
Rem    SQL_IGNORABLE_ERRORS: NONE 
Rem    SQL_CALLING_FILE: sdo/admin/catmdsdop1.sql 
Rem    END SQL_FILE_METADATA
Rem
Rem    MODIFIED   (MM/DD/YY)
Rem    rjanders    10/08/17 - Add MDSYS to spatial type
Rem    mhorhamm    11/28/16 - Drop procedures gen_hybrid_pc_***_script
Rem    mhorhamm    05/17/16 - Add PC2DEM
Rem    mhorhamm    05/16/16 - Add signature to create_contour_geometries
Rem    mhorhamm    04/14/16 - Make clip_pc_into_table support blocked, flat &
Rem                           hybrid models
Rem    mhorhamm    04/12/16 - Generalize SDO_PC to support blocked, flat and
Rem                           hybrid models
Rem    mhorhamm    04/12/16 - Generalize SDO_PC to support blocked, flat and
Rem                           hybrid models
Rem    mhorhamm    01/25/16 - Add incremental loading to CREATE_PC_HYBRID
Rem    mhorhamm    01/14/16 - add_hilbert_to_flat_model_pc
Rem    sravada     05/16/14 - XbranchMerge sravada_b17266224_2 from
Rem                           st_sdo_12.1.0
Rem    rjanders    09/16/13 - OCCS: Remove hardtabs
Rem    sravada     08/21/13 - bug 17266224
Rem    rjanders    03/15/13 - #16473696: Start/End _ORACLE_SCRIPT
Rem                           initialization
Rem    sravada     08/27/12 - new clip_pc for Exadata
Rem    sravada     08/14/12 - add tile based SQL generator
Rem    rjanders    02/24/11 - Make sdo_geometry functions deterministic
Rem    sravada     02/04/09 - add parameter to get pt_id/blk_id in to_geometry
Rem    sravada     02/14/08 - upgrade diffs
Rem    rkothuri    08/04/06 - change clippc i/f
Rem    rkothuri    05/23/06 - add tin read and clip functions 
Rem    rkothuri    05/03/06 - add synonym 
Rem    rkothuri    01/31/06 - TIN functionality 
Rem    rkothuri    01/31/06 - TIN functionality 
Rem    rkothuri    01/31/06 - Created
Rem

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@@?/rdbms/admin/sqlsessstart.sql
Rem ********************************************************************

CREATE OR REPLACE PACKAGE prvtpc authid current_user AS
END prvtpc; 
/
show errors;

CREATE OR REPLACE PACKAGE BODY prvtpc AS

END prvtpc; 
/
show errors;

create or replace type mdsys.sdo_lods_type as table of number;
/

CREATE OR REPLACE PACKAGE mdsys.sdo_pc_pkg authid current_user AS
  -- all tables as "schema.table" for simpler interface.
  FUNCTION INIT(
    basetable          varchar2,
    basecol            varchar2,
    blktable           VARCHAR2,
    ptn_params         varchar2,
    pc_extent          mdsys.sdo_geometry     default null,
    pc_tol             NUMBER           default 0.0000000000005,
    pc_tot_dimensions  NUMBER           default 2,
    pc_domain          mdsys.sdo_orgscl_type  default null,
    pc_val_attr_tables mdsys.SDO_STRING_ARRAY default null,
    pc_other_attrs     SYS.XMLTYPE      default null)
      RETURN mdsys.SDO_PC;

  procedure create_liblas_pyramid(
    pc               in mdsys.sdo_pc,
    keepLevel1Intact in number);

  PROCEDURE CREATE_PC(
    inp              mdsys.sdo_pc,
    inptable         varchar2,
          clstpcdatatbl    varchar2 default null);

  PROCEDURE ADD_TO_PC(
    inp      mdsys.sdo_pc,
    inptable varchar2);

  FUNCTION HAS_PYRAMID(
    inp mdsys.sdo_pc)
      return number;

  FUNCTION PRESERVES_LEVEL1(
    inp mdsys.sdo_pc)
      return number;

  -- works as read if qry params are null
  FUNCTION CLIP_PC(
    inp                 mdsys.sdo_pc,
    ind_dim_qry         mdsys.sdo_geometry,
    other_dim_qry       mdsys.sdo_mbr,
    qry_min_res         number,
    qry_max_res         number,
    blkno               number default null,
    include_custom_dims number default 0)
      RETURN MDSYS.SDO_PC_BLK_TYPE PIPELINED;

  PROCEDURE DROP_DEPENDENCIES(basetable varchar2, col varchar2);

  FUNCTION TO_GEOMETRY(pts BLOB, num_pts NUMBER, 
                       pc_tot_dim NUMBER, srid NUMBER default null,
                       blk_domain mdsys.sdo_orgscl_type default null,
                       get_ids  NUMBER default NULL)     
    RETURN MDSYS.SDO_GEOMETRY DETERMINISTIC PARALLEL_ENABLE;
                                                                                 
  FUNCTION GET_PT_IDs(pts BLOB, num_pts NUMBER, 
                      pc_tot_dim NUMBER, 
                      blk_domain mdsys.sdo_orgscl_type default null)     
    RETURN MDSYS.SDO_NUMBER_ARRAY DETERMINISTIC;

  function tin_to_pc(
    tin       MDSYS.sdo_tin,
    basetable varchar2,
    basecol   varchar2,
    blktable  varchar2)
      return MDSYS.sdo_pc deterministic;

/*
PROCEDURE POPULATE_FROM_CLSTPCDATA(inp MDSYS.sdo_pc, clstpcdatatbl varchar2);                                                                          
  
  PROCEDURE WRITE_CLSTPCDATA(inp MDSYS.sdo_pc, clstpcdatatbl varchar2);
*/


/*
  -- works as read if qry is null
  FUNCTION CLIP_PCAttrs(inp MDSYS.sdo_pc, qry MDSYS.sdo_geometry, blkno number default null)
    RETURN ANYDATASET;
  FUNCTION CLIP_PC_PtIds(inp MDSYS.sdo_pc, qry MDSYS.sdo_geometry, blkno number default null)
    RETURN ANYDATASET;
*/

  function clip_pc_into_tin(
    pc_inp            MDSYS.sdo_pc,
    pc_ind_dim_qry    MDSYS.sdo_geometry,
    pc_other_dim_qry  MDSYS.sdo_mbr,
    pc_qry_min_res    number,
    pc_qry_max_res    number,
    tin_basetable     varchar2,
    tin_basecol       varchar2,
    tin_blktable      varchar2,
    tin_ptn_params    varchar2     default null,
    tin_break_lines   MDSYS.sdo_geometry default null,
    tin_stop_lines    MDSYS.sdo_geometry default null,
    tin_void_rgns     MDSYS.sdo_geometry default null,
    tin_clstpcdatatbl varchar2     default null,
    pc_blkno          number       default null)
      return mdsys.sdo_tin;

  function create_contour_geometries(
    pc                  MDSYS.sdo_pc,
    sampling_resolution number,
    elevations          MDSYS.sdo_ordinate_array,
    region              MDSYS.sdo_geometry)
      return MDSYS.sdo_geometry_array;

  function create_contour_geometries(
    pc_flat_table       varchar2,
    srid                number,
    sampling_resolution number,
    elevations          MDSYS.sdo_ordinate_array,
    region              MDSYS.sdo_geometry)
      return MDSYS.sdo_geometry_array;

  function create_contour_geometries(
    pc                  MDSYS.sdo_pc,
    sampling_resolution number,
    elevations_min      number,
    elevations_interval number,
    elevations_max      number,
    region              MDSYS.sdo_geometry)
      return MDSYS.sdo_geometry_array;

  function create_contour_geometries(
    pc_flat_table       varchar2,
    srid                number,
    sampling_resolution number,
    elevations_min      number,
    elevations_interval number,
    elevations_max      number,
    region              MDSYS.sdo_geometry)
      return MDSYS.sdo_geometry_array;

  /* This procedure takes a 2D Geometry as input and generates
     two SQL strings which can be appended to a user cursor in the
     where clause. */
  PROCEDURE get_tile_sql (
    geometry     IN  MDSYS.SDO_GEOMETRY,
    sql_interior OUT VARCHAR2,
    sql_boundary OUT VARCHAR2,
    tolerance    IN  NUMBER DEFAULT 0.0000005,
    sdo_level    in  NUMBER DEFAULT 2,
    sdo_ntiles   in  NUMBER DEFAULT 100);

  /* This function returns a REFCURSOR which can be queried by the client
     side code to fetch rows from the base table. The columns are the columns
     of the base table: only numberic and VARCHAR columns allowed.
     Query Geometry is used to clip the points from the base table.
     First two colums should be X and Y. SRID is assumed to be the same
     as the one used in Geometry.  */
  FUNCTION clip_pc_flat (geometry IN MDSYS.SDO_GEOMETRY, 
                         table_name IN VARCHAR2, 
                         tolerance IN NUMBER,
                         other_dim_qry  IN MDSYS.SDO_MBR DEFAULT NULL,
                         mask IN VARCHAR2 DEFAULT 'ANYINTERACT')

  RETURN SYS_REFCURSOR;

  /* Same as the above, but return the actual SQL statement instead of the 
     cursor. Users can add additional predicates or select list and 
     execute it. */
  FUNCTION clip_pc_flat_string (geometry IN MDSYS.SDO_GEOMETRY,
                                table_name IN VARCHAR2,
                                tolerance IN NUMBER,
                                other_dim_qry  IN MDSYS.SDO_MBR DEFAULT NULL,
                                mask IN VARCHAR2 DEFAULT 'ANYINTERACT',
                                dop IN INTEGER DEFAULT NULL,
                                sdo_level in number DEFAULT 4,
                                sdo_ntiles in number DEFAULT 100)
  RETURN clob;

  procedure import_las(
    source_las_directory_obj_name varchar2,
    source_las_file               varchar2,
    source_las_file_id            varchar2,
    target_table                  varchar2,
    add_columns                   number);

  function hilbert_xy2d(
    n number,
    x number,
    y number)
      return number DETERMINISTIC PARALLEL_ENABLE;

  function get_blocking_method(
    inp MDSYS.sdo_pc)
      return varchar2;

  function getNthHilbertValue(
    table_name varchar2,
    n          number)
      return number;

  function merge_cells(
    cell_mbrs MDSYS.sdo_ordinate_array)
      return MDSYS.sdo_ordinate_array;

  function sort_block_by_dist(
    num_points number,
    points     blob,
    center     MDSYS.sdo_geometry)
      return blob;

  function sdo_pc_nn(
    pc     MDSYS.sdo_pc,
    center MDSYS.sdo_geometry,
    n      number)
      return blob;

  PROCEDURE CLIP_PC_get_min_height(
    inp           in  MDSYS.sdo_pc,
    ind_dim_qry   in  MDSYS.sdo_geometry,
    other_dim_qry in  MDSYS.sdo_mbr,
    qry_min_res   in  number,
    qry_max_res   in  number,
    blkno         in  number default null,
    min_height    out number,
    max_height    out number,
    avg_height    out number,
    median_height out number);

  procedure hilbert_blocking(
    obj_id           number,
    srid             number,
    input_table_name varchar2,
    block_table_name varchar2,
    block_size       number);

  TYPE simple_blk_ref IS RECORD (
    blk_id        number,
    ind_dim_qry   MDSYS.sdo_geometry,
    other_dim_qry MDSYS.sdo_mbr);

  TYPE simple_block_ref_cursor IS REF CURSOR RETURN simple_blk_ref;

  TYPE sdo_id_and_xy IS RECORD (
    id rowid,
    x  number,
    y  number);

  TYPE sdo_id_and_xy_cursor IS REF CURSOR RETURN sdo_id_and_xy;

  TYPE sdo_id_and_hilbert is record (
    rid     varchar2(24),
    hilbert number);

  TYPE sdo_id_and_hilbert_tab is TABLE OF sdo_id_and_hilbert;

  TYPE sdo_id_and_hilbert_cursor IS REF CURSOR RETURN sdo_id_and_hilbert;

  TYPE sdo_id_and_hbp is record (
    rid     varchar2(24),
    hilbert number,
    blk_id  number,
    pt_id   number,
    p       number);

  TYPE sdo_id_and_hbp_tab is TABLE OF sdo_id_and_hbp;

  TYPE simple_pt_row IS RECORD (
    obj_id  number,
    blk_id  number,
    pt_id   number,
    val_d1  number,
    val_d2  number,
    val_d3  number,
    val_d4  number,
    val_d5  number,
    val_d6  number,
    val_d7  number,
    val_d8  number,
    val_d9  number,
    val_d10 number,
    val_d11 number,
    val_d12 number);

  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 simple_pt_tab IS TABLE OF simple_pt_row;

  type point_neighbor_pair_tab is table of point_neighbor_pair_row;

  type neighbor_type is record (
    pt     MDSYS.sdo_geometry,
    blk_id number,
    pt_id  number);

  type neighbor_tab_type is table of neighbor_type;

  type bd_array is varray(10) of binary_double;
  type bi_array is varray(10) of binary_integer;

  procedure parse_32bit_ints(
    field    in     raw,
    pos0     in     binary_integer,
    interval in     binary_integer,
    vals     in out bi_array);

  procedure parse_64bit_doubles(
    field    in     raw,
    pos0     in     binary_integer,
    interval in     binary_integer,
    vals     in out bd_array);

  procedure parse_32bit_ints(
    field in     raw,
    pos0  in     binary_integer,
    val0     out binary_integer,
    pos1  in     binary_integer,
    val1     out binary_integer,
    pos2  in     binary_integer,
    val2     out binary_integer,
    pos3  in     binary_integer,
    val3     out binary_integer,
    pos4  in     binary_integer,
    val4     out binary_integer,
    pos5  in     binary_integer,
    val5     out binary_integer,
    pos6  in     binary_integer,
    val6     out binary_integer,
    pos7  in     binary_integer,
    val7     out binary_integer,
    pos8  in     binary_integer,
    val8     out binary_integer,
    pos9  in     binary_integer,
    val9     out binary_integer);

  procedure parse_64bit_doubles(
    field in     raw,
    pos0  in     binary_integer,
    val0     out binary_double,
    pos1  in     binary_integer,
    val1     out binary_double,
    pos2  in     binary_integer,
    val2     out binary_double,
    pos3  in     binary_integer,
    val3     out binary_double,
    pos4  in     binary_integer,
    val4     out binary_double,
    pos5  in     binary_integer,
    val5     out binary_double,
    pos6  in     binary_integer,
    val6     out binary_double,
    pos7  in     binary_integer,
    val7     out binary_double,
    pos8  in     binary_integer,
    val8     out binary_double,
    pos9  in     binary_integer,
    val9     out binary_double);

  procedure get_hilbert(
    x0 in  binary_integer,
    y0 in  binary_integer,
    d0 out binary_integer,
    x1 in  binary_integer,
    y1 in  binary_integer,
    d1 out binary_integer,
    x2 in  binary_integer,
    y2 in  binary_integer,
    d2 out binary_integer,
    x3 in  binary_integer,
    y3 in  binary_integer,
    d3 out binary_integer,
    x4 in  binary_integer,
    y4 in  binary_integer,
    d4 out binary_integer,
    x5 in  binary_integer,
    y5 in  binary_integer,
    d5 out binary_integer,
    x6 in  binary_integer,
    y6 in  binary_integer,
    d6 out binary_integer,
    x7 in  binary_integer,
    y7 in  binary_integer,
    d7 out binary_integer,
    x8 in  binary_integer,
    y8 in  binary_integer,
    d8 out binary_integer,
    x9 in  binary_integer,
    y9 in  binary_integer,
    d9 out binary_integer);

  function get_hilbert(
    x0 in  binary_integer,
    y0 in  binary_integer) return binary_integer deterministic;

  function clip_pc_parallel(
    blocks        sdo_pc_pkg.simple_block_ref_cursor,
    inp           MDSYS.sdo_pc)
      return sdo_pc_pkg.simple_pt_tab
        pipelined
        parallel_enable(
          partition blocks by hash (blk_id));

  function generate_hilbert_vals(
    id_xy sdo_id_and_xy_cursor)
      return sdo_id_and_hilbert_tab
        pipelined
        parallel_enable(
          partition id_xy by any);

  function generate_hbp_vals(
    id_hilbert   sdo_id_and_hilbert_cursor,
    blk_capacity number)
      return sdo_id_and_hbp_tab
        pipelined;

  function sdo_pc_nn_for_each(
    blocks      sdo_pc_pkg.simple_block_ref_cursor,
    pc          MDSYS.sdo_pc,
    n           number,
    max_dist    number,
    qry_min_res number,
    qry_max_res number)
      return sdo_pc_pkg.point_neighbor_pair_tab
        pipelined
        parallel_enable(
          partition blocks by hash (blk_id));

  function project_ords_onto_pc(
    ordinates2d MDSYS.sdo_ordinate_array,
    mbr         MDSYS.sdo_geometry,
    pc          MDSYS.sdo_pc)
      return MDSYS.sdo_ordinate_array
        deterministic parallel_enable;

  function project_ords_onto_pc(
    ordinates2d  MDSYS.sdo_ordinate_array,
    buffer_width number,
    pc           MDSYS.sdo_pc,
    tol          number)
      return MDSYS.sdo_ordinate_array
        deterministic parallel_enable;

  function project_ords_onto_pc(
    ordinates2d MDSYS.sdo_ordinate_array,
    mbr         MDSYS.sdo_geometry,
    pc_table    varchar2)
      return MDSYS.sdo_ordinate_array
        deterministic parallel_enable;

  function project_ords_onto_pc(
    ordinates2d  MDSYS.sdo_ordinate_array,
    buffer_width number,
    pc_table     varchar2,
    tol          number)
      return MDSYS.sdo_ordinate_array
        deterministic parallel_enable;

  procedure create_pc_hybrid(
    source_table_name     varchar2,
    data_table_name_base  varchar2,
    add_to_existing_table number default 0,
    srid                  number default null);

  procedure 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);

  procedure drop_pc_hybrid(
    data_table_name_base varchar2);

  procedure add_hilbert_to_flat_model_pc(
    source_table_name    varchar2,
    data_table_name_base varchar2);

  procedure clip_pc_into_table(
    pc_table          varchar2,
    pc_column         varchar2,
    id_column         varchar2,
    id                varchar2,
    query             MDSYS.sdo_geometry,
    where_clause      varchar2,
    result_table_name varchar2,
    lods              MDSYS.sdo_lods_type)
      PARALLEL_ENABLE;

  procedure clip_pc_into_table_hybrid(
    data_table_name_base varchar2,
    query                mdsys.sdo_geometry,
    where_clause         varchar2,
    result_table_name    varchar2,
    lods                 mdsys.sdo_lods_type)
      PARALLEL_ENABLE;

  procedure clip_pc_into_las(
    pc_table          in  varchar2,
    pc_column         in  varchar2,
    id_column         in  varchar2,
    id                in  varchar2,
    query             in  mdsys.sdo_geometry,
    where_clause      in  varchar2,
    result_table_name in  varchar2,
    result_las        out blob,
    lods              in  mdsys.sdo_lods_type,
    lasScaleX         in  number,
    lasScaleY         in  number,
    lasScaleZ         in  number,
    lasOffsetX        in  number,
    lasOffsetY        in  number,
    lasOffsetZ        in  number,
    lasMinX           in  number,
    lasMaxX           in  number,
    lasMinY           in  number,
    lasMaxY           in  number,
    lasMinZ           in  number,
    lasMaxZ           in  number);

  procedure clip_pc_into_las(
    pc_table          in  varchar2,
    pc_column         in  varchar2,
    id_column         in  varchar2,
    id                in  varchar2,
    query             in  mdsys.sdo_geometry,
    where_clause      in  varchar2,
    result_table_name in  varchar2,
    result_las        out blob,
    lods              in  mdsys.sdo_lods_type,
    lasScaleX         in  number,
    lasScaleY         in  number,
    lasScaleZ         in  number,
    lasOffsetX        in  number,
    lasOffsetY        in  number,
    lasOffsetZ        in  number);

  procedure clip_pc_into_las(
    pc_table          in  varchar2,
    pc_column         in  varchar2,
    id_column         in  varchar2,
    id                in  varchar2,
    query             in  mdsys.sdo_geometry,
    where_clause      in  varchar2,
    result_table_name in  varchar2,
    result_las        out blob,
    lods              in  mdsys.sdo_lods_type,
    lasScaleX         in  number,
    lasScaleY         in  number,
    lasScaleZ         in  number);

  procedure clip_pc_into_las(
    pc_table          in  varchar2,
    pc_column         in  varchar2,
    id_column         in  varchar2,
    id                in  varchar2,
    query             in  mdsys.sdo_geometry,
    where_clause      in  varchar2,
    result_table_name in  varchar2,
    result_las        out blob,
    lods              in  mdsys.sdo_lods_type);

  function get_pc_model(
    pc mdsys.sdo_pc)
      return varchar2;

  procedure create_contour_geometries(
    pc                  mdsys.sdo_pc,
    sampling_resolution number,
    elevations          mdsys.sdo_number_array,
    region              mdsys.sdo_geometry,
    contour_table       varchar2);

  procedure create_contour_geometries(
    pc                  mdsys.sdo_pc,
    sampling_resolution number,
    elevations_min      number,
    elevations_interval number,
    elevations_max      number,
    region              mdsys.sdo_geometry,
    contour_table       varchar2);

  procedure pc2dem(
    geor              in out mdsys.sdo_georaster,
    pc                in     mdsys.sdo_pc,
    mbr2d             in     mdsys.sdo_geometry,
    resolution        in     number,
    blockSize         in     number);

  procedure pc2dem(
    geor              in out mdsys.sdo_georaster,
    pc                in     mdsys.sdo_pc,
    mbr2d             in     mdsys.sdo_geometry,
    resolutionVert    in     number,
    resolutionHoriz   in     number,
    blockSizeVert     in     number,
    blockSizeHoriz    in     number);
END sdo_pc_pkg;
/
show errors;
GRANT EXECUTE ON mdsys.sdo_pc_pkg TO public; 
create or replace public synonym sdo_pc_pkg for mdsys.sdo_pc_pkg;

--GRANT EXECUTE ON sdo_tin_table TO public; 

grant execute on mdsys.sdo_lods_type to public;
create or replace public synonym sdo_lods_type for mdsys.sdo_lods_type;

Rem ********************************************************************
Rem #16473696: Indicate Oracle-Supplied object
@?/rdbms/admin/sqlsessend.sql
Rem ********************************************************************


OHA YOOOO