Book Image

Applying and Extending Oracle Spatial

Book Image

Applying and Extending Oracle Spatial

Overview of this book

Spatial applications should be developed in the same way that users develop other database applications: by starting with an integrated data model in which the SDO_GEOMETRY objects are just another attribute describing entities and by using as many of the database features as possible for managing the data. If a task can be done using a database feature like replication, then it should be done using the standard replication technology instead of inventing a new procedure for replicating spatial data. Sometimes solving a business problem using a PL/SQL function can be more powerful, accessible, and easier to use than trying to use external software. Because Oracle Spatial's offerings are standards compliant, this book shows you how Oracle Spatial technology can be used to build cross-vendor database solutions. Applying and Extending Oracle Spatial shows you the clever things that can be done not just with Oracle Spatial on its own, but in combination with other database technologies. This is a great resource book that will convince you to purchase other Oracle technology books on non-spatial specialist technologies because you will finally see that "spatial is not special: it is a small, fun, and clever part of a much larger whole".
Table of Contents (20 chapters)
Applying and Extending Oracle Spatial
Credits
About the Authors
About the Reviewers
www.PacktPub.com
Preface
Table Comparing Simple Feature Access/SQL and SQL/MM–Spatial
Index

Understanding the IS OF TYPE comparison operator


The Oracle IS OF TYPE comparison operator (IS NULL) allows for the type of an object to be examined. The following example demonstrates its use:

Select Case When Then End MDSYS.ST_Point.FROM_WKT('POINT(6012578.005 2116495.361)',
                                    2872) is of type (MDSYS.ST_Point)
            then 'POINT' 
            Else 'GEOMETRY' 
        end as ofTypePoint,
        case when MDSYS.ST_Point.FROM_WKT('POINT(6012578.005 2116495.361)',
                                    2872) is of type (MDSYS.ST_Geometry) 
             then 'GEOM' 
             Else 'Something Else' 
        end as ofTypeGeom,
        case when MDSYS.ST_Point.FROM_WKT('POINT(6012578.005 2116495.361)',
                                    2872) is of type (ONLY MDSYS.ST_Geometry) 
             then 'GEOM' 
             Else 'Something Else' 
        end as ofTypeOnlyGeom
  From dual;

-- Results
--
OFTYPEPOINT OFTYPEGEOM     OFTYPEONLYGEOM
----------- -------------- --------------
POINT       GEOM           Something Else

The first two results are perfectly correct as an ST_POINT type is both an ST_POINT and an ST_GEOMETRY. The use of the ONLY prefix reports that ST_POINT is not just an ST_GEOMETRY type if IS OF TYPE reports that the result of ST_POINT.FROM_WKT is an ST_POINT.