From: Jody G. <jga...@re...> - 2006-02-20 10:17:43
|
st...@rs... wrote: > Hi all, > > I'm new to GeoTools, using it underneath GeoServer with an Oracle > datastore to read feature data that is in an unusual format due to having > been originally entered using GeoMedia before being exported to Oracle. > Interesting. > For example, one Oracle table contains in each row a first element with > SDO_ETYPE of 0 (denoting "geometry type not supported by Oracle"): this is > done as to to approximate an "oriented points" geometry, which apparently > is supported by the latest Oracle but was not supported by the Oracle > being used at the time of table creation. Hence, although the data is > two-dimensional the SDO_ORDINATES array in fact contains three ordinates > for the element of type 0, which causes an exception to be thrown at line > 2082 of org.geotools.data.oracle.sdo.SDO.coordinates(SDO.java). > Yeah I only support what was in the documentation, and this class (SDO) was picked up by JTS recently, and thus I can probably retire it. Can you try making use of JTS 1.7 and see if it does any better? Regardless you will probably have to manipulate your STRUCT to reflect an EDO_RTYPE that is known to your new oracle system. > For reasons of interoperability with other applications that use the data, > it's not possible for me to change the geometry structure within the > Oracle tables, so I think I need to transform the data somehow before > presenting it to GeoTools. Or should I define a new kind of DataStore? Or > might a GeoMedia datastore be able to handle the Oracle tables? Or do I > need to write a new module for GeoTools? > For something like this, I would subclass oracle datastore and ask it to use a new SDO class. For you new SDO class you can teach it how to recognize your ETYPE 0 (and its intended meaning). > Any help or hints as to how to get started would be greatly appreciated. > Or can anyone point to the appropriate section(s) of the GeoTools design? > The javadocs for SDO are very complete, SDO is used by an GeometryConverter which is where you would need to subclass, and perform any STRUCT manipulation. If there are any additional ETYPES which you can smoothly adapt to JTS please feel free to add them. Although the warning about moving over to JTS1.7 should be noted. These classes are called by SDOAttributeIO (which is only engaged for geometry columns). Cheers, Jody |