Skip to main content
Question

Bad geometry detected in the following feature; Geometry could not be encoded for Oracle

  • December 19, 2013
  • 5 replies
  • 134 views

Hi,

 

 

I am using a bufferer and a dissolver transformer to generate a buffer polygon from an aggregated set of 500+ geometries. The Inspector is showing the generated geometry but the Oracle Spatial writer is unable write the geom into the spatial table. I am getting the error "Bad geometry detected in the following feature; Geometry could not be encoded for Oracle".

 

 

I have added a GeometryValidator after the Dissolver transformer. The generated geom comes through the PASSED output but still the error remains.

 

 

FME Desktop 2013 is used.

 

 

Regards,

 

Ananda

5 replies

fmelizard
Safer
Forum|alt.badge.img+18
  • Safer
  • December 19, 2013
Hi,

 

 

I had this error sometime ago, an old FME talk post helped me.

 

Basically I had an oracle_type attribute, which was confusing the oracle writer.

 

The solution was to remove (AttributeRemover) any oracle_type attributes before writing.

 

Hope this helps,

 

 

Itay

  • Author
  • December 19, 2013
Thanks Itay for the pointer. However my workbench does not have any oracle_type attributes. I believe here the issue is something different.

 

 

Ananda

  • December 9, 2014
Did you get an answer to this problem? Here's a solution from Robyn Rennie at Safe for a similar problem that I had, using a feature merger with an Oracle Spatial feature source as Requestor and Oracle non Spatial as Supplier:

 

 

The problem is that you have read from a non-spatial oracle table so the features coming in through the second FeatureMerger have an attribute oracle_type on them which has a value of oracle_nil. Meaning that they are handled as non-spatial features. Then the Oracle Spatial Object writer attempts to write them and fails because of this attribute.

 

 

 

Solution

 

 

If you add an AttributeExpressionRemover  or BulkAttriibuteRemove with a value of oracle_* in it, it will remove all the incoming oracle_ format attributes and now the Oracle Spatial Object writer will use the fme_geometry and write polygons.

 

 

 

Alternate Solution

 

This means that you will have to add the AttributeExpressionRemover to every non-spatial SUPPLIER in a feature merger. If you have a lot of feature merges and don’t want to do this every time, an alternative is to use the GeometryExtractor to store your geometry in text or binary format, and then use the GeometryReplacer  to restore the geometry after all of your feature merges. 

 

 

oscarwillems
Contributor
Forum|alt.badge.img+14

For complete documentation:

We had the same problem, and we could fix this by orienting the geometry in the right way (which is the left way). ;-)

 

Oracle expects geometry with a left-handed orientation, if your geometry is right-handed, Oracle can't encode it to its own geometry representation. Fix this with the "Orienter" transformer.


p.jeremie
Contributor
Forum|alt.badge.img+6
  • Contributor
  • August 6, 2021
oscarwillems wrote:

For complete documentation:

We had the same problem, and we could fix this by orienting the geometry in the right way (which is the left way). ;-)

 

Oracle expects geometry with a left-handed orientation, if your geometry is right-handed, Oracle can't encode it to its own geometry representation. Fix this with the "Orienter" transformer.

Thanks @oscarwillems​ I had the same issue and the Orienter is a good solution. I didn't know about Oracle expecting left-handed geometries. Not easy to find the information in the documentation of SDO_GEOMETRY https://docs.oracle.com/database/121/SPATL/sdo_geometry-object-type.htm#SPATL494


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings