TABLE OF CONTENTS


OBJECT TYPE/T_VERTEXLIST [ Types ]

[ Top ] [ Types ]

NAME

    T_VERTEXLIST -- Object type representing a collection of T_VERTICES

DESCRIPTION

    An object type that represents an array/collection of T_VERTICES.
    Includes Methods on that type.

NOTES

    This also implements JTS's OffsetSegmentString.java.
    A dynamic list of the vertices in a constructed offset curve.
    Automatically removes adjacent vertices which are closer than a given tolerance.

AUTHOR

    Simon Greener

HISTORY

    Martin Davis  - 2016 - Java coding.
    Simon Greener - Jul 2019 - extended T_Vertices to include methods derived from OffsetSegmentString.java

COPYRIGHT

    (c) 2005-2019 by TheSpatialDBAdvisor/Simon Greener

T_VERTEXLIST/addOrdinates [ Methods ]

[ Top ] [ T_VERTEXLIST ] [ Methods ]

NAME

    addOrdinates -- Allows an sdo_ordinate_array to be directly added to the underlying list.

SYNOPSIS

    Member Procedure addOrdinates( 
           SELF        IN OUT NOCOPY T_VERTEXLIST,
           p_dim       in integer,
           p_lrs_dim   in integer,
           p_ordinates in mdsys.sdo_ordinate_array ),

DESCRIPTION

    This procedure allows for an sdo_ordinate_array to be directly added to the underlying list.
    XYZM ordinates are all supported.
    All vertices created adopt the SRID of the VertexList's first vertex.
    Coordinate dimensionality and lrs dim should be same as underling VertexList.

ARGUMENTS

    p_dim                  (integer) -- The coordinate dimension used to interpret the numbers in the sdo_ordinate_array.
    p_lrs_dim              (integer) -- The dimension for the LRS ordiante.
    p_ordinates (sdo_ordinate_array) -- The sdo_ordinate_array to be added to the vertex list.

EXAMPLE

    -- Add sdo_ordinate_array to existing vertex list.
    set serveroutput on size unlimited
    declare
      v_vList    t_vertexlist;
      v_vertices &&INSTALL_SCHEMA..T_Vertices;
      v_tgeom    t_geometry;
    begin
      v_vList    := T_VERTEXLIST(p_segment => &&INSTALL_SCHEMA..T_SEGMENT(p_line=>sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,1,1))));
      dbms_output.put_line('Before v_vList.count=' || v_vList.vertexList.count);
      v_vList.addOrdinates(
               p_dim     => 2,
               p_lrs_dim => 0,
               p_ordinates => sdo_ordinate_array(1,1,2,2,3,3)
       );
       dbms_output.put_line('After v_VList.count=' || v_vList.vertexList.count);
    end;
    /
    show errors
    
    Before v_vList.count=2
    After v_VList.count=5
    
    PL/SQL procedure successfully completed.

AUTHOR

    Simon Greener

HISTORY

    Simon Greener - August 2019 - Original coding.

COPYRIGHT

    (c) 2005-2019 by TheSpatialDBAdvisor/Simon Greener

T_VERTEXLIST/addVertices [ Methods ]

[ Top ] [ T_VERTEXLIST ] [ Methods ]

NAME

    addVertices -- Enables a collection of vertices to be added to the underlying list.

SYNOPSIS

    Member Procedure addVertices(SELF       IN OUT NOCOPY &&INSTALL_SCHEMA..T_VERTEXLIST,
                                 p_vertices in &&INSTALL_SCHEMA..T_Vertices, 
                                 isForward  in ineger default 1)

DESCRIPTION

    This procedure allows for a collection of T_VERTEX objects to be added to the underlying list.
    XYZM ordinates are all supported.
    isForward is 1, the two vertex lists are merged with no tests are carried out to see if first vertex in list to be added is same as end vertex in underlying list.
    However, when isForward is 2 the lists are merged with a test for duplicate coordinates.
    If isForward is 2, p_vertices is reversed before appending with a duplicate test carried out.

ARGUMENTS

    p_vertices (&&INSTALL_SCHEMA..T_Vertices) -- Collection of t_vertex object to add.
    isForward           (boolean) -- Flag indicating whether vertices should be added in reverse order.

EXAMPLE

    -- Add vertices of two linestrings with no test for duplicates
    set serveroutput on size unlimited
    declare
      v_vList    t_vertexlist;
      v_vertices &&INSTALL_SCHEMA..T_Vertices;
      v_tgeom    t_geometry;
    begin
      v_vList    := T_VERTEXLIST(p_segment => &&INSTALL_SCHEMA..T_SEGMENT(p_line=>sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,1,1))));
      dbms_output.put_line('Before v_vList.count=' || v_vList.vertexList.count);
      v_tgeom    := t_geometry(sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(1,1,2,2,3,3)));
      select v.ST_Self() as vertex
        bulk collect into v_vertices
        from table(v_tgeom.ST_Vertices()) v;
       v_vList.addVertices(p_vertices  => v_vertices,
                           p_isForward => 1);
       dbms_output.put_line('After v_VList.count=' || v_vList.vertexList.count);
    end;
    /
    show errors
    
    Before v_vList.count=2
    After v_VList.count=5
    
    PL/SQL procedure successfully completed.

    -- Now add vertices of two linestrings testing for duplicates
    set serveroutput on size unlimited
    declare
      v_vList    t_vertexlist;
      v_vertices &&INSTALL_SCHEMA..T_Vertices;
      v_tgeom    t_geometry;
    begin
      v_vList    := T_VERTEXLIST(p_segment => &&INSTALL_SCHEMA..T_SEGMENT(p_line=>sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(0,0,1,1))));
      dbms_output.put_line('Before v_vList.count=' || v_vList.vertexList.count);
      v_tgeom    := t_geometry(sdo_geometry(2002,null,null,sdo_elem_info_array(1,2,1),sdo_ordinate_array(1,1,2,2,3,3)));
      select v.ST_Self() as vertex
        bulk collect into v_vertices
        from table(v_tgeom.ST_Vertices()) v;
       v_vList.addVertices(p_vertices  => v_vertices,
                           p_isForward => 2);
       dbms_output.put_line('After v_VList.count=' || v_vList.vertexList.count);
    end;
    /
    show errors
    
    Before v_vList.count=2
    After v_VList.count=4
    
    PL/SQL procedure successfully completed.

AUTHOR

    Simon Greener

HISTORY

    Simon Greener - July 2019 - Original coding.

COPYRIGHT

    (c) 2005-2019 by TheSpatialDBAdvisor/Simon Greener

T_VERTEXLIST/ATTRIBUTES(T_VERTEXLIST) [ Variables ]

[ Top ] [ T_VERTEXLIST ] [ Variables ]

ATTRIBUTES

    seglist is a table of t_segment
    minimimVertexDistance is min distance between two vertices. If less then any vertex is not added.

SOURCE

  vertexList            &&INSTALL_SCHEMA..T_VERTICES,
  minimimVertexDistance Number,
  dPrecision            integer,

T_VERTEXLIST/CONSTRUCTORS(T_VERTEXE) [ Methods ]

[ Top ] [ T_VERTEXLIST ] [ Methods ]

NAME

    A collection of T_VERTEXLIST Constructors.

SOURCE

  -- Useful as an "Empty" constructor.
  Constructor Function T_VERTEXLIST(SELF IN OUT NOCOPY T_VERTEXLIST)
                Return Self As Result,

  Constructor Function T_VERTEXLIST(SELF     IN OUT NOCOPY T_VERTEXLIST,
                                    p_vertex in &&INSTALL_SCHEMA..T_VERTEX)
                Return Self As Result,

  Constructor Function T_VERTEXLIST(SELF        IN OUT NOCOPY T_VERTEXLIST,
                                    p_segment   in &&INSTALL_SCHEMA..T_SEGMENT)
                Return Self As Result,

  Constructor Function T_VERTEXLIST(SELF        IN OUT NOCOPY T_VERTEXLIST,
                                    p_line      in mdsys.sdo_geometry)
                Return Self As Result,