Cleaning topology problems in a polygon dataset - the overlay approach.
Three main tasks are involved in the cleaning process:
Identify overlaps and convert them to polygons
Identify gaps and convert them to polygons
Identify slivers and clean them
Only functions available in ET GeoWizards are used.
Source dataset sent from a customer. Visually looks good, but has several topology problems.
STEP1: Clean Polygons function will
- Fix all coordinate inaccuracies within the Fuzzy (Cluster) tolerance used.
- Create a separate polygon from the overlapping area of polygons. The result will not have any overlaps. The polygon will have the attributes of one of the overlapping polygons.
Note: The use of very large Fuzzy tolerance might result in unwanted approximation of the original shapes.
If zoomed in the area of a point that indicates an overlap we'll see something like this. In some cases the overlap polygons might be real polygons, but in most of the cases they will be slivers and have to be cleaned by joining them to the neighboring real polygons.
A Sliver polygon is a small polygon feature commonly occurring along the borders of polygons following a overlay of two or more polygon datasets or as a result of inaccurate digitizing.
There a several ways of identifying and cleaning the sliver polygons.
Identified Sliver Polygons
STEP 2: Eliminate function has several options to identify sliver polygons:
- Attribute query
- Thickness ratio
- Circularity ratio
After the preparation made above we can use "Attribute query" option with [Sliver] = "Yes". The highlighted polygons will be selected for eliminating.
The Eliminate function has four methods for eliminating slivers. For this task you can use two of the options:
- Join (Largest Area)
- Join (Longest boundary
The images on the left show the result of the Eliminate function.s
STEP 3: Clean Gaps function will identify the gaps between the polygons and create new polygons from them. The attribute table of the resulting feature class will have a new field - "ET_Gaps". The gap polygons will be indicated in this field as "Gap", the original polygons will be indicated as "Original"
- Only the gaps that are completely enclosed by polygons will be converted to new polygons. Gaps that are not completely enclosed - "leak" towards the "Universal" polygon will remain
- Some of the gaps might represent "True" gaps in the data. They will be filled by new polygons and indicated as "Gap" in the attribute table. Since we do not want to join them to the real polygons we can just select :(for example "ET_Gaps" = 'Gap' AND "ET_Area" > 300 ) and delete them.
STEP 4: The rest of the "Gap" polygons can be joined to the adjacent polygons using the Eliminate function with attribute query "ET_Gaps" = 'Gap'