org.geotools.data.oracle.sdo
Class GeometryConverter

Object
  extended by GeometryConverter

public class GeometryConverter
extends Object

Sample use of SDO class for simple JTS Geometry.

If needed I can make a LRSGeometryConverter that allows JTS Geometries with additional ordinates beyond xyz.

Author:
jgarnett
Module:
modules/plugin/jdbc-oracle (gt-jdbc-oracle.jar)

Field Summary
protected  OracleConnection connection
           
static String DATATYPE
           
 
Constructor Summary
GeometryConverter(OracleConnection connection)
           
GeometryConverter(OracleConnection connection, GeometryFactory geometryFactory)
           
 
Method Summary
protected  double asDouble(Datum datum, double DEFAULT)
          Presents datum as a double
protected  double[] asDoubleArray(ARRAY array, double DEFAULT)
          Presents array as a double[]
protected  double[] asDoubleArray(Datum[] data, double DEFAULT)
          Presents Datum[] as a double[]
protected  double[] asDoubleArray(STRUCT struct, double DEFAULT)
          Presents struct as a double[]
protected  STRUCT asEmptyDataType()
          Representation of null as an Empty SDO_GEOMETRY.
 Geometry asGeometry(STRUCT sdoGeometry)
          Convert provided SDO_GEOMETRY to JTS Geometry.
protected  int[] asIntArray(ARRAY array, int DEFAULT)
           
protected  int[] asIntArray(Datum[] data, int DEFAULT)
          Presents Datum[] as a int[]
protected  int asInteger(Datum datum, int DEFAULT)
          Presents datum as an int
 String getDataTypeName()
          Used to handle MDSYS.SDO_GEOMETRY.
 boolean isCapable(Geometry geom)
          Ensure that obj is a JTS Geometry (2D or 3D) with no LRS measures.
protected  ARRAY toARRAY(double[] doubles, String dataType)
          Convience method for ARRAY construction.
protected  ARRAY toARRAY(int[] ints, String dataType)
          Convience method for ARRAY construction.
protected  ARRAY toATTRIBUTE(double[] ords, String desc)
           
protected  CHAR toCHAR(String s)
          Convience method for CHAR construction
protected  NUMBER toNUMBER(double number)
          Convience method for NUMBER construction.
protected  NUMBER toNUMBER(int number)
          Convience method for NUMBER construction
protected  ARRAY toORDINATE(CoordinateList list, double[][] measures, int D)
          Convience method for ARRAY construction.
protected  ARRAY toORDINATE(double[] ords)
           
 STRUCT toSDO(Geometry geom)
          Used to convert double[] to SDO_ODINATE_ARRAY.
 STRUCT toSDO(Geometry geom, int srid)
          Used to convert double[] to SDO_ODINATE_ARRAY.
protected  STRUCT toSTRUCT(Datum[] attributes, String dataType)
          Convience method for STRUCT construction.
 
Methods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

connection

protected OracleConnection connection

DATATYPE

public static final String DATATYPE
See Also:
Constant Field Values
Constructor Detail

GeometryConverter

public GeometryConverter(OracleConnection connection)

GeometryConverter

public GeometryConverter(OracleConnection connection,
                         GeometryFactory geometryFactory)
Method Detail

getDataTypeName

public String getDataTypeName()
Used to handle MDSYS.SDO_GEOMETRY.

Returns:
MDSYS.SDO_GEOMETRY
See Also:
net.refractions.jspatial.Converter#getDataType()

isCapable

public boolean isCapable(Geometry geom)
Ensure that obj is a JTS Geometry (2D or 3D) with no LRS measures.

This Converter does not support SpatialCoordinates

Parameters:
geom - the Geometry to be converted
Returns:
true if obj is a JTS Geometry
See Also:
net.refractions.jspatial.Converter#isCapable(java.lang.Object)

asGeometry

public Geometry asGeometry(STRUCT sdoGeometry)
                    throws SQLException
Convert provided SDO_GEOMETRY to JTS Geometry.

Will return null as null.

Parameters:
sdoGeometry - datum STRUCT to be converted to a double[]
Returns:
JTS Geometry representing the provided datum
Throws:
SQLException
See Also:
net.refractions.jspatial.Converter#toObject(oracle.sql.STRUCT)

toSDO

public STRUCT toSDO(Geometry geom)
             throws SQLException
Used to convert double[] to SDO_ODINATE_ARRAY.

Will return null as an empty SDO_GEOMETRY

Parameters:
geom - Map to be represented as a STRUCT
Returns:
STRUCT representing provided Map
Throws:
SQLException
See Also:
net.refractions.jspatial.Converter#toDataType(java.lang.Object)

toSDO

public STRUCT toSDO(Geometry geom,
                    int srid)
             throws SQLException
Used to convert double[] to SDO_ODINATE_ARRAY.

Will return null as an empty SDO_GEOMETRY

Parameters:
geom - Map to be represented as a STRUCT
Returns:
STRUCT representing provided Map
Throws:
SQLException
See Also:
net.refractions.jspatial.Converter#toDataType(java.lang.Object)

asEmptyDataType

protected STRUCT asEmptyDataType()
                          throws SQLException
Representation of null as an Empty SDO_GEOMETRY.

Returns:
null as a SDO_GEOMETRY
Throws:
SQLException

toSTRUCT

protected final STRUCT toSTRUCT(Datum[] attributes,
                                String dataType)
                         throws SQLException
Convience method for STRUCT construction.

Throws:
SQLException

toARRAY

protected final ARRAY toARRAY(double[] doubles,
                              String dataType)
                       throws SQLException
Convience method for ARRAY construction.

Compare and contrast with toORDINATE - which treats Double.NaN asNULL

Throws:
SQLException

toORDINATE

protected final ARRAY toORDINATE(CoordinateList list,
                                 double[][] measures,
                                 int D)
                          throws SQLException
Convience method for ARRAY construction.

Forced to burn memory here - only way to actually place NULL numbers in the ordinate stream.

The alternative is to construct the array from a array of doubles, which does not record NULL NUMBERs.

The results is an "MDSYS.SDO_ORDINATE_ARRAY"

 list     = c1(1,2,0), c2(3,4,Double.NaN)
 measures = {{5,6},{7,8}
 
 toORDINATE( list, measures, 2 )
 = (1,2,5,7, 3,4,6,8)
 
 toORDINATE( list, measures, 3 )
 = (1,2,0,5,7, 3,4,NULL,6,8)
 
 toORDINATE( list, null, 2 )
 = (1,2, 3,4)
 

Parameters:
list - CoordinateList to be represented
measures - Per Coordiante Measures, null if not required
D - Dimension of Coordinates (limited to 2d, 3d)
Throws:
SQLException

toORDINATE

protected final ARRAY toORDINATE(double[] ords)
                          throws SQLException
Throws:
SQLException

toATTRIBUTE

protected final ARRAY toATTRIBUTE(double[] ords,
                                  String desc)
                           throws SQLException
Throws:
SQLException

toNUMBER

protected final NUMBER toNUMBER(double number)
                         throws SQLException
Convience method for NUMBER construction.

Double.NaN is represented as NULL to agree with JTS use.

Throws:
SQLException

toARRAY

protected final ARRAY toARRAY(int[] ints,
                              String dataType)
                       throws SQLException
Convience method for ARRAY construction.

Throws:
SQLException

toNUMBER

protected final NUMBER toNUMBER(int number)
Convience method for NUMBER construction


toCHAR

protected final CHAR toCHAR(String s)
Convience method for CHAR construction


asInteger

protected int asInteger(Datum datum,
                        int DEFAULT)
                 throws SQLException
Presents datum as an int

Throws:
SQLException

asDouble

protected double asDouble(Datum datum,
                          double DEFAULT)
                   throws SQLException
Presents datum as a double

Throws:
SQLException

asDoubleArray

protected double[] asDoubleArray(STRUCT struct,
                                 double DEFAULT)
                          throws SQLException
Presents struct as a double[]

Throws:
SQLException

asDoubleArray

protected double[] asDoubleArray(ARRAY array,
                                 double DEFAULT)
                          throws SQLException
Presents array as a double[]

Throws:
SQLException

asDoubleArray

protected double[] asDoubleArray(Datum[] data,
                                 double DEFAULT)
                          throws SQLException
Presents Datum[] as a double[]

Throws:
SQLException

asIntArray

protected int[] asIntArray(ARRAY array,
                           int DEFAULT)
                    throws SQLException
Throws:
SQLException

asIntArray

protected int[] asIntArray(Datum[] data,
                           int DEFAULT)
                    throws SQLException
Presents Datum[] as a int[]

Throws:
SQLException


Copyright © 1996-2010 Geotools. All Rights Reserved.