Some 3rd party software cannot handle polygons with holes (donut polygons). To find them I always use ArcView 3 field calculator, because:
however when I try to do this in ArcGIS, I get this:
So the question is how to make it right in ArcGIS.
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It only takes a minute to sign up.
Sign up to join this communitySome 3rd party software cannot handle polygons with holes (donut polygons). To find them I always use ArcView 3 field calculator, because:
however when I try to do this in ArcGIS, I get this:
So the question is how to make it right in ArcGIS.
Part count will not yield the correct answer. You could have a multi-part polygon with no holes. See image below for scenario.
This would have been a simple query pre-ArcGIS 10 as you could have called ArcObjects to ask if the polygon had a hole but ESRI have removed much of this support in the VBScripting environment to the point its pretty useless now, bit of a shame really...
Anyway you can solve this question with some Python:
def hasHole(geom):
parts = geom.partCount
boundaries = geom.boundary().partCount
if boundaries > parts:
return 1
else:
return 0
In the expression box you would place the following:
hasHole(!Shape!)
Are you referring to the difference between the two expressions? If yes, it looks like the bottom one is using Python as the parser where as the one on top is using VB. To change this in the Field Calculator window in ArcGIS, just select VB instead of Python and the top expression should work.