Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am new to GIS and ArcGIS. I have a problem I need to solve:

I have a set of polygons, some of which enclose other polygons. They are lake polygons, and within lake polygons, are smaller island polygons.

So if I have a given lake polygon, how can I select or get a list of enclosed island polygons?

Also, some islands may contain lakes within the island... I would like to select those as well.

share|improve this question
up vote 5 down vote accepted

I'm assuming the lake polygons are in the same feature class as the island polygons? Also, I'm assuming ArcGIS 10, but the below method will work in 9.3 etc. also.

But the simplest way of doing this, assuming that you don't need to know which island/lake is contained by which other lake (ie, just a selection of islands in lakes) then in the table of contents for ArcGIS duplicate the layer (add it to the ArcMap session twice) and rename one so they have different names.

The from the first feature class (I'll call it 'A') select all lake features as an attribute selection. This can be done with Select by Attributes from the Selection menu.

Then from the Selection menu choose Select by Location. We want to select features from 'B', so check that in the box up the top. In the drop down choose 'A' as the selection feature and make sure that 'Use Select Features' is checked. The from the selection type choose select within and you should be done.

share|improve this answer
+1. But I think he specified the island polygon selection is that for a given lake selecting multiple lake polygons can be avoided. – ujjwalesri Aug 1 '11 at 10:31

If you have many lake features and island features to match, you may want to perform a spatial join with the target layer being the islands. By spatially joining, you are assigning attributes from a source layer (here lakes) to the target layer based on how the layers overlap/contain/intersect one another. All island features will theoretically be assigned to the lake they fall within.

There is a spatial join function both in the toolbox and in the main interface; the toolbox version gives you a bit more control as to how to perform the join, and how large a radius to consider for each match. I use that if it is a large dataset, i.e. more than a few 1000 points for performance reasons.

If you store the result in a personal geodatabase, you can then go into access if you are licensed and query the result(or you could get the same results from just looking at the attribute table, sorted):

select [lake], [island] 
from [layersAndIslands]
order by [lake],[island];

You should get a list of all the islands, preceded by which lake it falls in.

share|improve this answer
did you find a solution, ako? – r.pankevicius Mar 7 '14 at 22:08
I think the answer as stated here should work. – ako Mar 8 '14 at 1:44

Your Answer


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.