SC4O Test log
Thursday October 04 2018 at 18:43
Keywords log SC4O testing JTS JASPA
Summary Log from SC4O testing.
Here is the latest test log for the SC4O (not Exporter) JTS /JASPA functions:
SQL * Plus: Release 12. 1. 0. 1. 0 Production ON Thu Oct 4 18 :31 :08 2018
Copyright ( c) 1982 , 2013 , Oracle. ALL rights reserved.
LAST Successful login TIME : Thu Oct 04 2018 18 :30 :53 + 10 :00
Connected TO :
Oracle DATABASE 12c Enterprise Edition Release 12. 1. 0. 1. 0 - 64bit Production
WITH the Partitioning, OLAP, Advanced Analytics AND REAL Application Testing options
SQL> -- ***********************************************************************************
SQL> -- ST_DelaunayTriangles
SQL> -- ***********************************************************************************
SQL> -- Method 1: From MultiPoint
SQL> --
SQL> WITH DATA AS (
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))' )
SQL> AS points
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_DelaunayTriangles( a. points, 0.05 , 10 ) AS triangles
SQL> FROM DATA a;
TRIANGLES( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Method 2: COLLECT from set of points
SQL> --
SQL> WITH DATA AS (
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755837.009504873 , 3679259.47485944 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755639.275882053 , 3679054.93013763 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755840.415054801 , 3679058.33568758 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 756041.554227549 , 3679061.74123752 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755843.820604722 , 3678857.19651571 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755642.681431989 , 3678853.79096576 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755441.54225925 , 3678850.38541582 , 9.15 ) , NULL , NULL ) AS point FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_DelaunayTriangles( CAST ( collect( a. point) AS mdsys. sdo_geometry_array) , 0.05 , 10 ) AS triangles
SQL> FROM DATA a;
TRIANGLES( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Method 3: RefCursor
SQL> --
SQL> DECLARE
SQL> mycur &&DefaultSchema.. SC4O. refcur_t;
SQL> v_geom mdsys. sdo_geometry;
SQL> BEGIN
SQL> OPEN mycur FOR
SQL> WITH DATA AS (
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755837.009504873 , 3679259.47485944 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755639.275882053 , 3679054.93013763 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755840.415054801 , 3679058.33568758 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 756041.554227549 , 3679061.74123752 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755843.820604722 , 3678857.19651571 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755642.681431989 , 3678853.79096576 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755441.54225925 , 3678850.38541582 , 9.15 ) , NULL , NULL ) AS point FROM dual
SQL> )
SQL> SELECT point FROM DATA a;
SQL> v_geom := &&DefaultSchema.. SC4O. ST_DelaunayTriangles( mycur, 0.05 , 10 ) ;
SQL> dbms_output. put_line( 'Delaunay: ' || &&DefaultSchema.. SC4O. ST_AsEWKT( v_geom) ) ;
SQL> Close myCur;
SQL> END ;
SQL> /
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 ) ) )
PL/ SQL PROCEDURE successfully completed.
SQL> -- ***********************************************************************************
SQL> -- ST_Voronoi
SQL> -- ***********************************************************************************
SQL> -- Method 1: From MultiPoint
SQL> --
SQL> WITH DATA AS (
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))' )
SQL> AS points
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_Voronoi( a. points, NULL , 0.05 , 10 ) AS triangles
SQL> FROM DATA a;
TRIANGLES( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Method 2: COLLECT from single points
SQL> --
SQL> WITH DATA AS (
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755837.009504873 , 3679259.47485944 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755639.275882053 , 3679054.93013763 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755840.415054801 , 3679058.33568758 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 756041.554227549 , 3679061.74123752 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755843.820604722 , 3678857.19651571 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755642.681431989 , 3678853.79096576 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755441.54225925 , 3678850.38541582 , 9.15 ) , NULL , NULL ) AS point FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_Voronoi( CAST ( collect( a. point) AS mdsys. sdo_geometry_array) , NULL , 0.05 , 10 ) AS triangles
SQL> FROM DATA a;
TRIANGLES( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Method 3: From Refcursor containing individual points
SQL> --
SQL> DECLARE
SQL> mycur &&DefaultSchema.. SC4O. refcur_t;
SQL> v_geom mdsys. sdo_geometry;
SQL> BEGIN
SQL> OPEN mycur FOR
SQL> WITH DATA AS (
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755837.009504873 , 3679259.47485944 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755639.275882053 , 3679054.93013763 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755840.415054801 , 3679058.33568758 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 756041.554227549 , 3679061.74123752 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
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
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755843.820604722 , 3678857.19651571 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755642.681431989 , 3678853.79096576 , 10 ) , NULL , NULL ) AS point FROM dual UNION ALL
SQL> SELECT MDSYS. SDO_GEOMETRY( 3001 , 32615 , MDSYS. SDO_POINT_TYPE( 755441.54225925 , 3678850.38541582 , 9.15 ) , NULL , NULL ) AS point FROM dual
SQL> )
SQL> SELECT point
SQL> FROM DATA a;
SQL> v_geom := &&DefaultSchema.. SC4O. ST_Voronoi( mycur, NULL , 0.05 , 10 ) ;
SQL> dbms_output. put_line( 'Voronoi: ' || &&DefaultSchema.. SC4O. ST_AsEWKT( v_geom) ) ;
SQL> Close myCur;
SQL> END ;
SQL> /
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 ) ) )
PL/ SQL PROCEDURE successfully completed.
SQL> -- ***********************************************************************************
SQL> -- ST_Densify, ST_DouglasPeuckerSimplify and ST_TopologyPreservingSimplify
SQL> -- ***********************************************************************************
SQL> --
SQL> SELECT &&DefaultSchema.. SC4O. ST_Densify( sdo_geometry( 'LINESTRING(0 0, 10 10, 10 0, 20 10)' , 0 ) , 2 , 3 ) AS dGeom
SQL> FROM dual;
DGEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
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
SQL> FROM dual;
DGEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> WITH dense_data AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2002 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) ,
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,
SQL> &&defaultSchema.. SC4O. ST_Densify (
SQL> p_geom => MDSYS. SDO_GEOMETRY( 2002 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) ,
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 ) ) ,
SQL> p_precision => 2 ,
SQL> p_distanceTolerance => 90
SQL> ) AS dense_geom
SQL> FROM dual
SQL> )
SQL> SELECT CAST ( 'Original' AS varchar2( 20 ) ) AS text, sdo_util. GetNumVertices( geom) AS numVertices FROM dense_data
SQL> UNION ALL SELECT CAST ( 'Densify' AS varchar2( 20 ) ) AS text, sdo_util. GetNumVertices( dense_geom) AS numVertices FROM dense_data
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
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;
TEXT NUMVERTICES
-------------------- -----------
Original 9
Densify 505
DouglasPeucker 5
TopologyPreserving 5
SQL> -- ***********************************************************************************
SQL> -- ST_InsertVertex
SQL> -- ***********************************************************************************
SQL> -- ST_InsertVertex testing
SQL> -- Test update of SDO_POINT structure with valid ordinate values
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( mdsys. SDO_Geometry( 3001 , NULL , sdo_point_type( 1.12345 , 2.43534 , 3.43513 ) , NULL , NULL ) ,
SQL> 1 ,
SQL> mdsys. SDO_Geometry( 3001 , NULL , sdo_point_type( 4.555 , 4.666 , 10 ) , NULL , NULL ) ) AS atStart,
SQL> &&DefaultSchema.. SC4O. ST_InsertVertex( mdsys. SDO_Geometry( 3001 , NULL , sdo_point_type( 1.12345 , 2.43534 , 3.43513 ) , NULL , NULL ) ,
SQL> - 1 ,
SQL> mdsys. SDO_Geometry( 3001 , NULL , sdo_point_type( 4.555 , 4.666 , 10 ) , NULL , NULL ) ) AS atEnd
SQL> FROM dual;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Add point at every position in MultiPoint
SQL> WITH DATA AS (
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
SQL> FROM dual
SQL> )
SQL> SELECT CASE WHEN b. posn = SDO_UTIL. GETNUMVERTICES( ( SELECT mPoint FROM DATA ) ) + 2 THEN - 1 ELSE b. posn END AS posn,
SQL> &&DefaultSchema.. SC4O. ST_InsertVertex( a. mPoint,
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 */
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 4.5 , 4.6 , NULL ) , NULL , NULL ) )
SQL> AS point
SQL> FROM DATA a,
SQL> ( SELECT level AS posn
SQL> FROM dual
SQL> CONNECT BY level <= ( SDO_UTIL. GETNUMVERTICES( ( SELECT mPoint FROM DATA ) ) + 2 ) ) b;
POSN POINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------- ---------------------------------------------------------------------------------------------------
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 ) )
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 ) )
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 ) )
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 ) )
- 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 ) )
SQL> -- Test a linestring (should throw exception)
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(1.12345 1.3445,2.43534 2.03998398,3.43513 3.451245)' ) AS linestring,
SQL> mdsys. sdo_geometry( 'POINT(4.555 4.666)' ) AS point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( a. linestring, a. point, NULL /*Will throw exception as null interpreted as 0*/ ) . Get_WKT( ) AS geom
SQL> FROM DATA a;
ERROR:
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
ORA- 06512: at "GIS.SC4O" , line 909
no ROWS selected
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(1.12345 1.3445,2.43534 2.03998398,3.43513 3.451245)' , NULL ) AS linestring,
SQL> mdsys. sdo_geometry( 'POINT(4.555 4.666)' , NULL ) AS point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( a. linestring, a. point, 1 /*Will insert at the beginning of the linestring*/ ) . Get_WKT( ) AS geom
SQL> FROM DATA a;
GEOM
--------------------------------------------------------------------------------
LINESTRING ( 4.555 4.666 , 1.12345 1.3445 , 2.43534 2.03998398 , 3.43513 3.451245 )
SQL> -- Multilinestring
SQL> WITH DATA AS (
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,
SQL> mdsys. sdo_geometry( 'POINT(-1 -1)' ) AS point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( a. multilinestring, 1 , a. point) . Get_WKT( ) AS st_geom
SQL> FROM DATA a;
ST_GEOM
--------------------------------------------------------------------------------
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 ) )
SQL> WITH DATA AS (
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,
SQL> mdsys. sdo_geometry( 'POINT(4.4 4.4)' ) AS point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( a. multilinestring, 4 , a. point) . Get_WKT( ) AS geom
SQL> FROM DATA a;
GEOM
--------------------------------------------------------------------------------
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 ) )
SQL> WITH DATA AS (
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,
SQL> mdsys. sdo_geometry( 'POINT(30 30)' ) AS point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_InsertVertex( a. multilinestring,- 1 , a. point) . Get_WKT( ) AS st_geom
SQL> FROM DATA a;
ST_GEOM
--------------------------------------------------------------------------------
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 ) )
SQL> -- ***********************************************************************************
SQL> -- ST_UpdateVertex
SQL> -- ***********************************************************************************
SQL> -- ST_UpdatePoint all indexes
SQL> WITH DATA AS (
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
SQL> FROM dual
SQL> )
SQL> SELECT CASE WHEN b. posn = SDO_UTIL. GETNUMVERTICES( ( SELECT mPoint FROM DATA ) ) + 1 THEN - 1 ELSE b. posn END AS posn,
SQL> &&DefaultSchema.. SC4O. ST_UpdateVertex( a. mPoint,
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 */
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 4.5 , 4.6 , NULL ) , NULL , NULL ) )
SQL> AS point
SQL> FROM DATA a,
SQL> ( SELECT level AS posn FROM dual CONNECT BY level <= ( SDO_UTIL. GETNUMVERTICES( ( SELECT mPoint FROM DATA ) ) + 1 ) ) b;
POSN POINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------- ---------------------------------------------------------------------------------------------------
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 ) )
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 ) )
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 ) )
- 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 ) )
SQL> -- ST_UpdateVertex from/to
SQL> WITH DATA AS (
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,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 3.43513 , 3.451245 , NULL ) , NULL , NULL ) AS fromPoint,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 4.555 , 4.666 , NULL ) , NULL , NULL ) AS toPoint
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_UpdateVertex( a. geom, a. fromPoint, a. toPoint) AS updated_geom
SQL> FROM DATA a,
SQL> -- LinearRing single point update returns LINESTRING...
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(2 2, 2 7, 12 7, 12 2, 2 2)' , NULL ) AS the_line,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 1 , 1 , NULL ) , NULL , NULL ) AS the_point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_UpdateVertex( b. the_line, 1 , b. the_point) AS setPointOfPoly
SQL> FROM DATA b;
SETPOINTOFPOLY( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- If point first or last in existing polygon it will fail ....
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'POLYGON((2 2, 2 7, 12 7, 12 2, 2 2))' , NULL ) AS the_poly,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 1 , 1 , NULL ) , NULL , NULL ) AS the_point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_UpdateVertex( b. the_poly, 1 , b. the_point) AS setPointOfPoly
SQL> FROM DATA b;
SELECT GIS. SC4O. ST_UpdateVertex( b. the_poly, 1 , b. the_point) AS setPointOfPoly
*
ERROR at line 6 :
ORA- 29532 : Java CALL TERMINATED BY uncaught Java exception: java. SQL . SQLException: LinearRings must be closed linestring
ORA- 06512: at "GIS.SC4O" , line 882
SQL> -- .... So up overloaded ST_UpdateVertex...
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'POLYGON((2 2, 2 7, 12 7, 12 2, 2 2))' , NULL ) AS the_poly,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 2 , 2 , NULL ) , NULL , NULL ) AS from_Point,
SQL> mdsys. SDO_Geometry( 2001 , NULL , sdo_point_type( 1 , 1 , NULL ) , NULL , NULL ) AS to_Point
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_UpdateVertex( b. the_poly, b. from_point, b. to_point) AS setPointOfPoly
SQL> FROM DATA b;
SETPOINTOFPOLY( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- ***********************************************************************************
SQL> -- ST_DeleteVertex
SQL> -- ***********************************************************************************
SQL> -- Test single point
SQL> SELECT &&DefaultSchema.. SC4O. ST_DeleteVertex( mdsys. SDO_Geometry( 3001 , NULL , sdo_point_type( 1.1 , 2.4 , 3.5 ) , NULL , NULL ) ,
SQL> 1 ) AS point
SQL> FROM dual;
POINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( NULL , NULL , NULL , NULL , NULL )
SQL> -- Remove vertices from multipoint
SQL> WITH DATA AS (
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
SQL> FROM dual
SQL> )
SQL> SELECT CASE WHEN LEVEL < 4 THEN LEVEL ELSE - 1 END AS point,
SQL> &&DefaultSchema.. SC4O. ST_DeleteVertex( a. geom, CASE WHEN LEVEL < a. numVertices THEN LEVEL ELSE - 1 END ) AS RemovedPoint
SQL> FROM ( SELECT sdo_util. getNumVertices( b. geom) + 1 AS numVertices, b. geom
SQL> FROM DATA b
SQL> ) a
SQL> CONNECT BY level <= a. numVertices;
POINT REMOVEDPOINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------- ---------------------------------------------------------------------------------------------------
1 SDO_GEOMETRY( 2005 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1 , 2 ) , SDO_ORDINATE_ARRAY( 2.2 , 2.2 , 3.2 , 3.2 ) )
2 SDO_GEOMETRY( 2005 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1 , 2 ) , SDO_ORDINATE_ARRAY( 1.1 , 1.1 , 3.2 , 3.2 ) )
3 SDO_GEOMETRY( 2005 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1 , 2 ) , SDO_ORDINATE_ARRAY( 1.1 , 1.1 , 2.2 , 2.2 ) )
- 1 SDO_GEOMETRY( 2005 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1 , 2 ) , SDO_ORDINATE_ARRAY( 1.1 , 1.1 , 2.2 , 2.2 ) )
SQL> -- Remove first coordinate in standard LineString
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(1.1 1.1,2.2 2.2,3.3 3.3)' , NULL ) AS linestring
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_DeleteVertex( a. linestring, 1 ) /*.Get_WKT()*/ AS st_geom
SQL> FROM DATA a;
ST_GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2002 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , SDO_ORDINATE_ARRAY( 2.2 , 2.2 , 3.3 , 3.3 ) )
SQL> -- Try to remove a point from 2 point linestring (should get error)
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(1.1 1.1,2.2 2.2)' , NULL ) AS linestring
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_DeleteVertex( a. linestring, 1 ) . Get_WKT( ) AS st_geom
SQL> FROM DATA a;
ERROR:
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 )
ORA- 06512: at "GIS.SC4O" , line 876
no ROWS selected
SQL> -- Try to remove 2 points from three point linestring (should get error)
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(1.1 1.1,2.2 2.2,3.3 3.3)' , NULL ) AS linestring
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_DeleteVertex(
SQL> &&DefaultSchema.. SC4O. ST_DeleteVertex( a. linestring, 1 ) ,
SQL> 1 ) . Get_WKT( ) AS st_geom
SQL> FROM DATA a;
ERROR:
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 )
ORA- 06512: at "GIS.SC4O" , line 876
no ROWS selected
SQL> -- Remove points 1-4 in a 3D LineString, note 0 and NULL denote is the last coord
SQL> WITH DATA AS (
SQL> SELECT mdsys. SDO_Geometry( 3002 , NULL , NULL ,
SQL> sdo_elem_info_array( 1 , 2 , 1 ) ,
SQL> sdo_ordinate_array( 1.1 , 1.1 , 9 , 2.2 , 2.2 , 9 , 3.3 , 3.3 , 9 ) ) AS geom
SQL> FROM dual
SQL> )
SQL> SELECT CASE WHEN LEVEL < 4 THEN LEVEL ELSE - 1 END AS point,
SQL> &&DefaultSchema.. SC4O. ST_DeleteVertex(
SQL> a. geom,
SQL> CASE WHEN LEVEL < a. numVertices THEN LEVEL ELSE - 1 END
SQL> ) AS RemovedPoint
SQL> FROM ( SELECT sdo_util. getNumVertices( b. geom) + 1 AS numVertices, b. geom
SQL> FROM DATA b
SQL> ) a
SQL> CONNECT BY level <= a. numVertices;
POINT REMOVEDPOINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------- ---------------------------------------------------------------------------------------------------
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 ) )
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 ) )
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 ) )
- 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 ) )
SQL> -- Test single polygon
SQL> SELECT NULL AS removedVertex, mdsys. sdo_geometry( 'POLYGON((2 2, 12 2, 12 7, 2 7, 2 2))' , NULL ) AS geom FROM dual
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
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;
REMOVEDVERTEX GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
------------- ---------------------------------------------------------------------------------------------------
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 ) )
2 SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 2 , 2 , 12 , 7 , 2 , 7 , 2 , 2 ) )
3 SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 2 , 2 , 12 , 2 , 2 , 7 , 2 , 2 ) )
SQL> -- ***********************************************************************************
SQL> -- ST_LineMerger
SQL> -- ***********************************************************************************
SQL> --
SQL> WITH DATA AS (
SQL> SELECT CAST ( multiset(
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (220 160, 240 150, 270 150, 290 170)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (60 210, 30 190, 30 160)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (70 430, 100 430, 120 420, 140 400)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (160 310, 160 280, 160 250, 170 230)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (170 230, 180 210, 200 180, 220 160)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (30 160, 40 150, 70 150)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (160 310, 200 330, 220 340, 240 360)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (140 400, 150 370, 160 340, 160 310)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (160 310, 130 300, 100 290, 70 270)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (240 360, 260 390, 260 410, 250 430)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (70 150, 100 180, 100 200)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (70 270, 60 260, 50 240, 50 220, 60 210)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (100 200, 90 210, 60 210)' , NULL ) AS geom FROM dual
SQL> ) AS mdsys. sdo_geometry_array) AS mLines
SQL> FROM dual
SQL> )
SQL> SELECT rownum AS Id, &&DefaultSchema.. SC4O. st_linemerger( s. mlines, 3 )
SQL> FROM DATA s;
ID GIS. SC4O. ST_LINEMERGER( S. MLINES, 3 ) ( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------- ---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- ***********************************************************************************
SQL> -- St_HausdorffSimilarityMeasure, St_AreaSimilarityMeasure
SQL> -- ***********************************************************************************
SQL> --
SQL> WITH DATA AS (
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,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. St_HausdorffSimilarityMeasure( area1, area2, 3 ) AS HSM,
SQL> &&DefaultSchema.. SC4O. St_AreaSimilarityMeasure( area1, area2, 3 ) AS ASM
SQL> FROM DATA ;
HSM ASM
---------- ----------
1 1
SQL> WITH DATA AS (
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,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. St_HausdorffSimilarityMeasure( area1, area2, 3 ) AS HSM,
SQL> &&DefaultSchema.. SC4O. St_AreaSimilarityMeasure( area1, area2, 3 ) AS ASM
SQL> FROM DATA ;
HSM ASM
---------- ----------
. 999975001 . 999950002
SQL> WITH DATA AS (
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,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. St_HausdorffSimilarityMeasure( line1, line2, 3 ) AS HSM
SQL> FROM DATA ;
HSM
----------
. 997645726
SQL> -- ***********************************************************************************
SQL> -- ST_Area, ST_Length, ST_IsValid, ST_IsSimple, ST_Dimension, ST_CoordDim, ST_GeomFromText
SQL> -- ***********************************************************************************
SQL> --
SQL> WITH DATA AS (
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'POINT (10 5)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'POINT (900 900 10)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10 10, 20 10)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (100 100, 900 900)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'LINESTRING (10 10 1, 20 10 2)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'LINESTRING (10 25, 20 30, 25 25, 30 30)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10 55, 15 55, 20 60, 10 60, 10 55)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'LINESTRING (10 85, 20 90, 20 85, 10 90, 10 85)' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'POLYGON ((10 105, 15 105, 20 110, 10 110, 10 105))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'POLYGON ((100 100, 500 100, 500 500, 100 500, 100 100))' , NULL ) AS geom FROM dual UNION ALL
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
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
SQL> SELECT mdsys. sdo_geometry( 'POLYGON ((10 135, 20 135, 20 140, 10 140, 10 135))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'MULTIPOINT ((50 5), (55 7), (60 5))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'MULTIPOINT ((65 5))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'MULTIPOINT ((100 100), (900 900))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'MULTILINESTRING ((50 15, 55 15), (60 15, 65 15))' , NULL ) AS geom FROM dual UNION ALL
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'MULTILINESTRING ((50 22, 60 22), (55 20, 55 25))' , NULL ) AS geom FROM dual UNION ALL
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
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
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
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
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
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
SQL> )
SQL> SELECT DISTINCT
SQL> CASE WHEN a. geom. get_gtype( ) IN ( 1 ) THEN 'Point'
SQL> WHEN a. geom. get_gtype( ) IN ( 5 ) THEN 'MultiPoint'
SQL> WHEN a. geom. get_gtype( ) IN ( 2 ) THEN 'Line'
SQL> WHEN a. geom. get_gtype( ) IN ( 6 ) THEN 'MultiLine'
SQL> WHEN a. geom. get_gtype( ) IN ( 3 ) THEN 'Area'
SQL> WHEN a. geom. get_gtype( ) IN ( 7 ) THEN 'MultiArea'
SQL> ELSE 'Not Supported'
SQL> END geometryType,
SQL> round( &&DefaultSchema.. SC4O. ST_area( a. geom, 3 ) , 3 ) AS area,
SQL> round( sdo_geom. sdo_area( a. geom, 0.0005 ) , 3 ) AS areaSDO,
SQL> round( &&DefaultSchema.. SC4O. ST_length( a. geom, 3 ) , 3 ) AS len,
SQL> round( sdo_geom. sdo_length( a. geom, 0.0005 ) , 3 ) AS lenSDO,
SQL> &&DefaultSchema.. SC4O. ST_IsValid( a. geom) AS isValid,
SQL> &&DefaultSchema.. SC4O. ST_IsSimple( a. geom) AS isSimple,
SQL> &&DefaultSchema.. SC4O. ST_Dimension( a. geom) AS Dimension,
SQL> &&DefaultSchema.. SC4O. ST_CoordDim( a. geom) AS coordDim
SQL> FROM DATA a
SQL> ORDER BY 1 , 2 , 4 ;
GEOMETRYTYPE AREA AREASDO LEN LENSDO ISVALID ISSIMPLE DIMENSION COORDDIM
------------- ---------- ---------- ---------- ---------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Area 26 52 TRUE TRUE 2 2
Area 37.5 37.5 27.071 27.071 TRUE TRUE 2 2
Area 50 50 30 30 TRUE TRUE 2 2
Area 160000 160000 1600 1600 TRUE TRUE 2 2
Area 910000 910000 5200 5200 TRUE TRUE 2 2
Line 0 0 10 10 TRUE TRUE 1 2
Line 0 0 10 10.05 TRUE TRUE 1 3
Line 0 25.322 TRUE TRUE 1 2
Line 0 0 27.071 27.071 TRUE TRUE 1 2
Line 0 32.361 TRUE FALSE 1 2
Line 0 0 1131.371 1131.371 TRUE TRUE 1 2
MultiArea 27 27 54.828 54.828 TRUE TRUE 2 2
MultiArea 31 30 TRUE TRUE 2 2
MultiArea 41 41 42.944 42.944 TRUE TRUE 2 2
MultiArea 49.5 49.5 41.071 41.071 TRUE TRUE 2 2
MultiArea 320000 320000 3200 3200 TRUE TRUE 2 2
MultiLine 0 0 10 10 TRUE TRUE 1 2
MultiLine 0 15 TRUE FALSE 1 2
MultiLine 0 0 30.688 30.688 TRUE TRUE 1 2
MultiPoint 0 0 0 0 TRUE TRUE 0 2
MultiPoint 0 0 TRUE TRUE 0 2
Point 0 0 0 0 TRUE TRUE 0 3
Point 0 0 TRUE TRUE 0 2
23 ROWS selected.
SQL> -- ***********************************************************************************
SQL> -- ST_Buffer
SQL> -- ***********************************************************************************
SQL> --
SQL> -- No Geometry
SQL> --
SQL> SELECT &&DefaultSchema.. SC4O. ST_Buffer( NULL , 100.0 , 1 ) AS polygon
SQL> FROM dual;
POLYGON( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SQL> -- 1. 15m Buffer with _Round_ End Cap and Join Style*
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 ,
SQL> 1 /*CAP_ROUND*/ ,
SQL> 1 /*JOIN_ROUND*/ ,
SQL> 8 /*QUADRANT_SEGMENTS*/ ,
SQL> 0 /*FULL BUFFER*/ ) AS buf
SQL> FROM dual;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 2. 15m Buffer with _SQUARE_ End Cap and ROUND Join Style*
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 ,
SQL> 3 /*CAP_SQUARE*/ ,
SQL> 1 /*JOIN_ROUND*/ ,
SQL> 8 /*QUADRANT_SEGMENTS*/ ,
SQL> 0 /*FULL BUFFER*/ ) AS buf
SQL> FROM dual;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 3. 15m Buffer with _BUTT_ End Cap and _ROUND_ Join Style*
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 ,
SQL> 2 /*CAP_BUTT*/ ,
SQL> 1 /*JOIN_ROUND*/ ,
SQL> 8 /*QUADRANT_SEGMENTS*/ ,
SQL> 0 /*FULL BUFFER*/ ) AS buf
SQL> FROM dual;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 4. 15m Buffer with _BUTT_ End Cap and _MITRE_ Join Style*
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 ,
SQL> 2 /*CAP_BUTT*/ ,
SQL> 2 /*JOIN_MITRE*/ ,
SQL> 8 /*QUADRANT_SEGMENTS*/ ,
SQL> 0 /*FULL BUFFER*/ ) AS buf
SQL> FROM dual;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 5. 15m Buffer with _BUTT_ End Cap and _BEVEL_ Join Style*
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 ,
SQL> 2 /*CAP_BUTT*/ ,
SQL> 3 /*JOIN_BEVEL*/ ,
SQL> 8 /*QUADRANT_SEGMENTS*/ ,
SQL> 0 /*FULL BUFFER*/ ) AS buf
SQL> FROM dual;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 6. Simple Bent Line Buffered Left and Right Side by 15m.
SQL> SELECT &&DefaultSchema.. SC4O. ST_Buffer( line, b. left_right_distance, 2 , 1 , c. join_type, 8 , 1 ) AS buf
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
SQL> FROM dual
SQL> ) a,
SQL> ( SELECT CASE WHEN level = 1 THEN - 15.0 ELSE 15.0 END AS left_right_distance FROM dual CONNECT BY level < 3 ) b,
SQL> ( SELECT level AS join_type FROM dual CONNECT BY level < 4 ) c;
BUF( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
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 ) )
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 ) )
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 ) )
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 ) )
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 ) )
6 ROWS selected.
SQL> -- ***********************************************************************************
SQL> -- ST_Union, ST_Intersection, ST_XOR, ST_Difference, ST_CoordinateRounder
SQL> -- ***********************************************************************************
SQL> -- Polygon tests
SQL> --
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 1 , 1 , 10 , 10 ) ) AS geom1,
SQL> mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 5 , 5 , 15 , 15 ) ) AS geom2
SQL> FROM dual
SQL> )
SQL> SELECT 'UNION' AS gtype,
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 ) ) ,
SQL> mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 5 , 5 , 15 , 15 ) ) ,
SQL> 1 ) AS rGeom,
SQL> 'INTERSECTION' AS gtype,
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 ) ) ,
SQL> mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 5 , 5 , 15 , 15 ) ) ,
SQL> 1 ) AS rGeom,
SQL> 'XOR' AS gtype,
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 ) ) ,
SQL> mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 5 , 5 , 15 , 15 ) ) ,
SQL> 1 ) AS rGeom,
SQL> 'DIFFERENCE' AS gtype,
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 ) ) ,
SQL> mdsys. sdo_geometry( 2003 , 82469 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 5 , 5 , 15 , 15 ) ) ,
SQL> 1 ) AS rGeom
SQL> FROM DATA ;
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)
----- --------------------------------------------------------------------------------------------------- ------------ -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Union of two points
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2001 , 32639 , MDSYS. SDO_POINT_TYPE( 548810.44489 , 3956383.07564 , NULL ) , NULL , NULL ) g1,
SQL> MDSYS. SDO_GEOMETRY( 2001 , 32639 , MDSYS. SDO_POINT_TYPE( 548766.398 , 3956415.329 , NULL ) , NULL , NULL ) g2
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Union( g1, g2, 1 ) , 1 ) AS GeoProcess,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_union( g1, g2, 0.05 ) , 1 ) AS Oracle
SQL> FROM DATA ;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 ) )
SQL> -- Coordinate rounding ...
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2001 , 32639 , MDSYS. SDO_POINT_TYPE( 548810.44489 , 3956383.07564 , NULL ) , NULL , NULL ) g1,
SQL> MDSYS. SDO_GEOMETRY( 2001 , 32639 , MDSYS. SDO_POINT_TYPE( 548766.398 , 3956415.329 , NULL ) , NULL , NULL ) g2
SQL> FROM dual
SQL> )
SQL> SELECT sdo_geom. relate( &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Union( g1, g2, 1 ) , 1 ) ,
SQL> 'DETERMINE' ,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_union( g1, g2, 0.05 ) , 1 ) ,
SQL> 0.05 ) AS compare
SQL> FROM DATA ;
COMPARE
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
EQUAL
SQL> -- Intersection of mixed objects ...
SQL> -- 1. A point and a line
SQL> WITH DATA AS (
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,
SQL> MDSYS. SDO_GEOMETRY( 2001 , 32639 , MDSYS. SDO_POINT_TYPE( 548766.398 , 3956415.329 , NULL ) , NULL , NULL ) g2
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Intersection( g1, g2, 1 ) , 1 ) AS GeoProcess,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_intersection( g1, g2, 0.05 ) , 1 ) AS Oracle
SQL> FROM DATA ;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 )
SQL> -- 2. Two crossing lines
SQL> WITH DATA AS (
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,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Intersection( g1, g2, 1 ) , 1 ) AS GeoProcess,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_intersection( g1, g2, 0.05 ) , 1 ) AS Oracle
SQL> FROM DATA ;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 )
SQL> -- 3. A line and a polygon
SQL> WITH DATA AS (
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,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Intersection( g1, g2, 1 ) , 1 ) AS GeoProcess,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_intersection( g1, g2, 0.05 ) , 1 ) AS Oracle
SQL> FROM DATA ;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 4. A Point and polygon
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry ( 2001 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1 , 1 ) , SDO_ORDINATE_ARRAY ( 13 , 106 ) ) g1,
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
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_CoordinateRounder( &&DefaultSchema.. SC4O. ST_Intersection( g1, g2, 1 ) , 1 ) AS GeoProcess,
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder( sdo_geom. sdo_intersection( g1, g2, 0.05 ) , 1 ) AS Oracle
SQL> FROM DATA ;
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)
--------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( 13 , 106 , NULL ) , NULL , NULL ) SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( 13 , 106 , NULL ) , NULL , NULL )
SQL> -- ***********************************************************************************
SQL> -- ST_Union, ST_Intersection, ST_XOR, ST_Difference, ST_CoordinateRounder
SQL> -- ***********************************************************************************
SQL> -- 1. Point is returned as is
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( sdo_geometry( 2001 , NULL , sdo_point_type( 1 , 1 , NULL ) , NULL , NULL ) , 2 ) AS mbc FROM dual;
MBC( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( 1 , 1 , NULL ) , NULL , NULL )
SQL> -- 2. Straight line defined by two points
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( sdo_geometry( 'MULTIPOINT ((10 10), (20 20))' , 0 ) , 2 ) AS mbc FROM dual;
MBC( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 3. Three Points In Line
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( sdo_geometry( 'MULTIPOINT ((10 10), (20 20), (30 30))' , 0 ) , 2 ) AS mbc FROM dual;
MBC( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 4. three points
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( sdo_geometry( 'MULTIPOINT ((10 10), (20 20), (10 20))' , 0 ) , 2 ) AS mbc FROM dual;
MBC( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 5. testTriangleWithMiddlePoint
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( sdo_geometry( 'MULTIPOINT ((10 10), (20 20), (10 20), (15 19))' , 0 ) , 2 ) AS mbc FROM dual;
MBC( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
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 ) )
SQL> -- 3. Linestring
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING(0 0, 10 10, 10 0, 20 10)' , 0 ) AS line FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( line, 2 ) AS dGeom
SQL> FROM DATA ;
DGEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , 0 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 21.18 , 5 , 20.97 , 7.18 , 20.33 , 9.28 , 19.3 , 11.21 , 17.91 , 12.91 , 16.21 , 14.3 , 14.28 , 15.33 , 12.18 , 15.97 , 10 , 16.18 , 7.82 , 15.97 , 5.72 , 15.33 , 3.79 , 14.3 , 2.09 , 12.91 , . 7, 11.21 , -. 33, 9.28 , -. 97, 7.18 , - 1.18 , 5 , -. 97, 2.82 , -. 33, . 72, . 7, - 1.21 , 2.09 , - 2.91 , 3.79 , - 4.3 , 5.72 , - 5.33 , 7.82 , - 5.97 , 10 , - 6.18 , 12.18 , - 5.97 , 14.28 , - 5.33 , 16.21 , - 4.3 , 17.91 , - 2.91 , 19.3 , - 1.21 , 20.33 , . 72, 20.97 , 2.82 , 21.18 , 5 ) )
SQL> -- 7. Optimized Rectangle
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 2003 , NULL , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( 1 , 1 , 10 , 10 ) ) AS rect FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_MinimumBoundingCircle( rect, 2 ) AS dGeom FROM DATA ;
DGEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 11.86 , 5.5 , 11.74 , 6.74 , 11.38 , 7.94 , 10.79 , 9.04 , 10 , 10 , 9.04 , 10.79 , 7.94 , 11.38 , 6.74 , 11.74 , 5.5 , 11.86 , 4.26 , 11.74 , 3.06 , 11.38 , 1.96 , 10.79 , 1 , 10 , . 21, 9.04 , -. 38, 7.94 , -. 74, 6.74 , -. 86, 5.5 , -. 74, 4.26 , -. 38, 3.06 , . 21, 1.96 , 1 , 1 , 1.96 , . 21, 3.06 , -. 38, 4.26 , -. 74, 5.5 , -. 86, 6.74 , -. 74, 7.94 , -. 38, 9.04 , . 21, 10 , 1 , 10.79 , 1.96 , 11.38 , 3.06 , 11.74 , 4.26 , 11.86 , 5.5 ) )
SQL> -- ***********************************************************************************
SQL> -- ST_PolygonBuilder
SQL> -- ***********************************************************************************
SQL> --
SQL> -- 1. No result set
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CAST ( NULL AS mdsys. sdo_geometry_array) , 1 ) AS polygon
SQL> FROM dual;
SELECT GIS. SC4O. ST_Polygonbuilder( CAST ( NULL AS mdsys. sdo_geometry_array) , 1 ) AS polygon
*
ERROR at line 1 :
ORA- 29532 : Java CALL TERMINATED BY uncaught Java exception: java. SQL . SQLException: ST_PolygonBuilder: No geometry array passed TO PolygonBuilder.
ORA- 06512: at "GIS.SC4O" , line 539
SQL> -- 2. Result set with no mdsys.sdo_geometry
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CURSOR( SELECT * FROM DUAL) , 1 ) AS polygon
SQL> FROM dual;
SELECT GIS. SC4O. ST_Polygonbuilder( CURSOR( SELECT * FROM DUAL) , 1 ) AS polygon
*
ERROR at line 1 :
ORA- 29532 : Java CALL TERMINATED BY uncaught Java exception: java. SQL . SQLException: ST_PolygonBuilder: Failed WITH ST_PolygonBuilder: No SDO_Geometry COLUMN can be found IN DATA TO be exported.
ORA- 06512: at "GIS.SC4O" , line 533
SQL> -- 3. Empty result set
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CURSOR( SELECT mdsys. sdo_geometry( 2002 , NULL , NULL , sdo_elem_info_array( 1 , 2 , 1 ) , sdo_ordinate_array( 1 , 1 , 10 , 10 ) ) AS geom FROM dual WHERE rownum < 1 ) , 1 ) AS polygon
SQL> FROM dual;
POLYGON( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SQL> -- 4. Result set with one linestring
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CURSOR( SELECT mdsys. sdo_geometry( 2002 , 82469 , NULL , sdo_elem_info_array( 1 , 2 , 1 ) , sdo_ordinate_array( 1 , 1 , 10 , 10 ) ) AS geom FROM dual) , 1 ) AS polygon
SQL> FROM dual;
POLYGON( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SQL> -- 5. From a resultSet containing lins
SQL> DECLARE
SQL> v_lines &&DefaultSchema.. exporter. refcur_t;
SQL> v_geometry mdsys. sdo_geometry;
SQL> BEGIN
SQL> OPEN v_lines FOR SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 1.0, 10.0 1.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 1.0, 10.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 10.0, 1.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 10.0, 1.0 1.0)' ) AS line FROM dual;
SQL> v_geometry := &&DefaultSchema.. SC4O. ST_PolygonBuilder( v_lines, 1 ) ;
SQL> dbms_output. put_line( 'Geometry: ' ||
SQL> CASE WHEN v_geometry IS NULL THEN 'NULL'
SQL> ELSE ' GeometryType: ' || to_char( v_geometry. sdo_gtype) ||
SQL> ' numPoints: ' || mdsys. sdo_util. GETNUMVERTICES( v_geometry)
SQL> END ) ;
SQL> END ;
SQL> /
Geometry: GeometryType: 2003 numPoints: 5
PL/ SQL PROCEDURE successfully completed.
SQL> -- 6. Create polygon from COLLECTion of lines
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 1.0, 10.0 1.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 1.0, 10.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 10.0, 1.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 10.0, 1.0 1.0)' ) AS line FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CAST ( COLLECT( l. line) AS mdsys. sdo_geometry_array) , 1 ) AS polygon
SQL> FROM DATA l;
POLYGON( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 10 , 10 , 1 , 10 , 1 , 1 , 10 , 1 , 10 , 10 ) )
SQL> -- 7. Create polygon from CURSOR containing lines
SQL> SELECT &&DefaultSchema.. SC4O. ST_Polygonbuilder( CURSOR(
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 1.0, 10.0 1.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 1.0, 10.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (10.0 10.0, 1.0 10.0)' ) AS line FROM dual UNION ALL
SQL> SELECT mdsys. sdo_geometry( 'LINESTRING (1.0 10.0, 1.0 1.0)' ) AS line FROM dual
SQL> ) , 1 ) AS polygon
SQL> FROM dual;
POLYGON( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 10 , 1 , 10 , 10 , 1 , 10 , 1 , 1 , 10 , 1 ) )
SQL> -- ***********************************************************************************
SQL> -- ST_Snap
SQL> -- ***********************************************************************************
SQL> --
SQL> -- 1. Snap line to line ...
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2002 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( 0.2 , 0.4 , 9.8 , 10.5 , 19.7 ,- 0.2 , 30.2 , 9.6 ) ) AS geom1,
SQL> 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 , 10 ) ) AS snapGeom
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_Snap( geom1, snapgeom, 1.0 , 3 ) AS SnappedLines
SQL> FROM DATA ;
SNAPPEDLINES( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2004 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 , 9 , 2 , 1 ) , SDO_ORDINATE_ARRAY( 0 , 0 , 10 , 10 , 20 , 0 , 30 , 10 , 0 , 0 , 10 , 10 , 20 , 0 , 30 , 10 ) )
SQL> -- 2. Snap first line to second
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2002 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( 0.2 , 0.4 , 9.8 , 10.5 , 19.7 ,- 0.2 , 30.2 , 9.6 ) ) AS line1,
SQL> 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 , 10 ) ) AS snapGeom
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_SnapTo( line1, snapgeom, 1.0 , 3 ) AS SnappedLine1
SQL> FROM DATA ;
SNAPPEDLINE1( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2002 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , SDO_ORDINATE_ARRAY( 0 , 0 , 10 , 10 , 20 , 0 , 30 , 10 ) )
SQL> -- 3. Snap point to area
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2001 , NULL , MDSYS. SDO_POINT_TYPE( - 7.091 , 1.347 , NULL ) , NULL , NULL ) AS point,
SQL> MDSYS. SDO_GEOMETRY( 2003 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( - 8.369 , 14.803 ,- 8.191 , 8.673 ,- 8.072 , 0.400 , 5.737 , 0.400 , 5.142 , 14.922 ,- 8.369 , 14.803 ) ) AS snapGeom
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_SnapTo( point, snapgeom, 2.0 , 3 ) AS snappedPoint
SQL> FROM DATA ;
SNAPPEDPOINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( - 8.072 , . 4, NULL ) , NULL , NULL )
SQL> -- 4. Snap a line to an area
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2002 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( - 8.339 ,- 1.553 ,- 8.682 , 8.496 ,- 8.476 , 16.728 ) ) AS line,
SQL> MDSYS. SDO_GEOMETRY( 2003 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( - 8.369 , 14.803 ,- 8.191 , 8.673 ,- 8.072 , 0.400 , 5.737 , 0.400 , 5.142 , 14.922 ,- 8.369 , 14.803 ) ) AS snapGeom
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_SnapTo( line, snapgeom, 0.75 , 3 ) AS snappedLine
SQL> FROM DATA ;
SNAPPEDLINE( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2002 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 2 , 1 ) , SDO_ORDINATE_ARRAY( - 8.339 , - 1.553 , - 8.072 , . 4, - 8.191 , 8.673 , - 8.369 , 14.803 , - 8.476 , 16.728 ) )
SQL> -- 5. Snap one area to another
SQL> WITH DATA AS (
SQL> SELECT MDSYS. SDO_GEOMETRY( 2003 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( - 24.089 , 0.348 ,- 8.339 , 0.553 ,- 8.682 , 8.496 ,- 8.476 , 14.728 ,- 24.020 , 14.522 ,- 24.089 , 0.348 ) ) AS poly,
SQL> MDSYS. SDO_GEOMETRY( 2003 , NULL , NULL , MDSYS. SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , MDSYS. SDO_ORDINATE_ARRAY( - 8.369 , 14.803 ,- 8.191 , 8.673 ,- 8.072 , 0.400 , 5.737 , 0.400 , 5.142 , 14.922 ,- 8.369 , 14.803 ) ) AS snapPoly
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_SnapTo( poly, snapPoly, 0.75 , 3 ) AS snappedPoly
SQL> FROM DATA ;
SNAPPEDPOLY( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( - 24.089 , . 348, - 8.072 , . 4, - 8.191 , 8.673 , - 8.369 , 14.803 , - 24.02 , 14.522 , - 24.089 , . 348) )
SQL> -- ***********************************************************************************
SQL> -- ST_Centroid, ST_ConvexHull, ST_Envelope
SQL> -- ***********************************************************************************
SQL> --
SQL> SELECT 'ORIGINAL' AS method, mdsys. sdo_geometry( 'POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))' ) AS geom FROM dual UNION ALL
SQL> SELECT 'JCENTROID' AS method, &&DefaultSchema.. SC4O. ST_Centroid( sdo_geometry( 'POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))' ) , 3 , 1 ) AS geom FROM dual UNION ALL
SQL> SELECT 'OCENTROID' AS method, mdsys. sdo_geom. sdo_centroid( sdo_geometry( 'POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))' ) , 0.005 ) AS geom FROM dual UNION ALL
SQL> SELECT 'JCONVEXH' AS method, &&DefaultSchema.. SC4O. ST_ConvexHull( sdo_geometry( 'POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))' ) , 3 ) AS geom FROM dual UNION ALL
SQL> SELECT 'JENVELOP' AS method, &&DefaultSchema.. SC4O. ST_Envelope( sdo_geometry( 'POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))' ) , 3 ) AS geom FROM dual;
METHOD GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
--------- ---------------------------------------------------------------------------------------------------
ORIGINAL SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( -. 93, -. 17, -. 75, -. 22, -. 14, . 22, -. 34, -. 17, . 33, . 05, . 87, -. 34, . 97, . 3, -. 15, . 97, -. 93, -. 17) )
JCENTROID SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( . 015, . 635, NULL ) , NULL , NULL )
OCENTROID SDO_GEOMETRY( 2001 , NULL , SDO_POINT_TYPE( . 099098525, . 279588754, NULL ) , NULL , NULL )
JCONVEXH SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( . 87, -. 34, . 97, . 3, -. 15, . 97, -. 93, -. 17, -. 75, -. 22, . 87, -. 34) )
JENVELOP SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( -. 93, -. 34, . 97, -. 34, . 97, . 97, -. 93, . 97, -. 93, -. 34) )
SQL> --select 'PCENTROID' as method, &&DefaultSchema..centroid.sdo_centroid(sdo_geometry('POLYGON ((-0.93 -0.17, -0.75 -0.22, -0.14 0.22, -0.34 -0.17, 0.33 0.05, 0.87 -0.34, 0.97 0.3, -0.15 0.97, -0.93 -0.17))'),1,1,3,3,2) as geom from dual union all
SQL> -- ***********************************************************************************
SQL> -- ST_GeomFromText, ST_GeomFromEWKT, ST_AsEWKT, ST_AsText
SQL> -- ***********************************************************************************
SQL> --
SQL> -- 1. FROM POINT EMPTY
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'POINT EMPTY' ) AS point
SQL> FROM dual;
POINT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SQL> -- 2. FROM BBOX
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromEWKT( 'BOX(-32 147, -33 148)' , 8307 ) AS optRect
SQL> FROM dual;
OPTRECT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , 8307 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( - 33 , 147 , - 32 , 147 , - 32 , 148 , - 33 , 148 , - 33 , 147 ) )
SQL> -- 3. Rectangle Polgon as EWKT
SQL> SELECT &&DefaultSchema.. SC4O. ST_AsEWKT( sdo_geometry( 2003 , 8307 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( - 32 , 147 ,- 33 , 148 ) ) ) AS Box
SQL> FROM dual;
BOX
--------------------------------------------------------------------------------
SRID= 8307 ;POLYGON ( ( - 32 147 , - 33 147 , - 33 148 , - 32 148 , - 32 147 ) )
SQL> -- 4. Rectangular Polgon from BOX EWKT
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromText( 'BOX(-32 147, -33 148)' ) AS optRect
SQL> FROM dual;
OPTRECT( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( - 33 , 147 , - 32 , 147 , - 32 , 148 , - 33 , 148 , - 33 , 147 ) )
SQL> -- 5. Geodetic Rectangular Polgon to WKT
SQL> SELECT &&DefaultSchema.. SC4O. ST_AsText( sdo_geometry( 2003 , 8307 , NULL , sdo_elem_info_array( 1 , 1003 , 3 ) , sdo_ordinate_array( - 32 , 147 ,- 33 , 148 ) ) ) AS Box
SQL> FROM dual;
BOX
--------------------------------------------------------------------------------
POLYGON ( ( - 32 147 , - 33 147 , - 33 148 , - 32 148 , - 32 147 ) )
SQL> -- 6. Polgon from EWKT with SRID encoded in EWKT.
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromEWKT( 'SRID=8307;POLYGON((-76.57418668270113 38.91891450597657 0, -76.57484114170074 38.91758725401061 0, -76.57661139965057 38.91881851059802 0, -76.57418668270113 38.91891450597657 0))' ) AS geom
SQL> FROM dual;
GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 3003 , 8307 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( - 76.574187 , 38.9189145 , 0 , - 76.576611 , 38.9188185 , 0 , - 76.574841 , 38.9175873 , 0 , - 76.574187 , 38.9189145 , 0 ) )
SQL> -- 7. Polygon Polgon from EWKT no SRID
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromEWKT( 'POLYGON((-76.57418668270113 38.91891450597657 0, -76.57484114170074 38.91758725401061 0, -76.57661139965057 38.91881851059802 0, -76.57418668270113 38.91891450597657 0))' , 8307 ) AS geom
SQL> FROM dual;
GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 3003 , 8307 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( - 76.574187 , 38.9189145 , 0 , - 76.576611 , 38.9188185 , 0 , - 76.574841 , 38.9175873 , 0 , - 76.574187 , 38.9189145 , 0 ) )
SQL> -- 8. Polygon Polgon from BOX EWKT with SRID parameters
SQL> WITH DATA AS (
SQL> SELECT &&DefaultSchema.. SC4O. ST_GeomFromEWKT( 'BOX(-32 147,-33 148)' , 8307 ) AS Box
SQL> FROM dual
SQL> )
SQL> SELECT &&DefaultSchema.. SC4O. ST_AsText( a. box) AS text
SQL> FROM DATA a;
TEXT
--------------------------------------------------------------------------------
POLYGON ( ( - 33 147 , - 32 147 , - 32 148 , - 33 148 , - 33 147 ) )
SQL> SELECT &&DefaultSchema.. SC4O. ST_AsText(
SQL> sdo_geometry( 3003 , NULL , NULL , sdo_elem_info_array( 1 , 1003 , 1 ) ,
SQL> sdo_ordinate_array( - 76.57418668270113 , 38.91891450597657 , 0 , - 76.57484114170074 , 38.91758725401061 , 0 , - 76.57661139965057 , 38.91881851059802 , 0 , - 76.57418668270113 , 38.91891450597657 , 0 ) ) ) AS wkt
SQL> FROM dual;
WKT
--------------------------------------------------------------------------------
POLYGON ( ( - 76.57418668270113 38.91891450597657 0 , - 76.57484114170074 38.91758725
401061 0 , - 76.57661139965057 38.91881851059802 0 , - 76.57418668270113 38.91891450
597657 0 ) )
SQL> -- 8. Round Polgon and convert to EWKT
SQL> SELECT &&DefaultSchema.. SC4O. ST_AsEWKT(
SQL> &&DefaultSchema.. SC4O. ST_CoordinateRounder(
SQL> mdsys. sdo_geometry( 3003 , 8307 , NULL , sdo_elem_info_array( 1 , 1003 , 1 ) ,
SQL> sdo_ordinate_array( - 76.5741866827011 , 38.9189145059766 , 0 ,- 76.5766113996506 , 38.918818510598 , 0 ,- 76.5748411417007 , 38.9175872540106 , 0 ,- 76.5741866827011 , 38.9189145059766 , 0 ) ) ,
SQL> 8 )
SQL> ) AS text
SQL> FROM dual;
TEXT
--------------------------------------------------------------------------------
SRID= 8307 ;POLYGON ( ( - 76.57418668 38.91891451 0 , - 76.5766114 38.91881851 0 , - 76.5
7484114 38.91758725 0 , - 76.57418668 38.91891451 0 ) )
SQL> -- 8. Polygon to GML
SQL> COLUMN GML FORMAT A300
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 2003 , 81989 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 600000.0 , 300000.0 , 601000.0 , 300000.0 , 601000.0 , 301000.0 , 600000.0 , 301000.0 , 600000.0 , 300000.0 ) ) AS geometry
SQL> FROM dual
SQL> )
SQL> SELECT CAST ( 'SC4OGML' AS varchar2( 10 ) ) AS fn, &&defaultSchema.. SC4O. ST_AsGML( geometry) AS GML FROM DATA UNION ALL
SQL> SELECT CAST ( 'SDOGML' AS varchar2( 10 ) ) AS fn, mdsys. sdo_util. to_gmlgeometry( geometry) AS GML FROM DATA UNION ALL
SQL> SELECT CAST ( 'SDOGML311' AS varchar2( 10 ) ) AS fn, mdsys. sdo_util. to_gml311geometry( geometry) AS GML FROM DATA a;
FN GML
---------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
SC4OGML < gml:Polygon srsName= 'EPSG:81989' >
< gml:outerBoundaryIs>
< gml:LinearRing>
< gml:coordinates>
600000.0 , 300000.0 601000.0 , 300000.0 601000.0 , 301000.0 600000.0 , 301000.0 600000.0 , 300000.0
</ gml:coordinates>
</ gml:LinearRing>
</ gml:outerBoundaryIs>
</ gml:Polygon>
SDOGML < gml:Polygon srsName= "SDO:81989" xmlns:gml= "http://www.opengis.net/gml" >< gml:outerBoundaryIs>< gml:LinearRing>< gml:coordinates DECIMAL = "." cs= "," ts= " " > 600000.0 , 300000.0 601000.0 , 300000.0 601000.0 , 301000.0 600000.0 , 301000.0 600000.0 , 300000.0 </ gml:coordinates></ gml:LinearRing></ gml:outerBoundaryIs><
/ gml:Polygon>
SDOGML311 < gml:Polygon srsName= "SDO:81989" xmlns:gml= "http://www.opengis.net/gml" >< gml:exterior>< gml:LinearRing>< gml:posList srsDimension= "2" > 600000.0 300000.0 601000.0 300000.0 601000.0 301000.0 600000.0 301000.0 600000.0 300000.0 </ gml:posList></ gml:LinearRing></ gml:exterior></ gml:Polygon>
SQL> -- 9. Polygon from GML
SQL> WITH DATA AS (
SQL> SELECT mdsys. sdo_geometry( 2003 , 81989 , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 600000.0 , 300000.0 , 601000.0 , 300000.0 , 601000.0 , 301000.0 , 600000.0 , 301000.0 , 600000.0 , 300000.0 ) ) AS geometry
SQL> FROM dual
SQL> )
SQL> SELECT &&defaultSchema.. SC4O. ST_GeomFromGML(
SQL> &&defaultSchema.. SC4O. ST_AsGML( geometry)
SQL> ) AS geom
SQL> FROM DATA ;
GEOM( SDO_GTYPE, SDO_SRID, SDO_POINT( X, Y, Z) , SDO_ELEM_INFO, SDO_ORDINATES)
---------------------------------------------------------------------------------------------------
SDO_GEOMETRY( 2003 , NULL , NULL , SDO_ELEM_INFO_ARRAY( 1 , 1003 , 1 ) , SDO_ORDINATE_ARRAY( 600000 , 300000 , 601000 , 300000 , 601000 , 301000 , 600000 , 301000 , 600000 , 300000 ) )
SQL> quit;
Disconnected FROM Oracle DATABASE 12c Enterprise Edition Release 12. 1. 0. 1. 0 - 64bit Production
WITH the Partitioning, OLAP, Advanced Analytics AND REAL Application Testing options
Article Navigation:
Previous
Comment