Automatically split polygons

716
4
08-18-2011 08:05 AM
AlexGuyot
New Contributor
Hello,

I have a shapefile containing thousands of polygon features, including some "donut" features.

I would like to replace each donut feature by 2 adjacent features (basically removing the "hole", but keeping the representation of this "hole"). I've attached a picture to clarify the situation.

One idea would be to split the polygon by a polyline. I can manually do that in Editing mode, but I cannot figure out how to do that using geoprocessing/python

Any help will be appreciated,

Thanks,
Alex
0 Kudos
4 Replies
DanLee
by Esri Regular Contributor
Esri Regular Contributor
I am not sure what criteria you have in mind for creating the lines, but once you have the lines that you want to use to split the polygons, you can try the following:
1. Run the Intersect tool to find the line segments that are intersecting/inside the polygons.
2. Run Feature To Polygon tool (requiring ArcInfo license) using the output lines from step 1 and the polygons as input. The result should be the split polygons.

Regards,
0 Kudos
AlexGuyot
New Contributor
Thanks for the idea, unfortunately I only have an ArcView licence of ArcGIS Desktop 10.

Actually, the separating line can be anywhere on the polygon shape.

The objective is to remove the hole while keeping its geometry, because the shapefile is used by a 3rd party software that doesn't deal with multipart features (including interior ring).

Has anyone came across the same problematic ?

Alex
0 Kudos
BruceHarold
Esri Regular Contributor
Alex

The Data Interoperability extension has a transformer that separates the doughnut exterior polygon from its interior rings, creating new features for each interior ring.

See the DonutHoleExtractor.

Regards
0 Kudos
KevinSchilling
New Contributor
Hello,

I have shapfile also with around a thousand polygons. Each polygon will need to be split based upon its area, if a polygon is greater than say 3500 sq.ft. then it will need to be split, but if not greater then it doesn't. Is there a way that this can be accomplished?

Thanks,

Kevin
0 Kudos