I have thousands of polygons in the same shapefile. They overlap in many ways and percentages. I need to find out, for each polygon, the percentage of its surface covered by other polygons. If possible, it would be interesting also to know which polygon overlaps to each other.
Normally, I would suggest extracting each polygon into a separate layer and then unioning the lot. The table would tell you which polygons overlapped, and by how much. Doing it as a file Geodatabase would automatically generate the areas and be easier to handle than individual shapefiles.
However, with "thousands" of overlapping polys, the resulting table will be quite wide. It may be better to automate an extraction and analysis loop in python: - select a polygon, and get its area - select all polygons overlapping that selected one, and make a list of their FIDs - export the identified overlapping polys to separate feature classes (select them by their FID) - union the exported polygon feature classes (or use Identity, if you have ArcInfo) - extract the desired information from the unioned FC table (total area of overlap) and write it, along with the list of overlappers and the original polygon's area) to a new record in a stand-alone table - calculate the percentage of overlap area to original polygon area in that record - delete the union and intermediate FCs - select the next polygon in your original file and do it again
It gets more complex if you want the amount or percentage each polygon overlaps the target...
Let's assume your feature class is called "MyPolys". Run the Intersect tool. You'll have only one input feature class, MyPolys. This will create a new feature class with the default name of "MyPolys_Intersect".
Open the attribute table of MyPolys_Intersect and sort it on the FID_MyPolys field (the original object id of MyPolys). You'll see that there are multiple entries for each original MyPolys polygons.
To calculate percentage overlap, you'll want to add a field containing the original area of the MyPolys polygon. Use the Join Field tool for this. Your input table is MyPolys_Intersect, the Input Join Field is FID_MyPolys, the join table is MyPolys, and the Output join field is OBJECTID. For fields to join, choose Shape_area.
After Join Field executes, you'll have a shape_area field and a shape_area_1 field. (If you're viewing the table in arcmap, turn field aliases off... both these fields have an alias of "shape_area".
You're ready finish your calculation of percent overlap. Use Add Field to add a new field called "Percent_overlap". Use Calculate Field to calculate Percent_overlap = shape_area / shape_area_1.
If you want more information, such as the IDs of the overlapped polygons, run Intersect, but enter MyPolys twice. This will overlay MyPolys on top of itself. The output table table will list each unique combination of overlaps. You'll want to ignore any entry that lists itself. That is, select for FID_MyPolys <> FID_MyPolys_1