I have a very funny polygon feature appeared as a result of union of many buffers and cannot repair without manipulating its true shape. Without fixing it, I cannot run subsequent overlay operations. I think the repair geometry tool fixes self-intersecting edges iteratively and consecutive arc edge fixation procedure reproduces the same error again. No matter how many times I try, it reports it is fixed (i.e., 10 times WARNING 000461: Repaired feature 1 because of self intersections) but it returns the same unfixed shape.
UPDATE
Having heard that others have had no issues in repairing this geometry (a proper tail attached to the main part with a 0.03m width), I decided to add a bit more how I came to this point. I have a point feature class with 40.000 features that I need to buffer based on a field and they are pretty close at some locations. These close features tend to produce a large number of slivers. My previous attempts led me to Out of memory or Topoengine errors, and I decided to set the resolution of a copy of this point feature class to 1m (i.e., move points to the closest meter resolution, which might be the source of the problem). I then changed the resolution and tolerance values to their defaults before undertaking any Overlay analysis.
The feature looks like as follows:
For you to replicate the problem in ArcMap, the below is the code snippet including the JSON of this feature considering it is a lossless approximation to the original geometry, which I tested and confirm that it produces the same shape. A word advice, arcpy.AsShape
's second argument to process esri_json
introduced to this function after the version 10.3, prior versions may complain.
CODE FOR REPRODUCTION
import arcpy
esri_json='{"curveRings":[[[529148.74270000029,6944432.6705999998],{"c":[[529028.58660000004,6943589.9435000001],[529263.99277247302,6943986.3085154826]]},{"c":[[528910,6943597],[528969.39818470867,6943595.2343159467]]},{"c":[[528746.50389999989,6943583.5437000003],[528827.97553651361,6943593.6302468004]]},{"c":[[528172.48149999976,6944406.3706999999],[528570.14691326348,6944072.1521290326]]},{"c":[[528667.5120000001,6944670.9944000002],[528387.14309098024,6944600.1415246446]]},{"c":[[528553.22709999979,6945125.6616000002],[528548.82282015553,6944975.0661100438]]},{"c":[[529145.82980000041,6944433.0010000002],[528546.0329174581,6945033.0851077382]]},{"c":[[529148.74270000029,6944432.6705999998],[529147.28603573283,6944432.8339088196]]}]],"spatialReference":{"wkid":28356,"latestWkid":28356}}'
shape=arcpy.AsShape(esri_json,True)
arcpy.CopyFeatures_management(shape,'in_memory\\repair_me')
Please feel free to put forward any suggestions other than manipulating the shape, e.g., removing vertices, cutting into pieces, generalisation -densification, etc.?