arcpy.env.evilTrueCurves = False
I know this post is ancient, but I'm struggling with true curves too.
A question regarding this blurb:
"I'll also point out that SDE data has a way to keep true curves out... See the blurbs about that buried in here: http://webhelp.esri.com/arcgisserver/9.3/java/index.htm#geodatabases/using_t1450550752.htm"
Do you happen to recall what part of that page tells us how to prevent true curves in SDE?
In my case, I'm using SDE.ST_GEOMETRY / Oracle 18c / ArcGIS 10.7.1.
Background info here:
Edit:
I think @ChrisSnyder was referring to SDO_GEOMETRY, not ST_GEOMETRY. So that wouldn't help me.
FYI - I submitted an ArcGIS Pro Idea:
Has anything changed since this thread was active?
I ask because we suddenly started receiving file geodatabase feature classes from a vendor that contained true curves. I turns out other software displaying and editing them using GDAL (which doesn't support true curves) were creating "shifts" as the edited curves in a feature class were destroyed, or whole feature classes had these mini "shifts" when converted to shapefiles. The easiest solution would be to avoid creating true curves.
I don't think anything has changed after all these years... Curve features still send me in to fits of rage these days (in fact just 2 days ago I encountered an odd buffered polygon geometry that when used as input to the Clip_managment tool (for clipping rasters) resulted in this weird inverted output. The fix: Export to shapefile and use the densified geom as the clipping geometry... Problem solved! So, needless to say, I am still hatin' on them!!!
Sure wish there was an envr setting to keep them from happening in the 1st place... or at least a method of detecting their presence in a FC. Nope!
There is a workaround now that you can use to keep your true curves using arcpy. While it is true that arcpy.Geometry() objects do not support true curves, you can still work with them in arcpy. When the REST API started supporting true curves, some of the tools that handle JSON formats (arcpy.AsShape, arcpy.FeatureSet, etc) will automatically handle the curves for you. To do any sort of modifications to the curves, you would need to figure out the math and handle it in the JSON structure. Here is a quick test showing getting a single curved line to a geometry object (with a bezier curve and arc):
esri_json = {
"curvePaths":
[
[[6,3],[5,3],
{
"b":[
[3,2],[6,1],[2,4]
]
},
[1,2],
{
"a":[
[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333
]
}
]
],
"spatialReference": {"wkid":26915}
}
curve_line = arcpy.AsShape(esri_json, True) #very important to set esri_json to True!
arcpy.env.addOutputsToMap = True
# now add it to the map
arcpy.management.CopyFeatures([curve_line], r'in_memory\test')
The line looked like this:
The esri json structure for cuves is described in the Geometry objects in the REST API docs. You can see that the geometry can be retrieved with true curves by calling the JSON property:
>>> print curve_line.JSON
{"curvePaths":[[[6,3],[5,3],{"b":[[3,2],[6,1],[2,4]]},[1,2],{"a":[[0,2],[0,3],0,0,2.0943951023931948,1.7761476679542356,0.32243301481209313]}]],"spatialReference":{"wkid":26915,"latestWkid":26915}}