Operation does not support curves yet - Exception

07-12-2017 12:31 PM
New Contributor III

Currently, I am trying to find which features from a layer intersect with a polygon. However when trying to project the feature's geometry or perform a query against it (i.e a query with a spatial relationship against the layer or GeometryEngine.Intersects()), I get the following error: "Not implemented: operation does not support curves yet". From what I can tell, it only throws this exception when the geometry's HasCurves property is true. When this property is false, all queries and projection works as expected.

Is there currently a way to perform spatial queries against geometries with curves, or any workarounds? If not, is there any information on when such functionality might be available? 

Any help or information regarding this issue would be greatly appreciated.

2 Replies
Occasional Contributor

I really have problems with this limitation as well. Another part of the Runtime, where curves don't work is the GeoView.IdentifyLayerAsync Method - curves are never in the result set.

The only workaround, I'm aware of, is to simplify the data before using it in the runtime. If you're using the desktop pattern, you can make use of arcpy.Densify_edit() before creating your runtime content. This transforms your curved polygon features to a polygon with lots of interpolation points..

In server workflow, I think there is a server-flag like "SupportsAdvancedGeometry" or similar, which can be set to false to make the server deliver simplified geometries as well.

Hopefully, anyone else comes around with a better workaround that does not involve changing the data beforehand..

0 Kudos
New Contributor III

Thank you for the response. Unfortunately, due to the way I am accessing data, those workarounds don't work for me currently. However I was able to find a different work-around where instead of utilizing spacial queries that don't support curves (Intersects), you can use one that compares geometries without curves (i.e envelopeIntersects).

This doesn't work perfectly, but it does allow a rough estimate of whether a geometry with curves intersects with a polygon.