I'm trying to find the best way to only get the inner overlap of multiple polygons within the same feature class. I've tried the Union/Dissolve method as well as the Intersect tool and can't get the desired result I want. My sense is that I may need to create some kind of topology rule to do it, but ostensibly I just want to find the inner areas where the polygons overlap and right now the software is selecting ANY polygon that overlaps with another. I've attached an annotated picture to show my challenge.
I was just working on this very issue. This is the way I was able to get this to work. Union was the right way to go. After that I went through each feature and select by location all the features from the original that contains the Union feature. If the desired number of selected features is returned, create a new feature class. Merge all the feature classes when complete.
Because the union feature class could contain a large number of features, doing this programmatically is the way I went. I used a variation of the following python code.
import arcpy from arcpy import env arcpy.env.workspace = "path/to/data" shp = "shp.shp" arcpy.MakeFeatureLayer_management(shp,"shpLayer") arcpy.Union_analysis("shpLayer","shp_Union.shp") for feat in arcpy.da.SearchCursor(ushp,"FID"): arcpy.MakeFeatureLayer_management(ushp,"ulayer",''' "FID" = %i ''' %int(feat)) arcpy.SelectLayerByLocation_management("shpLayer","CONTAINS","ulayer") if laycount >= 3: #specifies the number of overlaps desired arcpy.CopyFeatures_management("ulayer","%i.shp"%int(feat)) arcpy.Delete_management("ulayer") dlist.append("%i.shp"%int(feat)) else: arcpy.Delete_management("ulayer") arcpy.Merge_management(dlist,os.path.join(shpdir,"Merge_Features.shp")) for d in dlist: arcpy.Delete_management(d)