I have been looking for an answer to the same question for some time to overcome flattening the overlapping buffer polygons issue and think found a robust solution to that. In fact @Whuber's comment,
In principle the centroid, perimeter, and area might still not
uniquely identify a polygon, but the counterexamples are a bit contrived.
on @Paul's answer was the main drive for me to keep trying. It uses Spatial Join tool's ARE_IDENTICAL_TO operator since this is the most efficient among other identical detectors. Here are the steps:
- Self Union your input to keep all shapes different than each other;
- Create a dummy field to keep/copy original OBJECTID's (i.e., OID
field type) of the rows, say EX_OID;
- Run Spatial Join on the feature class that
is wanted to be processed as both target and join feature parameters.
Make sure the field mappings of dummy field(s) (appears twice)
previously created has the merge rule of FIRST (which is the default
or pick LAST, the others may not give the desired output since they
use a summary of overlaps). This step picks the common shape OBJECTID
sitting on top of all overlapping (i.e., FIRST);
Following steps can be done in two ways, WITH Python or WITHOUT:
- Use the code below to extract unique IDs that we want to find:
print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")])).
Be aware that I am using the second copy of dummy OID field, which is EX_OID_1 in my case;
- Copy the output of this code and paste this into the Definition
Query of the original feature class processed as
OBJECTID IN (<PASTE_COPIED_VALUES_HERE>). The result will
be showing you the unified features of the overlapping parts. There is a size limitation here though, 30,000 characters. To overcome this issue, you need to follow "without python" steps.
Use Frequency tool to list unique values in the second copy of dummy
OID field, which is EX_OID_1 in my case;
Lastly Join OBJECTID field of the original feature class with
the output of the Frequency tool's EX_OID_1 by selecting "Keep
only matching records" options.