First of all I'm completely new to the realm of GIS and ArcGIS.

Basically I need a reliable way to determine a donut hole's containing donut for a few hundred thousand polygons (where the donut holes are their own polygons in the same feature).

I've come across this question which deals with finding polygons within polygons; however, I need to actually map the internal polygon to its containing polygon (i.e. join the "lake" polygon's attributes to its "island" polygon).

ArcGIS's Spatial Join tool with JOIN_ONE_TO_MANY and COMPLETELY_CONTAINS options looks very promising but doesn't seem to work as expected. I'm guessing this is because the "lake" polygons don't actually overlap the "island" polygons; the holes are cut out of the containing polygons.

Is this possible? I'm using ArcGIS 10.

  • I'll try to put up precise steps later today but basically I think you need to fill any holes (caused by islands) in your lakes, then do a spatial join between islands and hole-filled lakes. Filling is done with Union and No Gaps I think.
    – PolyGeo
    Oct 19, 2012 at 23:05
  • Thanks for the response! I tried what you suggested and am still getting confusing results. From what I understand the fill method you described only works if the hole is void, i.e. not another polygon in the same feature. Unfortunately the "islands" (actually my data is all zip codes but the lake/island analogy fits) are all in the same layer as the "lakes." If you look at zip code 52577 on Google Maps you can see that there are two big holes in the zip polygon. These holes are actually zip codes 52534 and 52595, completely engulfed in 52577.
    – roadkill
    Oct 22, 2012 at 19:30

1 Answer 1


I would try this:

  1. Use Select tool to get all your donuts (hopefully you have something like feature = "lake") into a separate feature class
  2. Use Union tool, specifying that no gaps allowed (uncheck "Gaps Allowed" in the Union tool) to fill the gaps
  3. Use Dissolve on the new feature class to absorb the filled in polygons
  4. Perform the Spatial Join
  • Thanks @PolyGeo! The process I used was a little more convoluted due to how the data was structured, but this was the general procedure I followed. If anyone wants to check out my embarrassingly complicated method I'd be happy to post it, but this should work for most people.
    – roadkill
    Oct 31, 2012 at 15:04

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.