Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

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.

share|improve this question
    
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 '12 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 '12 at 19:30

1 Answer 1

up vote 0 down vote accepted

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
share|improve this answer
    
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 '12 at 15:04

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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