Solved

FeatureReader with Oracle multiple geometry

  • 22 April 2013
  • 3 replies
  • 1 view

Hello,

 

 

I use one featureReader to load Oracle spatial data on my workspace.

 

How can i choose my geometry like the oracle spatial reader ?

 

By defaut fme read the first geometry field.

 

 

Thank you
icon

Best answer by david_r 22 April 2013, 18:52

View original

3 replies

Userlevel 4
Hi,

 

 

I had a look but I cannot see that it is possible. Hopefully somebody else can prove me wrong :-)

 

 

Alternatively, you could use an SQLExecutor, where you can specify the column names, and transfer the geomtries as WKB using the Oracle spatial function To_WKBGeometry(), e.g.

 

 

SELECT   OBJECTID,   NAME,   SDO_UTIL.TO_WKBGEOMETRY(GEOM3) AS GEOM3 FROM   MYSCHEMA.MYTABLE

 

For this example, you should expose the attributes OBJECTID, NAME and GEOM3 in the SQLExecutor. After the SQLExecutor, insert a GeometryReplacer with OGC Well Known Binary as the geometry encoding.

 

 

David

 

 

Hey there ...

Just the question: is there still no option to chose between different spatial columns with the FeatureReader? Unfortunately I got a table with 2D and 3D information, so the "Handle Multiple Spatial Columns" option doesn't work with the following error code: "ORACLE Reader: 'Handle Multiple Spatial Columns' requires that all spatial columns have the same coordinate system"

Badge +13

@raphael​ / @david_r​ 

We've used SQL SELECT statements to validate SDO geometry but it has been a while. Maybe these might point you in the right direction? You may need to confirm/double-check the GTYPE codes for your system.

 

Linear Geometry

SELECT * FROM SCHEMA.TABLENAME LINETABLE WHERE SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT (geometry, 0.005) = 'TRUE' AND GEOMETRY IS NOT NULL AND (LINETABLE.GEOMETRY.SDO_GTYPE = 2002 OR LINETABLE.GEOMETRY.SDO_GTYPE = 2006)

 

Polygon Geometry

SELECT * FROM SCHEMA.TABLENAME POLYGONTABLE WHERE SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT (geometry, 0.005) = 'TRUE' AND GEOMETRY IS NOT NULL AND (POLYGONTABLE.GEOMETRY.SDO_GTYPE = 2003 OR POLYGONTABLE.GEOMETRY.SDO_GTYPE = 2007)

 

Point Geometry

SELECT * FROM SCHEMA.TABLENAME POINTTABLEWHERE SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT (geometry, 0.005) = 'TRUE' AND GEOMETRY IS NOT NULL AND POINTTABLE.GEOMETRY.SDO_GTYPE = 2001

Reply