Go to content Go to navigation and search

Home

Current Oracle Spatial Blog Articles

    SC4O Test log
    The Frontage Problem: Creating references from land parcel street frontage boundary to point in street
    Scheduling the Export of Spatial Data in Oracle to a Shapefile each night
    Oracle CENTROID package update
    Book: "Applying And Extending Oracle Spatial"
    Create Polygons and Linestrings From Bearings And Distances (COGO)
    Simple Implementation Of Travelling Salesman Problem
    ST_Densify for Object PLSQL
    PLSQL ST_AsEWKT and ST_FromWKT Functions For Oracle (any version)
    Useful Package of Wrapper Functions for Sdo_Util.AffineTransforms
    GeoRaptor 4.x Update 2 (Project has Stalled)
    Tip: Drop that Spatial Index!
    Convert Single Geometry to Multi-part Geometry in Oracle Spatial
    Optimized Rectangle to 5 Point Polygon
    Centroid Package now supports Y ordinate seeding
    Convert GeoJSON document to Sdo_Geometry objects
    Function That Returns a Compass Point From a Whole Circle Bearing
    Playing around with Centroids by using different seed values
    Simple Oracle C Sprintf or Java String.format
    Some Oriented Point Functions
    Extracting Inner Rings Changed Ordinate Ordering: A Trap For Players Who Don't Read Documentation!
    PLS-00306: wrong number or types of arguments in call to 'SDO_GEOMETRY'
    Converting Google Earth Formatted Longitude/Latitude points to decimal degrees
    Oracle Business Intelligence Warehousing and Analytics - Spatial Summit
    How far inside, is inside? Measuring actual distance.
    Noding and building a polygon from single, overlapping linestrings
    Analyzing Spatial Query Performance Improvements in Oracle Spatial and Graph 12c Through Cross-Vendor Comparison
    ST_VertexN / ST_PointN - Extracting a specific point from any geometry
    Convert Single Point stored in SDO_ORDINATES to SDO_POINT_TYPE
    Aggregate APPEND Islands and XOR polygons
    Circular Arcs in Geodetic Polygons
    Some SDO_GEOMETRY/DIMINFO handling functions
    Changing all DIMINFO sdo_tolerance values for all metadata records in one go.
    Building Polygons from Incomplete Linestrings using ST_PolygonBuilder
    Computing Cardinal Directions to nearby geometries
    Intersecting two aggregated polygon layers with SC4O
    Spatial and Oracle 12c
    Update Triggers and SDO_GEOMETRY Equality
    Duplicate Geometry data and Data Models
    CENTROID package update
    How to calculate cumulative length of a linestring
    Compute Location from known Lat/Long point using delta easting and northing in miles
    SDO_AGGR_SET_UNION
    Sorting SDO_GEOMETRY data using the ORDER BY clause of a SELECT statement
    Creating linestrings from points
    Rounding Coordinates or Ordinates in SDO_GEOMETRY
    Effects of Sdo_Geometry Ordinate Precision on Performance
    Effects of Sdo_Geometry Ordinate Precision on Storage
    The Spatial filtering of geometries: The effect of tolerances on relationships
    Application of Delaunay Triangulation and Inverse Distance Weighting (IDW) in Oracle for Soils Interpolation
    Selecting all SDO_GTYPE values for all tables/sdo_geometry columns in a schema
    CENTROID package - Tips for Use
    Announcing the Spatial Companion For Oracle (SC4O)
    Filtering Rings (Oracle Spatial)
    Splitting a polygon using one or more linestrings
    isValid, isSimple, Dimension and CoordDim methods for SDO_Geometry
    Line Merging or Collecting lines together: ST_LineMerger
    ST_DeleteVertex for Oracle SDO_Geometry based on Jaspa/JTS
    3D/4D and SRID aware Conversion functions for SDO_Geometry: WKT and EWKT
    Topological vs Non-Topological Simplification/Generalization of Aggregated Area Geometies in Oracle
    Filtering very short linestrings via bitmap function index
    CENTROID For Oracle
    Gridding a sdo_geometry line/polygon object (Oracle)
    Finding centre and radius of a circular geometry
    Constraining geometry type for sdo_geometry column in a table.
    CASE Statements and SDO_GEOMETRY
    The Power of Constraints and Indexes for Spatial Constraints: stopping duplicate points
    Replacement for SDO_GEOM.RELATE - ST_Relate based on JTS
    Changing Oracle Spatial Index Parameters on existing index
    Writing Excel Spreadsheets files from within the Oracle database using Java and PL/SQL
    Writing xSV (eg csv) files from within the Oracle database using Java and PL/SQL
    A simple spike finder for Spatial/Locator
    JTS Java class compilation for 11g and above
    Random Spatial Search Procedure
    Geometry Snapping using JTS in Oracle
    Exposing JTS's MinimumBoundingCircle functionality
    Exposing JTS's Densifier functionality
    Using JTS's Comparison Functions - HausdorffSimilarityMeasure & AreaSimilarityMeasure with SDO_GEOMETRY
    Free JTS-based Area/Length Functions
    Handy way of systematically fixing polygon geometries with 13349 and other errors
    Standalone CENTROID package now available for download
    Free Union, Intersection, Xor and Difference Functions for Oracle Locator - Part 4 Processing Geodetic data
    Configurable Buffer: JTS and Oracle
    Free Union, Intersection, Xor and Difference Functions for Oracle Locator - Part 3
    Free Union, Intersection, Xor and Difference Functions for Oracle Locator - Part 2
    Free Union, Intersection, Xor and Difference Functions for Oracle Locator - Part 1
    Building Lines into Polygons in Oracle Locator / Spatial
    Finding Intersection Points between Line and Polygon
    SDO2GeoJSON
    Free version of sdo_length
    Alternative to my SQL based GetNumRings function
    External Tables and SDO_Geometry data.
    layer_gtype keyword issue when indexing linear data on 11g
    String Tokenizer for Oracle
    Free Aggregate Method for Concatenating 2D Lines in Oracle Locator 10g
    Reducing 5 Vertex Polygon to Optimized Rectangle
    Square Buffer
    Converting decimal seconds to string
    SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT - 13356 Issues
    Valid conversion unit values for Oracle sdo_geom.sdo_length()
    Removing Steps in Gridded Vector Data - SmoothGrid for Oracle
    Oracle Spatial DISJOINT search/filtering
    Creating SDO_Geometry from geometric data recorded in the columns of a table
    Concave Hull Geometries in Oracle 11gR2
    Projecting SDO_GEOM_METADATA DIMINFO XY ordinates
    Instantiating MDSYS.VERTEX_TYPE
    New PL/SQL Packages - Rotate oriented point
    GeoRaptor Development Team
    Fast Refreshing Materialized View Containing SDO_GEOMETRY and SDO_GEOM.SDO_AREA function
    Performance of PL/SQL Functions using SQL vs Pure Code
    Implementing the BEST VicGrid Projection in Oracle 10gR2
    Making Sdo Geometry Metadata Update Generic Code
    ORA-13011 errors when using SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT()
    Extract Polygons from Compound Polygon
    Detecting sdo_geometries with compound (3-point Arcs) segments
    GEOMETRY_COLUMNS for Oracle Spatial
    Convert GML to SDO_Geometry in Oracle 10gR2
    Spatial Sorting of Data via Morton Key
    Swapping Ordinates in an SDO_GEOMETRY object
    New To_3D Function
    Extend (Reduce/Contract/Skrink) Function for Oracle
    Loading and Processing GPX 1.1 files using Oracle XMLDB
    Loading Spatial Data from an external CSV file in Oracle
    Calling the Oracle Spatial shapefile loader from within the Oracle database itself
    Implementing SDO_VertexUpdate/ST_VertexUpdate for Oracle
    Implementing SDO_RemovePoint/ST_RemovePoint for Oracle
    Implementing SDO_AddPoint/ST_AddPoint for Oracle
    ESRI ArcSDE Exverted and Inverted Polygons and Oracle Spatial
    Funky Fix Ordinates By Formula
    Implementing a SetPoint/ST_SetPoint function in Oracle
    Implementing an ST_SnapToGrid (PostGIS) function for Oracle Spatial
    Generating random point data
    Implementing an Affine/ST_Affine function for Oracle Spatial
    Implementing a Scale/ST_Scale function for Oracle Spatial
    Implementing a Parallel/ST_Parallel function for linestring data for Oracle Spatial
    Implementing a Rotate/ST_Rotate function for Oracle Spatial
    Limiting table list returned when connecting to Oracle Database using ODBC
    ST_Azimuth for Oracle: AKA Cogo.Bearing
    Implementing a Translate/ST_Translate/Move function for Oracle Spatial
    Elem_Info_Array Processing: An alternative to SDO_UTIL.GetNumRings and querying SDO_ELEM_INFO itself
    Minumum Bounding Rectangle (MBR) Object Type for Oracle
    How to extract elements from the result of an sdo_intersection of two polygons.
    How to restart a database after failed parameter change
    Fixing failed spatial indexes after import using data pump
    generate_series: an Oracle implementation in light of SQL Design Patterns
    Multi-Centroid Shootout
    Oracle Spatial Centroid Shootout
    On the use of ROLLUP in Oracle SELECT statements
    Surrounding Parcels
    Spatial Pipelining
    Using Oracle's SDO_NN Operator - Some examples
    Converting distances and units of measure in Oracle Locator
    Split Sdo_Geometry Linestring at a known point
    Forcing an Sdo_Geometry object to contain only points, lines or areas
    Unpacking USER_SDO_GEOM_METADATA's DIMINFO structure using SQL
    Generating multi-points from single point records in Oracle Spatial
    Object Tables of Sdo_Geometry
    Oracle Locator vs Oracle Spatial: A Reflection on Oracle Licensing of the SDO_GEOM Package
    FAST REFRESHing of Oracle Materialized Views containing Sdo_Geometry columns
    Australian MGA/AMG Zone Calculation from geographic (longitude/latitude) data
    Loading Shapefiles (SHP) into Oracle Spatial
    Oracle Spatial Mapping and Map Rendering Performance Tips
    The significance of sdo_lb/sdo_ub in USER_SDO_GEOM_METDATA: Do I need it?
    Oracle Spatial Forum - Melbourne April 2007
    Layer_GTypes for spatial indexes
    Oracle's SQL/MM Compliant Types
    Tips and Tricks

Search

    Browse

RSS / Atom

Email me

textpattern

Creative Commons License
All Blog Articles, Data Models and Free Source Code by Simon Greener, The SpatialDB Advisor is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.

SC4O Test log

Thursday October 04 2018 at 18:43

Keywordslog SC4O testing JTS JASPA
Summary

Log from SC4O testing.

Here is the latest test log for the SC4O (not Exporter) JTS/JASPA functions:

  1. SQL*Plus: Release 12.1.0.1.0 Production ON Thu Oct 4 18:31:08 2018
  2. Copyright (c) 1982, 2013, Oracle.  ALL rights reserved.
  3. LAST Successful login TIME: Thu Oct 04 2018 18:30:53 +10:00
  4. Connected TO:
  5. Oracle DATABASE 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production
  6. WITH the Partitioning, OLAP, Advanced Analytics AND REAL Application Testing options
  7. SQL> -- ***********************************************************************************
  8. SQL> -- ST_DelaunayTriangles
  9. SQL> -- ***********************************************************************************
  10. SQL> -- Method 1: From MultiPoint
  11. SQL> --
  12. SQL> WITH DATA AS (
  13. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromEWKT('SRID=32615;MULTIPOINT ((755441.542258283 3678850.38541675 9.14999999944121), (755438.136705691 3679051.52458636 9.86999999918044), (755642.681431119 3678853.79096725 10.0000000018626), (755639.275877972 3679054.93014137 10), (755635.870328471 3679256.06930606 8.62999999988824), (755843.82060051 3678857.19651868 10), (755840.415056435 3679058.33568674 9.99999999906868), (755837.009506021 3679259.47485623 10), (755959.586342714 3679438.15319976 5.94999999925494), (756044.959776444 3678860.6020602 9.95000000018626), (756041.554231838 3679061.74123334 10.0000000009313), (756038.148680523 3679262.88040789 9.26999999862164))')
  14. SQL>      AS points
  15. SQL>   FROM dual
  16. SQL> )
  17. SQL> SELECT &&DefaultSchema..SC4O.ST_DelaunayTriangles(a.points,0.05,10) AS triangles
  18. SQL>   FROM DATA a;
  19. TRIANGLES(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  20. ---------------------------------------------------------------------------------------------------
  21. SDO_GEOMETRY(3004, 32615, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 13, 1003, 1, 25, 1003, 1, 37, 1003, 1, 49, 1003, 1, 61, 1003, 1, 73, 1003, 1, 85, 1003, 1, 97, 1003, 1, 109, 1003, 1, 121, 1003, 1, 133, 1003, 1, 145, 1003, 1), SDO_ORDINATE_ARRAY(755438.137, 3679051.52, 9.87, 755441.542, 3678850.39, 9.15, 755639.276, 3679054.93, 10, 755438.137, 3679051.52, 9.87, 755438.137, 3679051.52, 9.87, 755639.276, 3679054.93, 10, 755635.87, 3679256.07, 8.63, 755438.137, 3679051.52, 9.87, 755635.87, 3679256.07, 8.63, 755639.276, 3679054.93, 10, 755837.01, 3679259.47, 10, 755635.87, 3679256.07, 8.63, 755635.87, 3679256.07, 8.63, 755837.01, 3679259.47, 10, 755959.586, 3679438.15, 5.95, 755635.87, 3679256.07, 8.63, 755959.586, 3679438.15, 5.95, 755837.01, 3679259.47, 10, 756038.149, 3679262.88, 9.27, 755959.586, 3679438.15, 5.95, 756038.149, 3679262.88, 9.27, 755837.01, 3679259.47, 10, 755840.415, 3679058.34, 10, 756038.149, 3679262.88, 9.27, 756038.149, 3679262.88, 9.27, 755840.415, 3679058.34, 10, 756041.554, 3679061.74, 10, 756038.149, 3679262.88, 9.27, 755642.681, 3678853.79, 10, 755843.821, 3678857.2, 10, 755840.415, 3679058.34, 10, 755642.681, 3678853.79, 10, 755642.681, 3678853.79, 10, 755840.415, 3679058.34, 10, 755639.276, 3679054.93, 10, 755642.681, 3678853.79, 10, 755642.681, 3678853.79, 10, 755639.276, 3679054.93, 10, 755441.542, 3678850.39, 9.15, 755642.681, 3678853.79, 10, 755639.276, 3679054.93, 10, 755840.415, 3679058.34, 10, 755837.01, 3679259.47, 10, 755639.276, 3679054.93, 10, 755840.415, 3679058.34, 10, 755843.821, 3678857.2, 10, 756041.554, 3679061.74, 10, 755840.415, 3679058.34, 10, 756041.554, 3679061.74, 10, 755843.821, 3678857.2, 10, 756044.96, 3678860.6, 9.95, 756041.554, 3679061.74, 10))
  22. SQL> -- Method 2: COLLECT from set of points
  23. SQL> --
  24. SQL> WITH DATA AS (
  25. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755959.58634214,3679438.15320103,5.95),NULL,NULL) AS point FROM dual UNION ALL
  26. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756038.14867762,3679262.88040938,9.27),NULL,NULL) AS point FROM dual UNION ALL
  27. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755837.009504873,3679259.47485944,10),NULL,NULL) AS point FROM dual UNION ALL
  28. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755635.870332123,3679256.0693095,8.63),NULL,NULL) AS point FROM dual UNION ALL
  29. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755438.136709314,3679051.52458769,9.87),NULL,NULL) AS point FROM dual UNION ALL
  30. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755639.275882053,3679054.93013763,10),NULL,NULL) AS point FROM dual UNION ALL
  31. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755840.415054801,3679058.33568758,10),NULL,NULL) AS point FROM dual UNION ALL
  32. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756041.554227549,3679061.74123752,10),NULL,NULL) AS point FROM dual UNION ALL
  33. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756044.959777476,3678860.60206565,9.95),NULL,NULL) AS point FROM dual UNION ALL
  34. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755843.820604722,3678857.19651571,10),NULL,NULL) AS point FROM dual UNION ALL
  35. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755642.681431989,3678853.79096576,10),NULL,NULL) AS point FROM dual UNION ALL
  36. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755441.54225925,3678850.38541582,9.15),NULL,NULL) AS point FROM dual
  37. SQL> )
  38. SQL> SELECT &&DefaultSchema..SC4O.ST_DelaunayTriangles(CAST(collect(a.point) AS mdsys.sdo_geometry_array),0.05,10) AS triangles
  39. SQL>   FROM DATA a;
  40. TRIANGLES(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  41. ---------------------------------------------------------------------------------------------------
  42. SDO_GEOMETRY(3004, 32615, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 13, 1003, 1, 25, 1003, 1, 37, 1003, 1, 49, 1003, 1, 61, 1003, 1, 73, 1003, 1, 85, 1003, 1, 97, 1003, 1, 109, 1003, 1, 121, 1003, 1, 133, 1003, 1, 145, 1003, 1), SDO_ORDINATE_ARRAY(755438.137, 3679051.52, 9.87, 755441.542, 3678850.39, 9.15, 755639.276, 3679054.93, 10, 755438.137, 3679051.52, 9.87, 755438.137, 3679051.52, 9.87, 755639.276, 3679054.93, 10, 755635.87, 3679256.07, 8.63, 755438.137, 3679051.52, 9.87, 755635.87, 3679256.07, 8.63, 755639.276, 3679054.93, 10, 755840.415, 3679058.34, 10, 755635.87, 3679256.07, 8.63, 755635.87, 3679256.07, 8.63, 755840.415, 3679058.34, 10, 755837.01, 3679259.47, 10, 755635.87, 3679256.07, 8.63, 755635.87, 3679256.07, 8.63, 755837.01, 3679259.47, 10, 755959.586, 3679438.15, 5.95, 755635.87, 3679256.07, 8.63, 755959.586, 3679438.15, 5.95, 755837.01, 3679259.47, 10, 756038.149, 3679262.88, 9.27, 755959.586, 3679438.15, 5.95, 756038.149, 3679262.88, 9.27, 755837.01, 3679259.47, 10, 755840.415, 3679058.34, 10, 756038.149, 3679262.88, 9.27, 756038.149, 3679262.88, 9.27, 755840.415, 3679058.34, 10, 756041.554, 3679061.74, 10, 756038.149, 3679262.88, 9.27, 755642.681, 3678853.79, 10, 755843.821, 3678857.2, 10, 755639.276, 3679054.93, 10, 755642.681, 3678853.79, 10, 755642.681, 3678853.79, 10, 755639.276, 3679054.93, 10, 755441.542, 3678850.39, 9.15, 755642.681, 3678853.79, 10, 755639.276, 3679054.93, 10, 755843.821, 3678857.2, 10, 755840.415, 3679058.34, 10, 755639.276, 3679054.93, 10, 755840.415, 3679058.34, 10, 755843.821, 3678857.2, 10, 756044.96, 3678860.6, 9.95, 755840.415, 3679058.34, 10, 755840.415, 3679058.34, 10, 756044.96, 3678860.6, 9.95, 756041.554, 3679061.74, 10, 755840.415, 3679058.34, 10))
  43. SQL> -- Method 3: RefCursor
  44. SQL> --
  45. SQL> DECLARE
  46. SQL>   mycur  &&DefaultSchema..SC4O.refcur_t;
  47. SQL>   v_geom mdsys.sdo_geometry;
  48. SQL> BEGIN
  49. SQL>   OPEN mycur FOR
  50. SQL>   WITH DATA AS (
  51. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755959.58634214,3679438.15320103,5.95),NULL,NULL) AS point FROM dual UNION ALL
  52. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756038.14867762,3679262.88040938,9.27),NULL,NULL) AS point FROM dual UNION ALL
  53. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755837.009504873,3679259.47485944,10),NULL,NULL) AS point FROM dual UNION ALL
  54. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755635.870332123,3679256.0693095,8.63),NULL,NULL) AS point FROM dual UNION ALL
  55. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755438.136709314,3679051.52458769,9.87),NULL,NULL) AS point FROM dual UNION ALL
  56. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755639.275882053,3679054.93013763,10),NULL,NULL) AS point FROM dual UNION ALL
  57. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755840.415054801,3679058.33568758,10),NULL,NULL) AS point FROM dual UNION ALL
  58. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756041.554227549,3679061.74123752,10),NULL,NULL) AS point FROM dual UNION ALL
  59. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756044.959777476,3678860.60206565,9.95),NULL,NULL) AS point FROM dual UNION ALL
  60. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755843.820604722,3678857.19651571,10),NULL,NULL) AS point FROM dual UNION ALL
  61. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755642.681431989,3678853.79096576,10),NULL,NULL) AS point FROM dual UNION ALL
  62. SQL>     SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755441.54225925,3678850.38541582,9.15),NULL,NULL) AS point FROM dual
  63. SQL>   )
  64. SQL>   SELECT point FROM DATA a;
  65. SQL>   v_geom := &&DefaultSchema..SC4O.ST_DelaunayTriangles(mycur,0.05,10);
  66. SQL>   dbms_output.put_line('Delaunay: ' || &&DefaultSchema..SC4O.ST_AsEWKT(v_geom));
  67. SQL>   Close myCur;
  68. SQL> END;
  69. SQL> /
  70. Delaunay: SRID=32615;GEOMETRYCOLLECTION (POLYGON ((755438.136709314 3679051.52458769 9.87, 755441.54225925 3678850.38541582 9.15, 755639.275882053 3679054.93013763 10, 755438.136709314 3679051.52458769 9.87)), POLYGON ((755438.136709314 3679051.52458769 9.87, 755639.275882053 3679054.93013763 10, 755635.870332123 3679256.0693095 8.63, 755438.136709314 3679051.52458769 9.87)), POLYGON ((755635.870332123 3679256.0693095 8.63, 755639.275882053 3679054.93013763 10, 755840.415054801 3679058.33568758 10, 755635.870332123 3679256.0693095 8.63)), POLYGON ((755635.870332123 3679256.0693095 8.63, 755840.415054801 3679058.33568758 10, 755837.009504873 3679259.47485944 10, 755635.870332123 3679256.0693095 8.63)), POLYGON ((755635.870332123 3679256.0693095 8.63, 755837.009504873 3679259.47485944 10, 755959.58634214 3679438.15320103 5.95, 755635.870332123 3679256.0693095 8.63)), POLYGON ((755959.58634214 3679438.15320103 5.95, 755837.009504873 3679259.47485944 10, 756038.14867762 3679262.88040938 9.27, 755959.58634214 3679438.15320103 5.95)), POLYGON ((756038.14867762 3679262.88040938 9.27, 755837.009504873 3679259.47485944 10, 755840.415054801 3679058.33568758 10, 756038.14867762 3679262.88040938 9.27)), POLYGON ((756038.14867762 3679262.88040938 9.27, 755840.415054801 3679058.33568758 10, 756041.554227549 3679061.74123752 10, 756038.14867762 3679262.88040938 9.27)), POLYGON ((755642.681431989 3678853.79096576 10, 755843.820604722 3678857.19651571 10, 755639.275882053 3679054.93013763 10, 755642.681431989 3678853.79096576 10)), POLYGON ((755642.681431989 3678853.79096576 10, 755639.275882053 3679054.93013763 10, 755441.54225925 3678850.38541582 9.15, 755642.681431989 3678853.79096576 10)), POLYGON ((755639.275882053 3679054.93013763 10, 755843.820604722 3678857.19651571 10, 755840.415054801 3679058.33568758 10, 755639.275882053 3679054.93013763 10)), POLYGON ((755840.415054801 3679058.33568758 10, 755843.820604722 3678857.19651571 10, 756044.959777476 3678860.60206565 9.95, 755840.415054801 3679058.33568758 10)), POLYGON ((755840.415054801 3679058.33568758 10, 756044.959777476 3678860.60206565 9.95, 756041.554227549 3679061.74123752 10, 755840.415054801 3679058.33568758 10)))
  71. PL/SQL PROCEDURE successfully completed.
  72. SQL> -- ***********************************************************************************
  73. SQL> -- ST_Voronoi
  74. SQL> -- ***********************************************************************************
  75. SQL> -- Method 1: From MultiPoint
  76. SQL> --
  77. SQL> WITH DATA AS (
  78. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromEWKT('SRID=32615;MULTIPOINT ((755441.542258283 3678850.38541675 9.14999999944121), (755438.136705691 3679051.52458636 9.86999999918044), (755642.681431119 3678853.79096725 10.0000000018626), (755639.275877972 3679054.93014137 10), (755635.870328471 3679256.06930606 8.62999999988824), (755843.82060051 3678857.19651868 10), (755840.415056435 3679058.33568674 9.99999999906868), (755837.009506021 3679259.47485623 10), (755959.586342714 3679438.15319976 5.94999999925494), (756044.959776444 3678860.6020602 9.95000000018626), (756041.554231838 3679061.74123334 10.0000000009313), (756038.148680523 3679262.88040789 9.26999999862164))')
  79. SQL>     AS points
  80. SQL>   FROM dual
  81. SQL> )
  82. SQL> SELECT &&DefaultSchema..SC4O.ST_Voronoi(a.points,NULL,0.05,10) AS triangles
  83. SQL>   FROM DATA a;
  84. TRIANGLES(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  85. ---------------------------------------------------------------------------------------------------
  86. SDO_GEOMETRY(2004, 32615, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 11, 1003, 1, 25, 1003, 1, 37, 1003, 1, 51, 1003, 1, 63, 1003, 1, 77, 1003, 1, 89, 1003, 1, 101, 1003, 1, 113, 1003, 1, 125, 1003, 1, 137, 1003, 1), SDO_ORDINATE_ARRAY(754831.314, 3678940.65, 755540.409, 3678952.66, 755537.004, 3679153.8, 754831.314, 3679835.99, 754831.314, 3678940.65, 755540.409, 3678952.66, 755540.409, 3678952.66, 755741.548, 3678956.06, 755738.143, 3679157.2, 755738.143, 3679157.2, 755537.004, 3679153.8, 755540.409, 3678952.66, 754831.314, 3678243.56, 755552.415, 3678243.56, 755540.409, 3678952.66, 755540.409, 3678952.66, 754831.314, 3678940.65, 754831.314, 3678243.56, 754831.314, 3679835.99, 755537.004, 3679153.8, 755738.143, 3679157.2, 755732.978, 3679462.23, 755405.193, 3680044.98, 754831.314, 3680044.98, 754831.314, 3679835.99, 755738.143, 3679157.2, 755939.282, 3679160.61, 755936.539, 3679322.58, 755732.978, 3679462.23, 755738.143, 3679157.2, 755738.143, 3679157.2, 755741.548, 3678956.06, 755741.548, 3678956.06, 755942.687, 3678959.47, 755939.282, 3679160.61, 755939.282, 3679160.61, 755738.143, 3679157.2, 755741.548, 3678956.06, 755753.612, 3678243.56, 755741.548, 3678956.06, 755741.548, 3678956.06, 755540.409, 3678952.66, 755552.415, 3678243.56, 755753.612, 3678243.56, 756651.783, 3679643.17, 755936.539, 3679322.58, 755939.282, 3679160.61, 755939.282, 3679160.61, 756651.783, 3679172.67, 756651.783, 3679643.17, 755405.193, 3680044.98, 755732.978, 3679462.23, 755936.539, 3679322.58, 756651.783, 3679643.17, 756651.783, 3680044.98, 755405.193, 3680044.98, 755954.809, 3678243.56, 755942.687, 3678959.47, 755942.687, 3678959.47, 755741.548, 3678956.06, 755753.612, 3678243.56, 755954.809, 3678243.56, 756651.783, 3679172.67, 755939.282, 3679160.61, 755942.687, 3678959.47, 755942.687, 3678959.47, 756651.783, 3678971.47, 756651.783, 3679172.67, 756651.783, 3678971.47, 755942.687, 3678959.47, 755954.809, 3678243.56, 756651.783, 3678243.56, 756651.783, 3678971.47))
  87. SQL> -- Method 2: COLLECT from single points
  88. SQL> --
  89. SQL> WITH DATA AS (
  90. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755959.58634214,3679438.15320103,5.95),NULL,NULL) AS point FROM dual UNION ALL
  91. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756038.14867762,3679262.88040938,9.27),NULL,NULL) AS point FROM dual UNION ALL
  92. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755837.009504873,3679259.47485944,10),NULL,NULL) AS point FROM dual UNION ALL
  93. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755635.870332123,3679256.0693095,8.63),NULL,NULL) AS point FROM dual UNION ALL
  94. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755438.136709314,3679051.52458769,9.87),NULL,NULL) AS point FROM dual UNION ALL
  95. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755639.275882053,3679054.93013763,10),NULL,NULL) AS point FROM dual UNION ALL
  96. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755840.415054801,3679058.33568758,10),NULL,NULL) AS point FROM dual UNION ALL
  97. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756041.554227549,3679061.74123752,10),NULL,NULL) AS point FROM dual UNION ALL
  98. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756044.959777476,3678860.60206565,9.95),NULL,NULL) AS point FROM dual UNION ALL
  99. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755843.820604722,3678857.19651571,10),NULL,NULL) AS point FROM dual UNION ALL
  100. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755642.681431989,3678853.79096576,10),NULL,NULL) AS point FROM dual UNION ALL
  101. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755441.54225925,3678850.38541582,9.15),NULL,NULL) AS point FROM dual
  102. SQL> )
  103. SQL> SELECT &&DefaultSchema..SC4O.ST_Voronoi(CAST(collect(a.point) AS mdsys.sdo_geometry_array),NULL,0.05,10) AS triangles
  104. SQL>   FROM DATA a;
  105. TRIANGLES(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  106. ---------------------------------------------------------------------------------------------------
  107. SDO_GEOMETRY(2004, 32615, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 11, 1003, 1, 25, 1003, 1, 37, 1003, 1, 53, 1003, 1, 69, 1003, 1, 79, 1003, 1, 89, 1003, 1, 101, 1003, 1, 113, 1003, 1, 125, 1003, 1, 135, 1003, 1), SDO_ORDINATE_ARRAY(753010.844, 3678909.83, 755540.409, 3678952.66, 755537.004, 3679153.8, 753010.844, 3681595.84, 753010.844, 3678909.83, 755540.409, 3678952.66, 755540.409, 3678952.66, 755741.548, 3678956.06, 755741.548, 3678956.06, 755738.143, 3679157.2, 755537.004, 3679153.8, 755540.409, 3678952.66, 753010.844, 3676499.31, 755581.947, 3676499.31, 755540.409, 3678952.66, 755540.409, 3678952.66, 753010.844, 3678909.83, 753010.844, 3676499.31, 753010.844, 3681595.84, 755537.004, 3679153.8, 755738.143, 3679157.2, 755738.143, 3679157.2, 755732.978, 3679462.23, 754424.088, 3681789.22, 753010.844, 3681789.22, 753010.844, 3681595.84, 755738.143, 3679157.2, 755741.548, 3678956.06, 755942.687, 3678959.47, 755942.687, 3678959.47, 755939.282, 3679160.61, 755939.282, 3679160.61, 755738.143, 3679157.2, 755738.143, 3679157.2, 755783.144, 3676499.31, 755741.548, 3678956.06, 755540.409, 3678952.66, 755581.947, 3676499.31, 755783.144, 3676499.31, 755738.143, 3679157.2, 755939.282, 3679160.61, 755936.539, 3679322.58, 755732.978, 3679462.23, 755738.143, 3679157.2, 758472.252, 3680459.16, 755936.539, 3679322.58, 755939.282, 3679160.61, 755939.282, 3679160.61, 758472.252, 3679203.49, 758472.252, 3680459.16, 754424.088, 3681789.22, 755732.978, 3679462.23, 755936.539, 3679322.58, 758472.252, 3680459.16, 758472.252, 3681789.22, 754424.088, 3681789.22, 755984.341, 3676499.31, 755942.687, 3678959.47, 755741.548, 3678956.06, 755741.548, 3678956.06, 755783.144, 3676499.31, 755984.341, 3676499.31, 758472.252, 3679203.49, 755939.282, 3679160.61, 755942.687, 3678959.47, 758472.252, 3679002.3, 758472.252, 3679203.49, 758472.252, 3679002.3, 755942.687, 3678959.47, 755942.687, 3678959.47, 755984.341, 3676499.31, 758472.252, 3676499.31, 758472.252, 3679002.3))
  108. SQL> -- Method 3: From Refcursor containing individual points
  109. SQL> --
  110. SQL> DECLARE
  111. SQL>   mycur  &&DefaultSchema..SC4O.refcur_t;
  112. SQL>   v_geom mdsys.sdo_geometry;
  113. SQL> BEGIN
  114. SQL>   OPEN mycur FOR
  115. SQL> WITH DATA AS (
  116. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755959.58634214,3679438.15320103,5.95),NULL,NULL) AS point FROM dual UNION ALL
  117. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756038.14867762,3679262.88040938,9.27),NULL,NULL) AS point FROM dual UNION ALL
  118. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755837.009504873,3679259.47485944,10),NULL,NULL) AS point FROM dual UNION ALL
  119. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755635.870332123,3679256.0693095,8.63),NULL,NULL) AS point FROM dual UNION ALL
  120. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755438.136709314,3679051.52458769,9.87),NULL,NULL) AS point FROM dual UNION ALL
  121. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755639.275882053,3679054.93013763,10),NULL,NULL) AS point FROM dual UNION ALL
  122. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755840.415054801,3679058.33568758,10),NULL,NULL) AS point FROM dual UNION ALL
  123. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756041.554227549,3679061.74123752,10),NULL,NULL) AS point FROM dual UNION ALL
  124. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(756044.959777476,3678860.60206565,9.95),NULL,NULL) AS point FROM dual UNION ALL
  125. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755843.820604722,3678857.19651571,10),NULL,NULL) AS point FROM dual UNION ALL
  126. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755642.681431989,3678853.79096576,10),NULL,NULL) AS point FROM dual UNION ALL
  127. SQL>   SELECT MDSYS.SDO_GEOMETRY(3001,32615,MDSYS.SDO_POINT_TYPE(755441.54225925,3678850.38541582,9.15),NULL,NULL) AS point FROM dual
  128. SQL> )
  129. SQL> SELECT point
  130. SQL>   FROM DATA a;
  131. SQL>   v_geom := &&DefaultSchema..SC4O.ST_Voronoi(mycur,NULL,0.05,10);
  132. SQL>   dbms_output.put_line('Voronoi: ' || &&DefaultSchema..SC4O.ST_AsEWKT(v_geom));
  133. SQL>   Close myCur;
  134. SQL> END;
  135. SQL> /
  136. Voronoi: SRID=32615;GEOMETRYCOLLECTION (POLYGON ((753010.844436666 3678909.82893043, 755540.409070646 3678952.65777673, 755537.003520721 3679153.79694859, 753010.844436666 3681595.83790209, 753010.844436666 3678909.82893043)), POLYGON ((755540.409070646 3678952.65777673, 755540.409070657 3678952.65777672, 755741.548243388 3678956.06332667, 755741.548243394 3678956.06332668, 755738.14269346 3679157.20249854, 755537.003520721 3679153.79694859, 755540.409070646 3678952.65777673)), POLYGON ((753010.844436666 3676499.31427498, 755581.947393112 3676499.31427498, 755540.409070657 3678952.65777672, 755540.409070646 3678952.65777673, 753010.844436666 3678909.82893043, 753010.844436666 3676499.31427498)), POLYGON ((753010.844436666 3681595.83790209, 755537.003520721 3679153.79694859, 755738.14269346 3679157.20249854, 755738.14269346 3679157.20249854, 755732.978235974 3679462.22656952, 754424.08773671 3681789.22434187, 753010.844436666 3681789.22434187, 753010.844436666 3681595.83790209)), POLYGON ((755738.14269346 3679157.20249854, 755741.548243394 3678956.06332668, 755942.687416137 3678959.46887661, 755942.687416137 3678959.46887661, 755939.281866213 3679160.60804848, 755939.281866209 3679160.60804848, 755738.14269346 3679157.20249854, 755738.14269346 3679157.20249854)), POLYGON ((755783.14422639 3676499.31427498, 755741.548243388 3678956.06332667, 755540.409070657 3678952.65777672, 755581.947393112 3676499.31427498, 755783.14422639 3676499.31427498)), POLYGON ((755738.14269346 3679157.20249854, 755939.281866209 3679160.60804848, 755936.539475839 3679322.57957733, 755732.978235974 3679462.22656952, 755738.14269346 3679157.20249854)), POLYGON ((758472.252050124 3680459.1593058, 755936.539475839 3679322.57957733, 755939.281866209 3679160.60804848, 755939.281866213 3679160.60804848, 758472.252050124 3679203.49455512, 758472.252050124 3680459.1593058)), POLYGON ((754424.08773671 3681789.22434187, 755732.978235974 3679462.22656952, 755936.539475839 3679322.57957733, 758472.252050124 3680459.1593058, 758472.252050124 3681789.22434187, 754424.08773671 3681789.22434187)), POLYGON ((755984.341059436 3676499.31427498, 755942.687416137 3678959.46887661, 755741.548243394 3678956.06332668, 755741.548243388 3678956.06332667, 755783.14422639 3676499.31427498, 755984.341059436 3676499.31427498)), POLYGON ((758472.252050124 3679203.49455512, 755939.281866213 3679160.60804848, 755942.687416137 3678959.46887661, 758472.252050124 3679002.2977228, 758472.252050124 3679203.49455512)), POLYGON ((758472.252050124 3679002.2977228, 755942.687416137 3678959.46887661, 755942.687416137 3678959.46887661, 755984.341059436 3676499.31427498, 758472.252050124 3676499.31427498, 758472.252050124 3679002.2977228)))
  137. PL/SQL PROCEDURE successfully completed.
  138. SQL> -- ***********************************************************************************
  139. SQL> -- ST_Densify, ST_DouglasPeuckerSimplify and ST_TopologyPreservingSimplify
  140. SQL> -- ***********************************************************************************
  141. SQL> --
  142. SQL> SELECT &&DefaultSchema..SC4O.ST_Densify(sdo_geometry('LINESTRING(0 0, 10 10, 10 0, 20 10)',0),2,3) AS dGeom
  143. SQL>   FROM dual;
  144. DGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  145. ---------------------------------------------------------------------------------------------------
  146. SDO_GEOMETRY(2002, 0, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(0, 0, 2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 10, 7.5, 10, 5, 10, 2.5, 10, 0, 12, 2, 14, 4, 16, 6, 18, 8, 20, 10))
  147. SQL> SELECT &&DefaultSchema..SC4O.ST_Densify(sdo_geometry(2003,NULL,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)),2,3) AS dGeom
  148. SQL>   FROM dual;
  149. DGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  150. ---------------------------------------------------------------------------------------------------
  151. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(1, 1, 3.25, 1, 5.5, 1, 7.75, 1, 10, 1, 10, 3.25, 10, 5.5, 10, 7.75, 10, 10, 7.75, 10, 5.5, 10, 3.25, 10, 1, 10, 1, 7.75, 1, 5.5, 1, 3.25, 1, 1))
  152. SQL> WITH dense_data AS (
  153. SQL>   SELECT MDSYS.SDO_GEOMETRY(2002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),
  154. SQL>         MDSYS.SDO_ORDINATE_ARRAY(191060.535, 576339.562, 186987.358, 581000.620, 184257.910, 575373.757, 181570.453, 577305.367, 180562.657, 571300.581, 175901.599, 580958.628, 174263.930, 574575.919, 171282.533, 575037.825, 170694.652, 572266.385)) AS geom,
  155. SQL>        &&defaultSchema..SC4O.ST_Densify (
  156. SQL>     p_geom        => MDSYS.SDO_GEOMETRY(2002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1),
  157. SQL> MDSYS.SDO_ORDINATE_ARRAY(191060.535, 576339.562, 186987.358, 581000.620, 184257.910, 575373.757, 181570.453, 577305.367, 180562.657, 571300.581, 175901.599, 580958.628, 174263.930, 574575.919, 171282.533, 575037.825, 170694.652, 572266.385)),
  158. SQL>     p_precision       => 2,
  159. SQL>     p_distanceTolerance => 90
  160. SQL>        ) AS dense_geom
  161. SQL>   FROM dual
  162. SQL> )
  163. SQL>         SELECT CAST('Original'   AS varchar2(20)) AS text, sdo_util.GetNumVertices(geom) AS numVertices      FROM dense_data
  164. SQL> UNION ALL SELECT CAST('Densify'    AS varchar2(20)) AS text, sdo_util.GetNumVertices(dense_geom) AS numVertices FROM dense_data
  165. SQL> UNION ALL SELECT CAST('DouglasPeucker' AS varchar2(20)) AS text, sdo_util.GetNumVertices(&&defaultSchema..SC4O.ST_DouglasPeuckerSimplify(a.geom,5000,3))     AS numVertices FROM dense_data a
  166. SQL> UNION ALL SELECT CAST('TopologyPreserving' AS varchar2(20)) AS text, sdo_util.GetNumVertices(&&defaultSchema..SC4O.ST_TopologyPreservingSimplify(a.geom,5000,3)) AS numVertices FROM dense_data a;
  167. TEXT         NUMVERTICES
  168. -------------------- -----------
  169. Original           9
  170. Densify          505
  171. DouglasPeucker           5
  172. TopologyPreserving         5
  173. SQL> -- ***********************************************************************************
  174. SQL> -- ST_InsertVertex
  175. SQL> -- ***********************************************************************************
  176. SQL> -- ST_InsertVertex testing
  177. SQL> -- Test update of SDO_POINT structure with valid ordinate values
  178. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(mdsys.SDO_Geometry(3001,NULL,sdo_point_type(1.12345,2.43534,3.43513),NULL,NULL),
  179. SQL>             1,
  180. SQL>             mdsys.SDO_Geometry(3001,NULL,sdo_point_type(4.555,4.666,10),NULL,NULL) ) AS atStart,
  181. SQL>      &&DefaultSchema..SC4O.ST_InsertVertex(mdsys.SDO_Geometry(3001,NULL,sdo_point_type(1.12345,2.43534,3.43513),NULL,NULL),
  182. SQL>             -1,
  183. SQL>             mdsys.SDO_Geometry(3001,NULL,sdo_point_type(4.555,4.666,10),NULL,NULL) ) AS atEnd
  184. SQL>   FROM dual;
  185. ATSTART(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   ATEND(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  186. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  187. SDO_GEOMETRY(3005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(4.555, 4.666, 10, 1.12345, 2.43534, 3.43513))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      SDO_GEOMETRY(3005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(1.12345, 2.43534, 3.43513, 4.555, 4.666, 10))
  188. SQL> -- Add point at every position in MultiPoint
  189. SQL> WITH DATA AS (
  190. SQL>  SELECT mdsys.SDO_Geometry(2005,NULL,NULL,sdo_elem_info_array(1,1,3),sdo_ordinate_array(1.1,1.3,2.4,2.03,3.4,3.5)) AS mPoint
  191. SQL>    FROM dual
  192. SQL> )
  193. SQL> SELECT CASE WHEN b.posn =  SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 2 THEN -1 ELSE b.posn END AS posn,
  194. SQL>      &&DefaultSchema..SC4O.ST_InsertVertex(a.mPoint,
  195. SQL>             CASE WHEN b.posn =  SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 2 THEN -1 ELSE b.posn END, /* Means append to end of coordinates */
  196. SQL>             mdsys.SDO_Geometry(2001,NULL,sdo_point_type(4.5,4.6,NULL),NULL,NULL))
  197. SQL>     AS point
  198. SQL>   FROM DATA a,
  199. SQL>      (SELECT level AS posn
  200. SQL>         FROM dual
  201. SQL>         CONNECT BY level <= ( SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 2) ) b;
  202.       POSN POINT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  203. ---------- ---------------------------------------------------------------------------------------------------
  204.    1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 4), SDO_ORDINATE_ARRAY(4.5, 4.6, 1.1, 1.3, 2.4, 2.03, 3.4, 3.5))
  205.    2 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 4), SDO_ORDINATE_ARRAY(1.1, 1.3, 4.5, 4.6, 2.4, 2.03, 3.4, 3.5))
  206.    3 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 4), SDO_ORDINATE_ARRAY(1.1, 1.3, 2.4, 2.03, 4.5, 4.6, 3.4, 3.5))
  207.    4 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 4), SDO_ORDINATE_ARRAY(1.1, 1.3, 2.4, 2.03, 3.4, 3.5, 4.5, 4.6))
  208.   -1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 4), SDO_ORDINATE_ARRAY(1.1, 1.3, 2.4, 2.03, 3.4, 3.5, 4.5, 4.6))
  209. SQL> -- Test a linestring (should throw exception)
  210. SQL> WITH DATA AS (
  211. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(1.12345 1.3445,2.43534 2.03998398,3.43513 3.451245)') AS linestring,
  212. SQL>        mdsys.sdo_geometry('POINT(4.555 4.666)') AS point
  213. SQL>   FROM dual
  214. SQL> )
  215. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(a.linestring,a.point,NULL/*Will throw exception as null interpreted as 0*/).Get_WKT() AS geom
  216. SQL>   FROM DATA a;
  217. ERROR:
  218. ORA-29532: Java CALL TERMINATED BY uncaught Java exception: java.SQL.SQLException: The INDEX (0) must be -1 (LAST coord) OR greater OR equal than 1
  219. ORA-06512: at "GIS.SC4O", line 909
  220. no ROWS selected
  221. SQL> WITH DATA AS (
  222. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(1.12345 1.3445,2.43534 2.03998398,3.43513 3.451245)',NULL) AS linestring,
  223. SQL>        mdsys.sdo_geometry('POINT(4.555 4.666)',NULL) AS point
  224. SQL>   FROM dual
  225. SQL> )
  226. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(a.linestring,a.point,1/*Will insert at the beginning of the linestring*/).Get_WKT() AS geom
  227. SQL>   FROM DATA a;
  228. GEOM
  229. --------------------------------------------------------------------------------
  230. LINESTRING (4.555 4.666, 1.12345 1.3445, 2.43534 2.03998398, 3.43513 3.451245)
  231. SQL> -- Multilinestring
  232. SQL> WITH DATA AS (
  233. SQL>   SELECT mdsys.sdo_geometry('MULTILINESTRING ((1.1 1.1, 2.2 2.2, 3.3 3.3), (10.0 10.0, 10.0 20.0))') AS multilinestring,
  234. SQL>        mdsys.sdo_geometry('POINT(-1 -1)') AS point
  235. SQL>   FROM dual
  236. SQL> )
  237. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(a.multilinestring,1,a.point).Get_WKT() AS st_geom
  238. SQL>   FROM DATA a;
  239. ST_GEOM
  240. --------------------------------------------------------------------------------
  241. MULTILINESTRING ((-1.0 -1.0, 1.1 1.1, 2.2 2.2, 3.3 3.3), (10.0 10.0, 10.0 20.0))
  242. SQL> WITH DATA AS (
  243. SQL>   SELECT mdsys.sdo_geometry('MULTILINESTRING ((1.1 1.1, 2.2 2.2, 3.3 3.3), (10.0 10.0, 10.0 20.0))') AS multilinestring,
  244. SQL>        mdsys.sdo_geometry('POINT(4.4 4.4)') AS point
  245. SQL>   FROM dual
  246. SQL> )
  247. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(a.multilinestring,4,a.point).Get_WKT() AS geom
  248. SQL>   FROM DATA a;
  249. GEOM
  250. --------------------------------------------------------------------------------
  251. MULTILINESTRING ((1.1 1.1, 2.2 2.2, 3.3 3.3), (4.4 4.4, 10.0 10.0, 10.0 20.0))
  252. SQL> WITH DATA AS (
  253. SQL>   SELECT mdsys.sdo_geometry('MULTILINESTRING ((1.1 1.1, 2.2 2.2, 3.3 3.3), (10.0 10.0, 10.0 20.0))') AS multilinestring,
  254. SQL>        mdsys.sdo_geometry('POINT(30 30)') AS point
  255. SQL>   FROM dual
  256. SQL> )
  257. SQL> SELECT &&DefaultSchema..SC4O.ST_InsertVertex(a.multilinestring,-1,a.point).Get_WKT() AS st_geom
  258. SQL>   FROM DATA a;
  259. ST_GEOM
  260. --------------------------------------------------------------------------------
  261. MULTILINESTRING ((1.1 1.1, 2.2 2.2, 3.3 3.3), (10.0 10.0, 10.0 20.0, 30.0 30.0))
  262. SQL> -- ***********************************************************************************
  263. SQL> -- ST_UpdateVertex
  264. SQL> -- ***********************************************************************************
  265. SQL> -- ST_UpdatePoint all indexes
  266. SQL> WITH DATA AS (
  267. SQL>  SELECT mdsys.SDO_Geometry(2005,NULL,NULL,sdo_elem_info_array(1,1,3),sdo_ordinate_array(1.1,1.3,2.4,2.03,3.4,3.5)) AS mPoint
  268. SQL>    FROM dual
  269. SQL> )
  270. SQL> SELECT CASE WHEN b.posn =  SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 1 THEN -1 ELSE b.posn END AS posn,
  271. SQL>      &&DefaultSchema..SC4O.ST_UpdateVertex(a.mPoint,
  272. SQL>             CASE WHEN b.posn =  SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 1 THEN -1 ELSE b.posn END, /* Means append to end of coordinates */
  273. SQL>             mdsys.SDO_Geometry(2001,NULL,sdo_point_type(4.5,4.6,NULL),NULL,NULL))
  274. SQL>     AS point
  275. SQL>   FROM DATA a,
  276. SQL>      (SELECT level AS posn FROM dual CONNECT BY level <= ( SDO_UTIL.GETNUMVERTICES((SELECT mPoint FROM DATA)) + 1) ) b;
  277.       POSN POINT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  278. ---------- ---------------------------------------------------------------------------------------------------
  279.    1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 3), SDO_ORDINATE_ARRAY(4.5, 4.6, 2.4, 2.03, 3.4, 3.5))
  280.    2 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 3), SDO_ORDINATE_ARRAY(1.1, 1.3, 4.5, 4.6, 3.4, 3.5))
  281.    3 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 3), SDO_ORDINATE_ARRAY(1.1, 1.3, 2.4, 2.03, 4.5, 4.6))
  282.   -1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 3), SDO_ORDINATE_ARRAY(1.1, 1.3, 2.4, 2.03, 4.5, 4.6))
  283. SQL> -- ST_UpdateVertex from/to
  284. SQL> WITH DATA AS (
  285. SQL> SELECT mdsys.SDO_Geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(1.12345,1.3445,2.43534,2.03998398,3.43513,3.451245)) AS geom,
  286. SQL>      mdsys.SDO_Geometry(2001,NULL,sdo_point_type(3.43513,3.451245,NULL),NULL,NULL) AS fromPoint,
  287. SQL>      mdsys.SDO_Geometry(2001,NULL,sdo_point_type(4.555,4.666,NULL),NULL,NULL) AS toPoint
  288. SQL>   FROM dual
  289. SQL> )
  290. SQL> SELECT &&DefaultSchema..SC4O.ST_UpdateVertex(a.geom,a.fromPoint,a.toPoint) AS updated_geom
  291. SQL>   FROM DATA a,
  292. SQL> -- LinearRing single point update returns LINESTRING...
  293. SQL> WITH DATA AS (
  294. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(2 2, 2 7, 12 7, 12 2, 2 2)',NULL) AS the_line,
  295. SQL>        mdsys.SDO_Geometry(2001,NULL,sdo_point_type(1,1,NULL),NULL,NULL) AS the_point
  296. SQL>   FROM dual
  297. SQL> )
  298. SQL> SELECT &&DefaultSchema..SC4O.ST_UpdateVertex(b.the_line,1,b.the_point) AS setPointOfPoly
  299. SQL>   FROM DATA b;
  300. SETPOINTOFPOLY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  301. ---------------------------------------------------------------------------------------------------
  302. SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(1, 1, 2, 7, 12, 7, 12, 2, 2, 2))
  303. SQL> -- If point first or last in existing polygon it will fail ....
  304. SQL> WITH DATA AS (
  305. SQL>   SELECT mdsys.sdo_geometry('POLYGON((2 2, 2 7, 12 7, 12 2, 2 2))',NULL)      AS the_poly,
  306. SQL>        mdsys.SDO_Geometry(2001,NULL,sdo_point_type(1,1,NULL),NULL,NULL) AS the_point
  307. SQL>   FROM dual
  308. SQL> )
  309. SQL> SELECT &&DefaultSchema..SC4O.ST_UpdateVertex(b.the_poly,1,b.the_point) AS setPointOfPoly
  310. SQL>   FROM DATA b;
  311. SELECT GIS.SC4O.ST_UpdateVertex(b.the_poly,1,b.the_point) AS setPointOfPoly
  312.        *
  313. ERROR at line 6:
  314. ORA-29532: Java CALL TERMINATED BY uncaught Java exception: java.SQL.SQLException: LinearRings must be closed linestring
  315. ORA-06512: at "GIS.SC4O", line 882
  316. SQL> -- .... So up overloaded ST_UpdateVertex...
  317. SQL> WITH DATA AS (
  318. SQL>   SELECT mdsys.sdo_geometry('POLYGON((2 2, 2 7, 12 7, 12 2, 2 2))',NULL)  AS the_poly,
  319. SQL>        mdsys.SDO_Geometry(2001,NULL,sdo_point_type(2,2,NULL),NULL,NULL) AS from_Point,
  320. SQL>        mdsys.SDO_Geometry(2001,NULL,sdo_point_type(1,1,NULL),NULL,NULL) AS to_Point
  321. SQL>   FROM dual
  322. SQL> )
  323. SQL> SELECT &&DefaultSchema..SC4O.ST_UpdateVertex(b.the_poly,b.from_point,b.to_point) AS setPointOfPoly
  324. SQL>   FROM DATA b;
  325. SETPOINTOFPOLY(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  326. ---------------------------------------------------------------------------------------------------
  327. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(1, 1, 12, 2, 12, 7, 2, 7, 1, 1))
  328. SQL> -- ***********************************************************************************
  329. SQL> -- ST_DeleteVertex
  330. SQL> -- ***********************************************************************************
  331. SQL> -- Test single point
  332. SQL> SELECT &&DefaultSchema..SC4O.ST_DeleteVertex(mdsys.SDO_Geometry(3001,NULL,sdo_point_type(1.1,2.4,3.5),NULL,NULL),
  333. SQL>             1) AS point
  334. SQL>   FROM dual;
  335. POINT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  336. ---------------------------------------------------------------------------------------------------
  337. SDO_GEOMETRY(NULL, NULL, NULL, NULL, NULL)
  338. SQL> -- Remove vertices from multipoint
  339. SQL> WITH DATA AS (
  340. SQL>   SELECT mdsys.SDO_Geometry(2005,NULL,NULL,sdo_elem_info_array(1,1,3),sdo_ordinate_array(1.1,1.1,2.2,2.2,3.2,3.2)) AS geom
  341. SQL>   FROM dual
  342. SQL> )
  343. SQL> SELECT CASE WHEN LEVEL < 4 THEN LEVEL ELSE -1 END  AS point,
  344. SQL>      &&DefaultSchema..SC4O.ST_DeleteVertex(a.geom,CASE WHEN LEVEL < a.numVertices THEN LEVEL ELSE -1 END ) AS RemovedPoint
  345. SQL>   FROM (SELECT sdo_util.getNumVertices(b.geom)+1 AS numVertices, b.geom
  346. SQL>         FROM DATA b
  347. SQL>      ) a
  348. SQL>  CONNECT BY level <= a.numVertices;
  349.      POINT REMOVEDPOINT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  350. ---------- ---------------------------------------------------------------------------------------------------
  351.    1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(2.2, 2.2, 3.2, 3.2))
  352.    2 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(1.1, 1.1, 3.2, 3.2))
  353.    3 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(1.1, 1.1, 2.2, 2.2))
  354.   -1 SDO_GEOMETRY(2005, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(1.1, 1.1, 2.2, 2.2))
  355. SQL> -- Remove first coordinate in standard LineString
  356. SQL> WITH DATA AS (
  357. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(1.1 1.1,2.2 2.2,3.3 3.3)',NULL) AS linestring
  358. SQL>   FROM dual
  359. SQL> )
  360. SQL> SELECT &&DefaultSchema..SC4O.ST_DeleteVertex(a.linestring,1)/*.Get_WKT()*/ AS st_geom
  361. SQL>   FROM DATA a;
  362. ST_GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  363. ---------------------------------------------------------------------------------------------------
  364. SDO_GEOMETRY(2002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(2.2, 2.2, 3.3, 3.3))
  365. SQL> -- Try to remove a point from 2 point linestring (should get error)
  366. SQL> WITH DATA AS (
  367. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(1.1 1.1,2.2 2.2)',NULL) AS linestring
  368. SQL>   FROM dual
  369. SQL> )
  370. SQL> SELECT &&DefaultSchema..SC4O.ST_DeleteVertex(a.linestring,1).Get_WKT() AS st_geom
  371. SQL>   FROM DATA a;
  372. ERROR:
  373. ORA-29532: Java CALL TERMINATED BY uncaught Java exception: java.SQL.SQLException: Invalid NUMBER OF points IN LineString (found 1 - must be 0 OR >= 2)
  374. ORA-06512: at "GIS.SC4O", line 876
  375. no ROWS selected
  376. SQL> -- Try to remove 2 points from three point linestring (should get error)
  377. SQL> WITH DATA AS (
  378. SQL>   SELECT mdsys.sdo_geometry('LINESTRING(1.1 1.1,2.2 2.2,3.3 3.3)',NULL) AS linestring
  379. SQL>   FROM dual
  380. SQL> )
  381. SQL> SELECT &&DefaultSchema..SC4O.ST_DeleteVertex(
  382. SQL>    &&DefaultSchema..SC4O.ST_DeleteVertex(a.linestring,1),
  383. SQL>    1).Get_WKT() AS st_geom
  384. SQL>   FROM DATA a;
  385. ERROR:
  386. ORA-29532: Java CALL TERMINATED BY uncaught Java exception: java.SQL.SQLException: Invalid NUMBER OF points IN LineString (found 1 - must be 0 OR >= 2)
  387. ORA-06512: at "GIS.SC4O", line 876
  388. no ROWS selected
  389. SQL> -- Remove points 1-4 in a 3D LineString, note 0 and NULL denote is the last coord
  390. SQL> WITH DATA AS (
  391. SQL>   SELECT mdsys.SDO_Geometry(3002,NULL,NULL,
  392. SQL>         sdo_elem_info_array(1,2,1),
  393. SQL>         sdo_ordinate_array(1.1,1.1,9, 2.2,2.2,9, 3.3,3.3,9)) AS geom
  394. SQL>   FROM dual
  395. SQL> )
  396. SQL> SELECT CASE WHEN LEVEL < 4 THEN LEVEL ELSE -1 END  AS point,
  397. SQL>      &&DefaultSchema..SC4O.ST_DeleteVertex(
  398. SQL>           a.geom,
  399. SQL>           CASE WHEN LEVEL < a.numVertices THEN LEVEL ELSE -1 END
  400. SQL>      ) AS RemovedPoint
  401. SQL>   FROM (SELECT sdo_util.getNumVertices(b.geom)+1 AS numVertices, b.geom
  402. SQL>         FROM DATA b
  403. SQL>      ) a
  404. SQL>  CONNECT BY level <= a.numVertices;
  405.      POINT REMOVEDPOINT(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  406. ---------- ---------------------------------------------------------------------------------------------------
  407.    1 SDO_GEOMETRY(3002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(2.2, 2.2, 9, 3.3, 3.3, 9))
  408.    2 SDO_GEOMETRY(3002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(1.1, 1.1, 9, 3.3, 3.3, 9))
  409.    3 SDO_GEOMETRY(3002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(1.1, 1.1, 9, 2.2, 2.2, 9))
  410.   -1 SDO_GEOMETRY(3002, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(1.1, 1.1, 9, 2.2, 2.2, 9))
  411. SQL> -- Test single polygon
  412. SQL> SELECT NULL AS removedVertex, mdsys.sdo_geometry('POLYGON((2 2, 12 2, 12 7, 2 7, 2 2))',NULL) AS geom FROM dual
  413. SQL> UNION ALL SELECT 2 AS removedVertex, &&DefaultSchema..SC4O.ST_DeleteVertex(sdo_geometry('POLYGON((2 2, 12 2, 12 7, 2 7, 2 2))',NULL),2) AS geom FROM dual
  414. SQL> UNION ALL SELECT 3 AS removedVertex, &&DefaultSchema..SC4O.ST_DeleteVertex(sdo_geometry('POLYGON((2 2, 12 2, 12 7, 2 7, 2 2))',NULL),3) AS geom FROM dual;
  415. REMOVEDVERTEX GEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  416. ------------- ---------------------------------------------------------------------------------------------------
  417.         SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(2, 2, 12, 2, 12, 7, 2, 7, 2, 2))
  418.       2 SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(2, 2, 12, 7, 2, 7, 2, 2))
  419.       3 SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(2, 2, 12, 2, 2, 7, 2, 2))
  420. SQL> -- ***********************************************************************************
  421. SQL> -- ST_LineMerger
  422. SQL> -- ***********************************************************************************
  423. SQL> --
  424. SQL> WITH DATA AS (
  425. SQL>   SELECT CAST(multiset(
  426. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (220 160, 240 150, 270 150, 290 170)',NULL) AS geom FROM dual UNION ALL
  427. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (60 210, 30 190, 30 160)',NULL) AS geom FROM dual UNION ALL
  428. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (70 430, 100 430, 120 420, 140 400)',NULL) AS geom FROM dual UNION ALL
  429. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (160 310, 160 280, 160 250, 170 230)',NULL) AS geom FROM dual UNION ALL
  430. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (170 230, 180 210, 200 180, 220 160)',NULL) AS geom FROM dual UNION ALL
  431. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (30 160, 40 150, 70 150)',NULL) AS geom FROM dual UNION ALL
  432. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (160 310, 200 330, 220 340, 240 360)',NULL) AS geom FROM dual UNION ALL
  433. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (140 400, 150 370, 160 340, 160 310)',NULL) AS geom FROM dual UNION ALL
  434. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (160 310, 130 300, 100 290, 70 270)',NULL) AS geom FROM dual UNION ALL
  435. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (240 360, 260 390, 260 410, 250 430)',NULL) AS geom FROM dual UNION ALL
  436. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (70 150, 100 180, 100 200)',NULL) AS geom FROM dual UNION ALL
  437. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (70 270, 60 260, 50 240, 50 220, 60 210)',NULL) AS geom FROM dual UNION ALL
  438. SQL>       SELECT mdsys.sdo_geometry('LINESTRING (100 200, 90 210, 60 210)',NULL) AS geom FROM dual
  439. SQL>       ) AS mdsys.sdo_geometry_array) AS mLines
  440. SQL>   FROM dual
  441. SQL> )
  442. SQL> SELECT rownum AS Id, &&DefaultSchema..SC4O.st_linemerger(s.mlines,3)
  443. SQL>   FROM DATA s;
  444.   ID GIS.SC4O.ST_LINEMERGER(S.MLINES,3)(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  445. ---------- ---------------------------------------------------------------------------------------------------
  446.    1 SDO_GEOMETRY(2006, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1, 19, 2, 1, 35, 2, 1, 49, 2, 1, 63, 2, 1), SDO_ORDINATE_ARRAY(60, 210, 30, 190, 30, 160, 40, 150, 70, 150, 100, 180, 100, 200, 90, 210, 60, 210, 160, 310, 130, 300, 100, 290, 70, 270, 60, 260, 50, 240, 50, 220, 60, 210, 70, 430, 100, 430, 120, 420, 140, 400, 150, 370, 160, 340, 160, 310, 160, 310, 200, 330, 220, 340, 240, 360, 260, 390, 260, 410, 250, 430, 160, 310, 160, 280, 160, 250, 170, 230, 180, 210, 200, 180, 220, 160, 240, 150, 270, 150, 290, 170))
  447. SQL> -- ***********************************************************************************
  448. SQL> -- St_HausdorffSimilarityMeasure, St_AreaSimilarityMeasure
  449. SQL> -- ***********************************************************************************
  450. SQL> --
  451. SQL> WITH DATA AS (
  452. SQL>   SELECT MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(100.0, 100.0, 500.0, 500.0)) AS area1,
  453. SQL>        MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(100,100,500,100,500,500,100,500,100,100)) AS area2
  454. SQL>   FROM dual
  455. SQL> )
  456. SQL> SELECT &&DefaultSchema..SC4O.St_HausdorffSimilarityMeasure(area1,area2,3) AS HSM,
  457. SQL>      &&DefaultSchema..SC4O.St_AreaSimilarityMeasure(area1,area2,3)      AS ASM
  458. SQL>   FROM DATA;
  459.        HSM    ASM
  460. ---------- ----------
  461.    1      1
  462. SQL> WITH DATA AS (
  463. SQL>   SELECT MDSYS.SDO_GEOMETRY(2003, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3), MDSYS.SDO_ORDINATE_ARRAY(100.0, 100.0, 500.0,  500.0)) AS area1,
  464. SQL>        MDSYS.SDO_GEOMETRY(2003,NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1),MDSYS.SDO_ORDINATE_ARRAY(100,100,500.01,100,500.01,500.01,100,500.01,100,100)) AS area2
  465. SQL>   FROM dual
  466. SQL> )
  467. SQL> SELECT &&DefaultSchema..SC4O.St_HausdorffSimilarityMeasure(area1,area2,3) AS HSM,
  468. SQL>      &&DefaultSchema..SC4O.St_AreaSimilarityMeasure(area1,area2,3)      AS ASM
  469. SQL>   FROM DATA;
  470.        HSM    ASM
  471. ---------- ----------
  472. .999975001 .999950002
  473. SQL> WITH DATA AS (
  474. SQL>   SELECT MDSYS.SDO_GEOMETRY(2002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(0,0, 10,10, 20,0, 30,30)) AS line1,
  475. SQL>        MDSYS.SDO_GEOMETRY(2002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(0,0, 10.01,10, 20,0.1, 30,30.07)) AS line2
  476. SQL>   FROM dual
  477. SQL> )
  478. SQL> SELECT &&DefaultSchema..SC4O.St_HausdorffSimilarityMeasure(line1,line2,3) AS HSM
  479. SQL>   FROM DATA;
  480.        HSM
  481. ----------
  482. .997645726
  483. SQL> -- ***********************************************************************************
  484. SQL> -- ST_Area, ST_Length, ST_IsValid, ST_IsSimple, ST_Dimension, ST_CoordDim, ST_GeomFromText
  485. SQL> -- ***********************************************************************************
  486. SQL> --
  487. SQL> WITH DATA AS (
  488. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('POINT (10 5)',NULL) AS geom FROM dual UNION ALL
  489. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('POINT (900 900 10)',NULL) AS geom FROM dual UNION ALL
  490. SQL>   SELECT mdsys.sdo_geometry('LINESTRING (10 10, 20 10)',NULL) AS geom FROM dual UNION ALL
  491. SQL>   SELECT mdsys.sdo_geometry('LINESTRING (100 100, 900 900)',NULL) AS geom FROM dual UNION ALL
  492. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('LINESTRING (10 10 1, 20 10 2)',NULL) AS geom FROM dual UNION ALL
  493. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('LINESTRING (10 25, 20 30, 25 25, 30 30)',NULL) AS geom FROM dual UNION ALL
  494. SQL>   SELECT mdsys.sdo_geometry('LINESTRING (10 55, 15 55, 20 60, 10 60, 10 55)',NULL) AS geom FROM dual UNION ALL
  495. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('LINESTRING (10 85, 20 90, 20 85, 10 90, 10 85)',NULL) AS geom FROM dual UNION ALL
  496. SQL>   SELECT mdsys.sdo_geometry('POLYGON ((10 105, 15 105, 20 110, 10 110, 10 105))',NULL) AS geom FROM dual UNION ALL
  497. SQL>   SELECT mdsys.sdo_geometry('POLYGON ((100 100, 500 100, 500 500, 100 500, 100 100))',NULL) AS geom FROM dual UNION ALL
  498. SQL>   SELECT mdsys.sdo_geometry('POLYGON ((500 500, 1500 500, 1500 1500, 500 1500, 500 500), (600 750, 900 750, 900 1050, 600 1050, 600 750))',NULL) AS geom FROM dual UNION ALL
  499. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('POLYGON ((50 135, 60 135, 60 140, 50 140, 50 135), (51 136, 59 136, 59 139, 51 139, 51 136))',NULL) AS geom FROM dual UNION ALL
  500. SQL>   SELECT mdsys.sdo_geometry('POLYGON ((10 135, 20 135, 20 140, 10 140, 10 135))',NULL) AS geom FROM dual UNION ALL
  501. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('MULTIPOINT ((50 5), (55 7), (60 5))',NULL) AS geom FROM dual UNION ALL
  502. SQL>   SELECT mdsys.sdo_geometry('MULTIPOINT ((65 5))',NULL) AS geom FROM dual UNION ALL
  503. SQL>   SELECT mdsys.sdo_geometry('MULTIPOINT ((100 100), (900 900))',NULL) AS geom FROM dual UNION ALL
  504. SQL>   SELECT mdsys.sdo_geometry('MULTILINESTRING ((50 15, 55 15), (60 15, 65 15))',NULL) AS geom FROM dual UNION ALL
  505. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('MULTILINESTRING ((50 22, 60 22), (55 20, 55 25))',NULL) AS geom FROM dual UNION ALL
  506. SQL>   SELECT mdsys.sdo_geometry('MULTILINESTRING ((50 55, 50 60, 55 58, 50 55), (56 58, 60 55, 60 60, 56 58))',NULL) AS geom FROM dual UNION ALL
  507. SQL>   SELECT mdsys.sdo_geometry('MULTIPOLYGON (((50 105, 55 105, 60 110, 50 110, 50 105)), ((62 108, 65 108, 65 112, 62 112, 62 108)))',NULL) AS geom FROM dual UNION ALL
  508. SQL>   SELECT &&DefaultSchema..SC4O.ST_GeomFromText('MULTIPOLYGON (((50 115, 55 115, 55 120, 50 120, 50 115)), ((55 120, 58 120, 58 122, 55 122, 55 120)))',NULL) AS geom FROM dual UNION ALL
  509. SQL>   SELECT mdsys.sdo_geometry('MULTIPOLYGON (((50 95, 55 95, 53 96, 55 97, 53 98, 55 99, 50 99, 50 95)), ((55 100, 55 95, 60 95, 60 100, 55 100)))',NULL) AS geom FROM dual UNION ALL
  510. SQL>   SELECT mdsys.sdo_geometry('MULTIPOLYGON (((50 168, 50 160, 55 160, 55 168, 50 168), (51 167, 54 167, 54 161, 51 161, 51 162, 52 163, 51 164, 51 165, 51 166, 51 167)), ((52 166, 52 162, 53 162, 53 166, 52 166)))',NULL) AS geom FROM dual UNION ALL
  511. SQL>   SELECT mdsys.sdo_geometry('MULTIPOLYGON (((1500 100, 1900 100, 1900 500, 1500 500, 1500 100)), ((1900 500, 2300 500, 2300 900, 1900 900, 1900 500)))',NULL) AS geom FROM dual
  512. SQL> )
  513. SQL> SELECT DISTINCT
  514. SQL>      CASE WHEN a.geom.get_gtype() IN (1) THEN 'Point'
  515. SQL>     WHEN a.geom.get_gtype() IN (5) THEN 'MultiPoint'
  516. SQL>     WHEN a.geom.get_gtype() IN (2) THEN 'Line'
  517. SQL>     WHEN a.geom.get_gtype() IN (6) THEN 'MultiLine'
  518. SQL>     WHEN a.geom.get_gtype() IN (3) THEN 'Area'
  519. SQL>     WHEN a.geom.get_gtype() IN (7) THEN 'MultiArea'
  520. SQL>     ELSE 'Not Supported'
  521. SQL>       END geometryType,
  522. SQL>      round(&&DefaultSchema..SC4O.ST_area(a.geom,3),3) AS area,
  523. SQL>      round(sdo_geom.sdo_area(a.geom,0.0005),3) AS areaSDO,
  524. SQL>      round(&&DefaultSchema..SC4O.ST_length(a.geom,3),3) AS len,
  525. SQL>      round(sdo_geom.sdo_length(a.geom,0.0005),3) AS lenSDO,
  526. SQL>      &&DefaultSchema..SC4O.ST_IsValid(a.geom) AS isValid,
  527. SQL>      &&DefaultSchema..SC4O.ST_IsSimple(a.geom) AS isSimple,
  528. SQL>      &&DefaultSchema..SC4O.ST_Dimension(a.geom) AS Dimension,
  529. SQL>      &&DefaultSchema..SC4O.ST_CoordDim(a.geom) AS coordDim
  530. SQL>   FROM DATA a
  531. SQL> ORDER BY 1,2,4;
  532. GEOMETRYTYPE      AREA    AREASDO    LEN     LENSDO ISVALID                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ISSIMPLE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         DIMENSION                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          COORDDIM
  533. ------------- ---------- ---------- ---------- ---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  534. Area          26        52      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  535. Area        37.5       37.5 27.071     27.071 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  536. Area          50   50     30         30 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  537. Area      160000     160000   1600       1600 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  538. Area      910000     910000   5200       5200 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  539. Line           0    0     10         10 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  540. Line           0    0     10      10.05 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            3
  541. Line           0    25.322      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  542. Line           0    0 27.071     27.071 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  543. Line           0    32.361      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           FALSE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  544. Line           0    0   1131.371   1131.371 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  545. MultiArea       27   27 54.828     54.828 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  546. MultiArea       31        30      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  547. MultiArea       41   41 42.944     42.944 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  548. MultiArea     49.5       49.5 41.071     41.071 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  549. MultiArea   320000     320000   3200       3200 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  550. MultiLine        0    0     10         10 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  551. MultiLine        0        15      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           FALSE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  552. MultiLine        0    0 30.688     30.688 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  553. MultiPoint         0    0      0    0 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  554. MultiPoint         0         0      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  555. Point          0    0      0    0 TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            3
  556. Point          0         0      TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           TRUE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            2
  557. 23 ROWS selected.
  558. SQL> -- ***********************************************************************************
  559. SQL> -- ST_Buffer
  560. SQL> -- ***********************************************************************************
  561. SQL> --
  562. SQL> -- No Geometry
  563. SQL> --
  564. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(NULL,100.0,1) AS polygon
  565. SQL>   FROM dual;
  566. POLYGON(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  567. ---------------------------------------------------------------------------------------------------
  568. SQL> -- 1. 15m Buffer with _Round_ End Cap and Join Style*
  569. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)),15.0,2,
  570. SQL>            1 /*CAP_ROUND*/,
  571. SQL>            1 /*JOIN_ROUND*/,
  572. SQL>            8 /*QUADRANT_SEGMENTS*/,
  573. SQL>            0 /*FULL BUFFER*/) AS buf
  574. SQL>   FROM dual;
  575. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  576. ---------------------------------------------------------------------------------------------------
  577. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(37.21, 57.83, 7.21, 8.83, 5.93, 6.19, 5.18, 3.34, 5.01, .41, 5.42, -2.51, 6.38, -5.29, 7.87, -7.82, 9.82, -10.02, 12.17, -11.79, 14.81, -13.07, 17.66, -13.82, 20.59, -13.99, 23.51, -13.58, 26.29, -12.62, 28.82, -11.13, 31.02, -9.18, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 91.67, -12.47, 94.26, -13.86, 97.07, -14.71, 100, -15, 102.93, -14.71, 105.74, -13.86, 108.33, -12.47, 110.61, -10.61, 160.61, 39.39, 162.47, 41.67, 163.86, 44.26, 164.71, 47.07, 165, 50, 164.71, 52.93, 163.86, 55.74, 162.47, 58.33, 160.61, 60.61, 158.33, 62.47, 155.74, 63.86, 152.93, 64.71, 150, 65, 147.07, 64.71, 144.26, 63.86, 141.67, 62.47, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 58.28, 62.51, 55.62, 63.91, 52.73, 64.75, 49.74, 65, 46.75, 64.64, 43.9, 63.7, 41.29, 62.21, 39.03, 60.23, 37.21, 57.83))
  578. SQL> -- 2. 15m Buffer with _SQUARE_ End Cap and ROUND Join Style*
  579. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)),15.0,2,
  580. SQL>            3 /*CAP_SQUARE*/,
  581. SQL>            1 /*JOIN_ROUND*/,
  582. SQL>            8 /*QUADRANT_SEGMENTS*/,
  583. SQL>            0 /*FULL BUFFER*/) AS buf
  584. SQL>   FROM dual;
  585. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  586. ---------------------------------------------------------------------------------------------------
  587. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(37.21, 57.83, -.63, -3.96, 24.96, -19.63, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 91.67, -12.47, 94.26, -13.86, 97.07, -14.71, 100, -15, 102.93, -14.71, 105.74, -13.86, 108.33, -12.47, 110.61, -10.61, 171.21, 50, 150, 71.21, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 58.28, 62.51, 55.62, 63.91, 52.73, 64.75, 49.74, 65, 46.75, 64.64, 43.9, 63.7, 41.29, 62.21, 39.03, 60.23, 37.21, 57.83))
  588. SQL> -- 3. 15m Buffer with _BUTT_ End Cap and _ROUND_ Join Style*
  589. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)),15.0,2,
  590. SQL>            2 /*CAP_BUTT*/,
  591. SQL>            1 /*JOIN_ROUND*/,
  592. SQL>            8 /*QUADRANT_SEGMENTS*/,
  593. SQL>            0 /*FULL BUFFER*/) AS buf
  594. SQL>   FROM dual;
  595. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  596. ---------------------------------------------------------------------------------------------------
  597. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(37.21, 57.83, 7.21, 8.83, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 91.67, -12.47, 94.26, -13.86, 97.07, -14.71, 100, -15, 102.93, -14.71, 105.74, -13.86, 108.33, -12.47, 110.61, -10.61, 160.61, 39.39, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 58.28, 62.51, 55.62, 63.91, 52.73, 64.75, 49.74, 65, 46.75, 64.64, 43.9, 63.7, 41.29, 62.21, 39.03, 60.23, 37.21, 57.83))
  598. SQL> -- 4. 15m Buffer with _BUTT_ End Cap and _MITRE_ Join Style*
  599. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)),15.0,2,
  600. SQL>            2 /*CAP_BUTT*/,
  601. SQL>            2 /*JOIN_MITRE*/,
  602. SQL>            8 /*QUADRANT_SEGMENTS*/,
  603. SQL>            0 /*FULL BUFFER*/) AS buf
  604. SQL>   FROM dual;
  605. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  606. ---------------------------------------------------------------------------------------------------
  607. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(47.15, 74.07, 7.21, 8.83, 32.79, -6.83, 52.85, 25.93, 100, -21.21, 160.61, 39.39, 139.39, 60.61, 100, 21.21, 47.15, 74.07))
  608. SQL> -- 5. 15m Buffer with _BUTT_ End Cap and _BEVEL_ Join Style*
  609. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)),15.0,2,
  610. SQL>            2 /*CAP_BUTT*/,
  611. SQL>            3 /*JOIN_BEVEL*/,
  612. SQL>            8 /*QUADRANT_SEGMENTS*/,
  613. SQL>            0 /*FULL BUFFER*/) AS buf
  614. SQL>   FROM dual;
  615. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  616. ---------------------------------------------------------------------------------------------------
  617. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(37.21, 57.83, 7.21, 8.83, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 110.61, -10.61, 160.61, 39.39, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 37.21, 57.83))
  618. SQL> -- 6. Simple Bent Line Buffered Left and Right Side by 15m.
  619. SQL> SELECT &&DefaultSchema..SC4O.ST_Buffer(line,b.left_right_distance,2,1,c.join_type,8,1) AS buf
  620. SQL>   FROM (SELECT mdsys.sdo_geometry(2002,NULL,NULL,sdo_elem_info_array(1,2,1),sdo_ordinate_array(20,1,50,50,100,0,150,50)) AS line
  621. SQL>         FROM dual
  622. SQL>      ) a,
  623. SQL>      (SELECT CASE WHEN level = 1 THEN -15.0 ELSE 15.0 END AS left_right_distance FROM dual CONNECT BY level < 3) b,
  624. SQL>      (SELECT level AS join_type FROM dual CONNECT BY level < 4) c;
  625. BUF(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  626. ---------------------------------------------------------------------------------------------------
  627. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(20, 1, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 91.67, -12.47, 94.26, -13.86, 97.07, -14.71, 100, -15, 102.93, -14.71, 105.74, -13.86, 108.33, -12.47, 110.61, -10.61, 160.61, 39.39, 150, 50, 100, 0, 50, 50, 20, 1))
  628. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(20, 1, 32.79, -6.83, 52.85, 25.93, 100, -21.21, 160.61, 39.39, 150, 50, 100, 0, 50, 50, 20, 1))
  629. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(20, 1, 32.79, -6.83, 52.85, 25.93, 89.39, -10.61, 110.61, -10.61, 160.61, 39.39, 150, 50, 100, 0, 50, 50, 20, 1))
  630. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(150, 50, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 58.28, 62.51, 55.62, 63.91, 52.73, 64.75, 49.74, 65, 46.75, 64.64, 43.9, 63.7, 41.29, 62.21, 39.03, 60.23, 37.21, 57.83, 7.21, 8.83, 20, 1, 50, 50, 100, 0, 150, 50))
  631. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(150, 50, 139.39, 60.61, 100, 21.21, 47.15, 74.07, 7.21, 8.83, 20, 1, 50, 50, 100, 0, 150, 50))
  632. SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(150, 50, 139.39, 60.61, 100, 21.21, 60.61, 60.61, 37.21, 57.83, 7.21, 8.83, 20, 1, 50, 50, 100, 0, 150, 50))
  633. 6 ROWS selected.
  634. SQL> -- ***********************************************************************************
  635. SQL> -- ST_Union, ST_Intersection, ST_XOR, ST_Difference, ST_CoordinateRounder
  636. SQL> -- ***********************************************************************************
  637. SQL> -- Polygon tests
  638. SQL> --
  639. SQL> WITH DATA AS (
  640. SQL>   SELECT mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)) AS geom1,
  641. SQL>        mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(5,5,15,15)) AS geom2
  642. SQL>   FROM dual
  643. SQL> )
  644. SQL> SELECT 'UNION' AS gtype,
  645. SQL>      &&DefaultSchema..SC4O.ST_Union(mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)),
  646. SQL>             mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(5,5,15,15)),
  647. SQL>             1) AS rGeom,
  648. SQL>      'INTERSECTION' AS gtype,
  649. SQL>      &&DefaultSchema..SC4O.ST_intersection(mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)),
  650. SQL>              mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(5,5,15,15)),
  651. SQL>              1) AS rGeom,
  652. SQL>      'XOR' AS gtype,
  653. SQL>      &&DefaultSchema..SC4O.ST_XOr(mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)),
  654. SQL>           mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(5,5,15,15)),
  655. SQL>           1) AS rGeom,
  656. SQL>      'DIFFERENCE' AS gtype,
  657. SQL>       &&DefaultSchema..SC4O.ST_Difference(mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(1,1,10,10)),
  658. SQL>             mdsys.sdo_geometry(2003,82469,NULL,sdo_elem_info_array(1,1003,3),sdo_ordinate_array(5,5,15,15)),
  659. SQL>             1) AS rGeom
  660. SQL>   FROM DATA;
  661. GTYPE RGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       GTYPE      RGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     GTY RGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   GTYPE      RGEOM(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  662. ----- --------------------------------------------------------------------------------------------------- ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  663. UNION SDO_GEOMETRY(2003, 82469, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(10, 5, 15, 5, 15, 15, 5, 15, 5, 10, 1, 10, 1, 1, 10, 1, 10, 5))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    INTERSECTION SDO_GEOMETRY(2003, 82469, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(5, 10, 5, 5, 10, 5, 10, 10, 5, 10))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          XOR SDO_GEOMETRY(2007, 82469, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1, 15, 1003, 1), SDO_ORDINATE_ARRAY(10, 5, 5, 5, 5, 10, 1, 10, 1, 1, 10, 1, 10, 5, 10, 5, 15, 5, 15, 15, 5, 15, 5, 10, 10, 10, 10, 5))                                                                                                                                                                                                                                                                                                                                                                                                                                                                      DIFFERENCE SDO_GEOMETRY(2003, 82469, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(10, 5, 5, 5, 5, 10, 1, 10, 1, 1, 10, 1, 10, 5))
  664. SQL> -- Union of two points
  665. SQL> WITH DATA AS (
  666. SQL>   SELECT MDSYS.SDO_GEOMETRY(2001, 32639, MDSYS.SDO_POINT_TYPE(548810.44489, 3956383.07564,NULL),NULL,NULL) g1,
  667. SQL>        MDSYS.SDO_GEOMETRY(2001, 32639, MDSYS.SDO_POINT_TYPE(548766.398, 3956415.329,NULL), NULL, NULL) g2
  668. SQL>   FROM dual
  669. SQL> )
  670. SQL> SELECT &&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Union(g1,g2,1),1) AS GeoProcess,
  671. SQL>      &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_union(g1,g2,0.05),1) AS Oracle
  672. SQL>   FROM DATA;
  673. GEOPROCESS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ORACLE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  674. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  675. SDO_GEOMETRY(2005, 32639, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(548766.4, 3956415.3, 548810.4, 3956383.1))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      SDO_GEOMETRY(2005, 32639, NULL, SDO_ELEM_INFO_ARRAY(1, 1, 2), SDO_ORDINATE_ARRAY(548810.4, 3956383.1, 548766.4, 3956415.3))
  676. SQL> -- Coordinate rounding ...
  677. SQL> WITH DATA AS (
  678. SQL>   SELECT MDSYS.SDO_GEOMETRY(2001, 32639, MDSYS.SDO_POINT_TYPE(548810.44489, 3956383.07564,NULL),NULL,NULL) g1,
  679. SQL>        MDSYS.SDO_GEOMETRY(2001, 32639, MDSYS.SDO_POINT_TYPE(548766.398, 3956415.329,NULL), NULL, NULL) g2
  680. SQL>   FROM dual
  681. SQL> )
  682. SQL> SELECT sdo_geom.relate(&&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Union(g1,g2,1),1),
  683. SQL>          'DETERMINE',
  684. SQL>          &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_union(g1,g2,0.05),1),
  685. SQL>          0.05) AS compare
  686. SQL>   FROM DATA;
  687. COMPARE
  688. -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  689. EQUAL
  690. SQL> -- Intersection of mixed objects ...
  691. SQL> -- 1. A point and a line
  692. SQL> WITH DATA AS (
  693. SQL>   SELECT MDSYS.SDO_GEOMETRY(2002, 32639, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(548766.398, 3956415.329, 548866.753, 3956341.844, 548845.366, 3956342.941)) g1,
  694. SQL>        MDSYS.SDO_GEOMETRY(2001, 32639, MDSYS.SDO_POINT_TYPE(548766.398, 3956415.329,NULL), NULL, NULL) g2
  695. SQL>   FROM dual
  696. SQL> )
  697. SQL> SELECT &&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Intersection(g1,g2,1),1) AS GeoProcess,
  698. SQL>      &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_intersection(g1,g2,0.05),1) AS Oracle
  699. SQL>   FROM DATA;
  700. GEOPROCESS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ORACLE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  701. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  702. SDO_GEOMETRY(2001, 32639, SDO_POINT_TYPE(548766.4, 3956415.3, NULL), NULL, NULL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 SDO_GEOMETRY(2001, 32639, SDO_POINT_TYPE(548766.4, 3956415.3, NULL), NULL, NULL)
  703. SQL> -- 2. Two crossing lines
  704. SQL> WITH DATA AS (
  705. SQL>   SELECT MDSYS.SDO_GEOMETRY(2002, 32639, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(548938.421,3956363.864,548823.852,3956379.758,548818.010,3956381.297,548812.139,3956382.844,548683.715,3956400.404)) g1,
  706. SQL>        MDSYS.SDO_GEOMETRY(2002, 32639, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(548766.398,3956415.329,548866.753,3956341.844,548845.366,3956342.941)) g2
  707. SQL>   FROM dual
  708. SQL> )
  709. SQL> SELECT &&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Intersection(g1,g2,1),1) AS GeoProcess,
  710. SQL>      &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_intersection(g1,g2,0.05),1) AS Oracle
  711. SQL>   FROM DATA;
  712. GEOPROCESS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ORACLE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  713. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  714. SDO_GEOMETRY(2001, 32639, SDO_POINT_TYPE(548810.4, 3956383.1, NULL), NULL, NULL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 SDO_GEOMETRY(2001, 32639, SDO_POINT_TYPE(548810.4, 3956383.1, NULL), NULL, NULL)
  715. SQL> -- 3. A line and a polygon
  716. SQL> WITH DATA AS (
  717. SQL>   SELECT MDSYS.SDO_GEOMETRY(2003, 32639, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1), MDSYS.SDO_ORDINATE_ARRAY(548862.366, 3956401.619, 548793.269, 3956409.845, 548785.043, 3956369.812, 548850.302, 3956361.587, 548862.366, 3956401.619)) g1,
  718. SQL>        MDSYS.SDO_GEOMETRY(2002, 32639, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1,2,1), MDSYS.SDO_ORDINATE_ARRAY(548766.398, 3956415.329, 548866.753, 3956341.844, 548845.366, 3956342.941)) g2
  719. SQL>   FROM dual
  720. SQL> )
  721. SQL> SELECT &&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Intersection(g1,g2,1),1) AS GeoProcess,
  722. SQL>      &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_intersection(g1,g2,0.05),1) AS Oracle
  723. SQL>   FROM DATA;
  724. GEOPROCESS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ORACLE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  725. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  726. SDO_GEOMETRY(2002, 32639, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(548790.7, 3956397.5, 548837.6, 3956363.2))                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      SDO_GEOMETRY(2002, 32639, NULL, SDO_ELEM_INFO_ARRAY(1, 2, 1), SDO_ORDINATE_ARRAY(548790.7, 3956397.5, 548837.6, 3956363.2))
  727. SQL> -- 4. A Point and polygon
  728. SQL> WITH DATA AS (
  729. SQL>   SELECT mdsys.sdo_geometry (2001, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1,1),SDO_ORDINATE_ARRAY (13,106)) g1,
  730. SQL>        mdsys.sdo_geometry (2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1),SDO_ORDINATE_ARRAY (10,105, 15,105, 20,110, 10,110, 10,105)) g2
  731. SQL>   FROM dual
  732. SQL> )
  733. SQL> SELECT &&DefaultSchema..SC4O.ST_CoordinateRounder(&&DefaultSchema..SC4O.ST_Intersection(g1,g2,1),1) AS GeoProcess,
  734. SQL>      &&DefaultSchema..SC4O.ST_CoordinateRounder(sdo_geom.sdo_intersection(g1,g2,0.05),1) AS Oracle
  735. SQL>   FROM DATA;
  736. GEOPROCESS(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ORACLE(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  737. --------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  738. SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(13, 106, NULL), NULL, NULL)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(13, 106, NULL), NULL, NULL)
  739. SQL> -- ***********************************************************************************
  740. SQL> -- ST_Union, ST_Intersection, ST_XOR, ST_Difference, ST_CoordinateRounder
  741. SQL> -- ***********************************************************************************
  742. SQL> -- 1. Point is returned as is
  743. SQL> SELECT &&DefaultSchema..SC4O.ST_MinimumBoundingCircle(sdo_geometry(2001,NULL,sdo_point_type(1,1,NULL),NULL,NULL),2) AS mbc FROM dual;
  744. MBC(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  745. ---------------------------------------------------------------------------------------------------
  746. SDO_GEOMETRY(2001, NULL, SDO_POINT_TYPE(1, 1, NULL), NULL, NULL)
  747. SQL> -- 2. Straight line defined by two points
  748. SQL> SELECT &&DefaultSchema..SC4O.ST_MinimumBoundingCircle(sdo_geometry('MULTIPOINT ((10 10), (20 20))',0),2) AS mbc  FROM dual;
  749. MBC(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  750. ---------------------------------------------------------------------------------------------------
  751. SDO_GEOMETRY(2003, 0, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(22.07, 15, 21.94, 16.38, 21.53, 17.71, 20.88, 18.93, 20, 20, 18.93, 20.88, 17.71, 21.53, 16.38, 21.94, 15, 22.07, 13.62, 21.94, 12.29, 21.53, 11.07, 20.88, 10, 20, 9.12, 18.93, 8.47, 17.71, 8.06, 16.38, 7.93, 15, 8.06, 13.62, 8.47, 12.29, 9.12, 11.07, 10, 10, 11.07, 9.12, 12.29, 8.47, 13.62, 8.06, 15, 7.93, 16.38, 8.06, 17.71, 8.47, 18.93, 9.12, 20, 10, 20.88, 11.07, 21.53, 12.29, 21.94, 13.62, 22.07, 15))
  752. SQL> -- 3. Three Points In Line
  753. SQL> SELECT &&DefaultSchema..SC4O.ST_MinimumBoundingCircle(sdo_geometry('MULTIPOINT ((10 10), (20 20), (30 30))',0),2) AS mbc  FROM dual;
  754. MBC(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  755. ---------------------------------------------------------------------------------------------------
  756. SDO_GEOMETRY(2003, 0, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(34.14, 20, 33.87, 22.76, 33.07, 25.41, 31.76, 27.86, 30, 30, 27.86, 31.76, 25.41, 33.07, 22.76, 33.87, 20, 34.14, 17.24, 33.87, 14.59, 33.07, 12.14, 31.76, 10, 30, 8.24, 27.86, 6.93, 25.41, 6.13, 22.76, 5.86, 20, 6.13, 17.24, 6.93, 14.59, 8.24, 12.14, 10, 10, 12.14, 8.24, 14.59, 6.93, 17.24, 6.13, 20, 5.86, 22.76, 6.13, 25.41, 6.93, 27.86, 8.24, 30, 10, 31.76, 12.14, 33.07, 14.59, 33.87, 17.24, 34.14, 20))
  757. SQL> -- 4. three points
  758. SQL> SELECT &&DefaultSchema..SC4O.ST_MinimumBoundingCircle(sdo_geometry('MULTIPOINT ((10 10), (20 20), (10 20))',0),2) AS mbc  FROM dual;
  759. MBC(SDO_GTYPE, SDO_SRID, SDO_POINT(X, Y, Z), SDO_ELEM_INFO, SDO_ORDINATES)
  760. ---------------------------------------------------------------------------------------------------
  761. SDO_GEOMETRY(2003, 0, NULL, SDO_ELEM_INFO_ARRAY(1, 1003, 1), SDO_ORDINATE_ARRAY(22.07, 15, 21.94, 16.38, 21.53, 17.71, 20.88, 18.93, 20, 20, 18.93, 20.88