1

I'm exploring a few different options for this process and I'm unsure what would be most effective. I'm trying to find all isolated, non-intercepting polygons in the same layer (not to merge). Most share boundaries, and a few overlap. Area varies so it unfortunately cannot be the deciding factor for selection (e.g. selecting by max area). I'm using ArcMap 9.3.1.

I created a 10 meter buffer around the polygons, erased the center of my buffer features, then select all polygons that intersect the buffer, thinking I'll just do a switch selection. The problem is that all polygons get selected, I guess because the selection is too tolerant. I don't want merely tangent/touching boundaries, I need them to overlap within the buffer (in effect, avoiding selection of those polygons each buffered feature is created from). The "are within" of course selected nothing. I wonder if dissolve can be used.

edit: as per request, here's a pic representing what I mean by isolated - no other polygons border it from any side.pic

  • Could you post a screenshot of your data? I'm having trouble understanding 'isolated, non-intercepting' yet 'share boundaries and overlap'. Is there an attribute that differentiates polygons in said layer? Does selecting all that do touch and inverting the selection not do what you want? Are you using Select Layer by Location or just the regular Select by Location? – Chris W May 5 '14 at 19:03
  • No attributes differentiate the polygons - they belong to the same feature class. I've tried both versions of select by location. Picture a buffer around these polygons - if polygons are tangent to each other, sharing the same boundary, then buffers should overlap into surrounding claims. Say I have one polygon and buffer it - it would seem that being perfectly tangent and surrounding this polygon counts as an "intercept" according to ArcMap, while this should NOT be the case. The buffer extends outward. – Sleep6 May 5 '14 at 19:42
2

if you have ArcInfo, you could use "polygon to line" to have topological arcs. Based on the attribute table, you can select the lines which do not have values of -1 in the left or right. Then you select the polygons that intersect those lines and you invert the selection.

Another solution is to use the dissolve tool (no multipart polygons). Then a spatial join for the polygons on the dissolved polygons give you the number of polygons in each block. If you have just one then your block corresponds with an isolated polygon.

A nicer solution is to loop on each polygon and test for intersection, but this would require a little bit of programming. For each polygon, count the number of neighbors (e.g. using spatial join). Then you can select by attribute the isolated polygons.

Note for ArcGIS 10 users : the solution is to use polygon neighbors

  • I assume you mean to run Polygon_to_line on the buffer polys? I think this might work, thanks for the input. – Sleep6 May 5 '14 at 19:54
  • my methods are not using buffers but only topological rules. But yes, if you use feature to line on buffers you could select the polygons which have a neighbor closer than the buffer distance. This would work in most of the cases, but you need a small buffer distance otherwise you could select non touching polygon. Therefore I prefer my solutions. – radouxju May 5 '14 at 20:13
  • That's true, though for my purposes, polygons anywhere close to touching each other are problematic. I will remember that however. – Sleep6 May 5 '14 at 20:19
0

The problem with your initial method is the location relationship you chose. Intersect means if the two touch in any way, they will be selected. Consider it a superset, whereas most of the other relationships are subsets of that one.

The buffer tool generates polygons. If when you say 'erase the center' you mean the inner line, that just deletes the hole in the buffer polygon; you now have a 'grown' polygon from your original which overlaps. If you Erase the polygons from the buffer, they still share a boundary - the inner of the buffer and outer of the polygon are the same line. When you try to intersect with the buffers, everything is selected because every polygon has a buffer, and it will intersect its own buffer. You could solve this by buffering the buffer outward, so there is a gap between the buffer you use and the polygons, but there is an easier way.

If you choose the relationship crossed by the outline of, it will only consider the boundary line of the polygon - no need to convert the buffer to a line or erase the polys from the buffers. Any claim polygon crossed by the outline of a buffer will be selected, which you can then invert to get your isolated claims. Isolated polygons should not be crossed by the outline of any buffer including their own, assuming your buffer is small enough (as radouxju points out).

It's not that intersect is only effective on lines, but rather you have to consider the geometries (point, line, polygon) with respect to their relationship type. Take a look at this help page for some graphic examples.

As an aside, given the type of data you're working with you may need to check if there are any stacked, duplicate polygons.

  • This method, select layer by location, inexplicably selects all polygons from the target layer. The buffer was erased against the polygon layer, leaving an outer polygon shell for the buffer layer. I was unaware that intercept only works effectively on lines... so I'm trying that method, and it seems reliable. – Sleep6 May 5 '14 at 20:08
  • @Sleep6 You're right, Select Layer by Location won't work in this case - I was adapting this from donut holes and not thinking it all the way through. The selection of all isn't inexplicable - every shape in the layer does intersect or touch the boundary of itself, which is why those relationships don't work. The best this method could get you would be any that overlap by using cross the outline of. The Select Layer works with a single layer (which is why I first suggested it, to avoid buffering), while the regular Select requires two. – Chris W May 5 '14 at 23:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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