AnsweredAssumed Answered

ITopologicalOperator.IsSimple() behavior

Question asked by klee_2 on Dec 17, 2019

I need to use ITopologicalOperator.IsSimple() on Polylines geometry to determine if it doesn’t have any self intersection. However, i don’t understand the behaviour of this function, more specifically i don’t understand the behaviour of the flag isKnownSimple used by the function isSimple.

Why is this flag setted to true when a geometry comes from a feature class (http://resources.esri.com/help/9.3/ArcGISServer/apis/ArcObjects/esriGeometry/ITopologicalOperator_IsKnownSimple.htm) ?

 

As an exemple, i create a Polyline with non simple geometry, i test it with isSimple, the result is false. I save the Polyline on my database, i retreive it and i use isSimple again and the result magically changed to true. I assume this is explained by the IsKnownSimple is at true when an object comes from the database, but why…

 

I see two possibilities :

1) The geometry is modified to a simple geometry when we save it in the database.

2) The geometry from the database is supposed to be simple

The first possibility would be a problem as my geometry is modified.

The second possibility is also a problem as i can’t test any of the geometry currently in my database as the isSimple function will always return true.

 

So i got some questions :

Is there something i didn’t understood on the behaviour of the isSimple function ?

Is there any mean to test the correctness of the geometry (including those coming from the database) using ESRI’s framework ?

 

By the way, i can’t use simplify() as i can’t change my geometry.

Outcomes