*UPDATE:* After installing v1.4.2 , I'm no longer experiencing the issue with polygons containing holes; however, multi-part polygons still are not handled properly (only one part is extracted during conversion to a Shapely polygon).

I 'm having some issues with the ArcGIS Python API v1.4 and polygons with holes (interior rings). Attached is a jupyter notebook with an example where I retrieve a US Census block containing a hole. I am unable to intersect the polygon with another polygon (a TopologyException is raised). Additionally, the area property of the polygon appears incorrect, returning the sum of the exterior and interior rings rather than the difference. It appears that the as_shapely method for polygon geometries with holes isn't working properly.

The semantics of Esri's geometry model don't line up with, well, just about any other geometry model. I wrote about this in a blog post last summer: A Case of Missing Prefixes: ArcGIS ...Geometries .

Whether WKB, WKT, __geo_interface__, GeoJSON, etc...; Esri polygons will be described as multi-polygons, even if they are just a polygon. Since an OGC Simple Feature MULTIPOLYGON is perfectly valid if it only has a single geometry, having polygons described as multi-part polygons mostly works.

The current bug in the ArcGIS API for Python isn't describing a polygon as a multi-part polygon, that is expected with Esri software, the bug has to do with how the multi-part polygon is being structured. As I mentioned earlier, an extra bracket is being inserted which turns a multi-part polygon with a single polygon with a hole in it (what you want) into a multi-part polygon with two polygons with no holes. Since the two polygons overlap each other, the multi-part polygon is invalid, and running spatial methods on it/them fails.