Announcing the Spatial Companion For Oracle (SC4O)

Over the past 6 months or so I have been developing a set of functions, based on the Java Topology Suite (JTS) and JAvaSPAtial (Jaspa), which complement or extend the Oracle’s proprietary functions that process its SDO_Geometry objects.

These functions were initially released using a PL/SQL package and related Java class called JTS. As the project evolved, it grew to use more than JTS functionality. As such the name was changed to Spatial Companion For Oracle (SC4O). (If you are using the old JTS-named package and Java class, make sure you remove these from your database – using the old uninstaller – because installing the new version.)

SC4O works only with Oracle’s SDO_Geometry. It is NOT meant to be a replacement for the whole Oracle SDO_Geometry type system as is the case with ESRI’s ST_Geometry and Jaspa’s implementation. My use of Jaspa is only to extract and modify for use with SDO_Geometry functionality that is missing in Oracle or needed to complement Oracle.

Some functions are specifically there to provide Locator users with the ability to execute Union/Intersection/Difference and XOR geoprocessing functions without having to consider a Spatial license. These types of functions are free for all other database Spatial implementations (PostGIS, SQL Server 2008+ etc) but not Oracle.

There are also a set of useful construction functions. Functions to delaunay triangulate a set of points, create voronoi polygons, or build polygons from linestrings.

The provided text conversion functions, eg ST_GeomFromText() etc, are all 3D and 4D aware whereas Oracle’s are not. Again, they can be used with Oracle or instead of its functions.

Finally, the SC4O functions cannot fully replace Oracle’s as these functions are for planar data only (not long/lat geodetic/geographic data) and do not support circular arcs. But often they can be used alongside Oracle’s functions where particular use cases are handled better by one or the other.

I hope these functions are useful to someone out there.