Solved

How to circumvent geometry errors using the SDE Writer?

  • 13 September 2018
  • 3 replies
  • 4 views

Hi everyone

I have a question regarding the SDE Writer (Geodatabase SDE) in FME (FME 2017). There are some issues regarding geometry problems, e.g. self-intersecting polygons cannot be inserted into an Oracle Database with SDE (ERROR |An error occurred while attempting to insert a row into the table 'XXX' using a cursor. The error number from ArcObjects is: '-2147215968'. The error message from ArcObjects is: {Linestring or poly boundary is self-intersecting}).

How can this problem be addressed? (Using PostGIS, these geometries can be inserted normally)

I tested the GeometryValidator transformer, which seems not to be the right way though: sometimes the self-intersecting geometries are detected and sometimes they’re not detected (!). After repairing these geometries using the GeometryValidator, there is another error while inserting the data into the DB (ERROR |An error occurred while attempting to insert a row into the table 'XXX' using a cursor. The error number from ArcObjects is: '-2147215975'. The error message from ArcObjects is: {The number of points is less than required for feature}). This problem, however, cannot be solved by the GeometryValidator.

Furthermore, the GeometryValidator sometimes also detects this error, but the self-intersecting geometry could be inserted into the DB without any problem.

This means that I cannot filter the data for these geometry errors (It would be enough for me to filter it, it does not have to be repaired necessarily), because they’re not always detected and sometimes they are not a problem (the data can be written into the DB anyway). Does anyone know a different transformer that I could use for filtering the data? Or a different approach? Any hint or idea is welcome.

Thanks in advance.

icon

Best answer by david_r 13 September 2018, 11:36

View original

3 replies

Userlevel 4

I've seen this problem arise when the snapping grid (tolerance + precsion) defined in the target feature class moves vertices when writing to SDE, thereby creating self-intersections that weren't there in FME.

The first thing to try would be to insert an ArcSDEGridSnapper with the exact same settings as your target feature class, before using the GeometryValidator. Be sure to read the help text for the ArcSDEGridSnapper first, though.

Badge +10
Can you attach an example of a failing geometry as well known text? Also what tolerance is set?

 

 

Picking up errors outside of oracle that oracle considers self intersections is not straightforward.

 

 

I've seen this problem arise when the snapping grid (tolerance + precsion) defined in the target feature class moves vertices when writing to SDE, thereby creating self-intersections that weren't there in FME.

The first thing to try would be to insert an ArcSDEGridSnapper with the exact same settings as your target feature class, before using the GeometryValidator. Be sure to read the help text for the ArcSDEGridSnapper first, though.

Thanks for your answer.

 

As suggested, i put the ArcSDEGridSnapper (configuration according to ArcSDE) prior to the GeometryValidator. Works perfectly.

 

Reply