How Clean works
This topic applies to ArcInfo only.
Clean creates topology for polygon or line coverages.
When creating polygon topology:
- Polygon topology and a polygon attribute table (PAT) are created. If there is an AAT, it is automatically updated. One additional polygon, the background or universe polygon, is also created.
- Label points are required if you want non-zero polygon User-IDs and if you want to maintain polygon attributes. If a polygon has more than one label point, one is arbitrarily chosen to assign the User-ID.
- Route systems are maintained, and the SEC and RAT are updated with adjustments for splitting and arc renumbering. Routes and sections are deleted if they are attached to arcs that are merged because of the Fuzzy tolerance setting.
- Sections are split and their arcs and measures on the arcs are updated.
- Region topology is maintained. If the Input Coverage has preliminary region topology, PAT and PAT<subclass> are created.
When creating line topology:
- Arc-node topology and an AAT are created or updated.
- An existing PAT is not updated.
- Route systems are maintained, and the SEC and RAT are updated with adjustments for splitting and arc renumbering. Routes and sections are deleted if they are attached to arcs that are merged because of the Fuzzy Tolerance setting.
- Sections are split and their arcs and measures on the arcs are updated.
- Regions and region subclasses are deleted.
Clean builds polygon and arc-node topology by performing a geometric analysis on the coverage arcs and label points to identify coverage nodes and polygons. The specific geometric analysis operations performed by Clean are described below.
Clean finds intersections between arcs, splits the arcs, and codes the intersections as nodes (that is, arc endpoints).
During Clean, two or more arc coordinates within the Fuzzy Tolerance of each other are snapped together (for example, become the same coordinate point). No distinction is made between interior arc coordinates and nodes or between arcs. Because the Fuzzy Tolerance actually moves arc vertices, understanding its relationship to coverage resolution is important. Refer to Setting tolerances for Clean below.
Clean builds polygon and arc-node topology by identifying areas enclosed by arcs and creates the list of arcs that define each polygon boundary. Clean also numbers nodes and establishes the from-node and to-node for each arc as well as the internal polygon numbers to the left and right of each arc. Internal polygon numbers are set to 0 for the LINE option.
Set of arcs enclosing each polygon Polygon number Number of Arcs Arc numbers 1 4 1,2,9,4 2 4 1,3,5,4 3 4 2,8,6,3 4 4 6,8,9,5
Polygons to the left and right of each arc Arc number From-node To-node Left Poly Right Poly 1 1 2 1 2 2 2 7 1 3 3 2 3 3 2 4 4 1 1 2 5 4 3 2 4 6 5 3 4 3 7 5 6 3 3 8 7 5 4 3 9 7 4 1 4
Clean compares the length of dangling arcs against the Dangle Length and deletes those that are shorter than that length. A dangling arc is an arc that has the same polygon internal number on both its left and right sides and ends in a dangling node.
Polygons to the left and right of each arc Arc number Left poly Right poly Length 1 1 2 5.0 2* 1 1 0.2 3 1 3 8.8 4 2 3 1.2 5* 2 2 0.2 6 2 4 1.3 7* 1 1 0.2 8 4 3 1.9 9* 3 3 1.5 10 4 3 1.9 11* 1 1 0.2 12 4 1 3.1 * Dangling arcs + Arc length is longer than dangle length = 1.0
Based on the specified Dangle Length, arc 9 was kept in the coverage, whereas arcs 2, 5, 7 and 11 were removed.
For the POLY option, Clean finds a label point within each polygon that can be used to assign a User-ID to each polygon. Polygons that do not have label points are assigned User-IDs of zero. If a polygon contains more than one label point, one of the labels is chosen arbitrarily to assign a User-ID to the polygon.
Polygon Internal no. Polygon User-ID 1 0 2 101 3 102 4 0
Clean builds a PAT or AAT depending on the option used. Clean calculates the area and perimeter for each polygon and stores this information along with the polygon internal number and User-ID in the PAT. If the Input Coverage has a PAT, the polygon's original internal number is used to join any additional items in the PAT to the Output Coverage PAT.
EXCOV.PAT before Clean AREA PERIMETER EXCOV# EXCOV-ID COVER-TYPE -25.0 20.0 1 0 2.0 7.5 2 0 Shrub 3.0 9.0 3 13 Trees 9.0 11.0 4 10 Grass 3.5 8.0 5 13 Forest 1.0 2.5 6 0 Water 4.5 9.0 7 14 Shrub 2.0 5.0 8 0 Forest
EXCOV.PAT after Clean AREA PERIMETER EXCOV# EXCOV-ID COVER-TYPE -25.0 20.0 1 0 2.0 7.5 2 0 3.0 9.0 3 13 Trees 9.0 11.0 4 10 Grass 3.5 8.0 5 13 Forest 1.0 2.5 6 0 Water 4.5 9.0 7 14 Shrub 2.0 5.0 8 0
When using Clean with the POLY option, polygon label points are recommended but not required. Polygon labels are used to retain attributes throughout Clean. Although not required, it is also recommended that these label points have unique IDs.
After building this coverage, the COVER-TYPE attribute values have been maintained for all polygons having label points-attributes in polygons without labels were not maintained.
For the LINE option, Clean automatically builds line attributes (for example, an AAT) for a coverage. Also, when using the POLY option on an Input Coverage that has an AAT, Clean will automatically recreate the AAT in the Output Coverage. Additional items in the input AAT will be joined to the output AAT using the arc's old internal number as the relate item. The LPOLY# and RPOLY# items in the AAT will equal the new polygon internal numbers.
The following examples illustrate using Clean with the LINE option to create the AAT. The first example is a coverage that contains polygon topology. The second example does not, so the LPOLY and RPOLY numbers were recorded as zeros.
Items from VEG.AAT after Clean FNODE TNODE LPOLY RPOLY LENGTH VEG# VEG-ID 1 3 2 1 5.0 1 1 1 2 3 2 2.0 2 2 1 4 1 3 10.0 3 3 2 3 4 2 1.9 4 4 4 2 4 3 3.9 5 5 3 4 4 1 5.1 6 6
Items from ROADS.AAT after CLEAN FNODE TNODE LPOLY RPOLY LENGTH ROADS# ROADS-ID 1 2 0 0 1.0 1 1 2 3 0 0 1.2 2 2 3 5 0 0 0.8 3 3 4 4 0 0 0.9 4 4 5 6 0 0 1.0 5 5
Setting tolerances for Clean
The choice of a Fuzzy Tolerance is important for CLEAN. Since no two coordinates in the Output Coverage will be within this distance of each other, the Fuzzy Tolerance determines the resolution of the Output Coverage. A Fuzzy Tolerance that is too small may cause two kinds of problems.
- Clean may not resolve congruent arc segments, that is, parallel arc segments that are within the Fuzzy Tolerance of one another.
- Existing slivers or undershoots may not be successfully cleaned.
Conversely, a Fuzzy Tolerance that is too large may collapse polygons or merge arcs that should not merge.
Take special care in choosing a Dangle Length. All dangling arcs that are shorter than the specified Dangle Length are deleted.
Clean can be used to process LINE coverages in which intersecting arcs must be split or to recreate arc-node topology after editing.
The Build tool performs similar processing operations. Build with the POLY option creates polygon topology and attributes (for example, a PAT). Build with LINE will create an AAT or rebuild one if it exists. Build does not, however, perform coordinate editing as does Clean. For example, it cannot split arcs where they intersect with other arcs. Another Coverage command, Renumber Nodes, will renumber the node numbers for each arc by resetting their internal numbers and automatically updating the internal number of the from-nodes and to-nodes of each arc in the coverage AAT.