Book Image

Applying and Extending Oracle Spatial

By : Siva Ravada, Simon Greener
Book Image

Applying and Extending Oracle Spatial

By: Siva Ravada, Simon Greener

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
About the Authors
About the Reviewers
Table Comparing Simple Feature Access/SQL and SQL/MM–Spatial

Splitting linestring geometries – ST_Split

Building on from this road centerline example, imagine a situation where the newly created centerline has to be split, so that a new driveway can be constructed to service the buildings that are in front of the street it describes. In the following figure the dotted line is the proposed driveway:

To split the new road centerline at the intersection point, a new member function that allows us to split an existing (multi) linestring using a single point needs to be constructed. The algorithm does not require the point to actually fall exactly on the line, rather it can be nearby (though the algorithm will not implement a test that limits the distance the point can be from the line – this can be done as an exercise later on).

The member function is described as follows:

Create or Replace T_Geometry As Object { T_Geometry As Object (
   Member Function ST_Split(p_point In SDO_GEOMETRY,
                            p_snap  In pls_integer default 0)