I have two shapefiles with thousands of polygons representing the same administrative units at two points in time. In many cases, the polygons from the two shapefiles overlap perfectly; in other cases, they have changed slightly. I am using intersect to calculate the percent of overlap between polygon X in shapefile 1 and polygon X in shapefile 2.

I am trying to figure out how to deal with a special case, in which a polygon has been split neatly into 2 or more parts. The images below illustrate: the original polygon (on the left) has been split into three parts (on the right) but its outside borders have not changed at all.

I would like to do two things:

  1. Identify these cases in ArcMap 10.4.

  2. Record the attributes (FID, etc) of the polygons from image 2 that, combined, comprise the full area of the polygon from image 1.

Since I have many thousands of polygons, doing this manually will not work. I am hoping there is some elegant solution to this problem that I am not aware of. I am most interested in cases where the combination of 2+ polygons in one shapefile completely cover the area of 1 polygon in the other shapefile, down to some arbitrarily small tolerance level.

  • in the layer on the right, you said its a broken up boundary of the polygon on the right, correct? if so, in the second layer is there an attribute column that tells you what the original boundary the broken pieces came from?
    – ziggy
    May 2, 2017 at 18:48
  • No, unfortunately there isn't. Actually, there might be for a few of them (I have not checked them all), but the vast majority do not have any indication that they are broken up from an original boundary, or what that original boundary was. May 2, 2017 at 19:50
  • hmm okay...do you have any experience with postGIS? a task like this will be more simple and easier to conceptualize in SQL
    – ziggy
    May 2, 2017 at 19:51
  • No, I've never used postGIS. I am more of a statistician, so I primarily work in R and only deal with ArcGIS when absolutely necessary. Not sure if that means I will struggle with postGIS more than usual or less. May 2, 2017 at 21:05

2 Answers 2

  1. Calculate the area of the largepolygon shape.
  2. Create a UNION of the largepolygon shape and the smallpolygon shape to preserve all borders of both shapes and combine both tables (JoinAttributes: All).
  3. Add field and calculate the area for the Union output.
  4. Use the tool SUMMARY STATISTICS with the table of the union output. As Statistics Fields choose: 1. Area comming of the largepolygon shape with Statistics type: Max and 2. the just calculated Area with Statistics type: SUM. As Case Field use both FID (Something like FID_large... and FID_small...not the FID of the Union output)

As output you will get a table with all overlapping combinations of large and small polygons and the corresponding area which you can use to calculate the desired percentage.


My initial thought would be to write a Python script for this. I would try this idea first:

Iterate all of the polygons in the first shapefile, selecting them one at a time. For each selected feature, record the shape area, then run a "select by location" operation against the other shapefile. Merge all of the selected features in shapefile 2 into a single feature and then compare that feature's area with the one you recorded above. If it's the same, update a column the selected features of shapefile two with the FID of the single feature in shapefile one.

First thing to try is to make sure that the select by location process does indeed select only the desired features, not any adjacent ones. Test that on the ones shown in your example images.

EDIT: I think I would actually recommend creating a third shapefile that is the centroids of the second shapefile. Make sure it stores the FIDs from the second shapefile. Then run the "select by location" procedure I described above on this centroid shapefile, record the FIDs it returns, and use them to make the selection (and then merge) in the second shapefile. That will eliminate any of possibility of selecting adjacent polygons or something weird like that.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.