Sunday, 22 May 2016

How to find if polygon has a hole using field calculator in ArcGIS



Some 3rd party software cannot handle polygons with holes (donut polygons). To find them I always use ArcView 3 field calculator, because:


enter image description here


however when I try to do this in ArcGIS, I get this:


enter image description here


So the question is how to make it right in ArcGIS.



Answer



Part count will not yield the correct answer. You could have a multi-part polygon with no holes. See image below for scenario.


Multi-part polygons


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!)

No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...