The **Normalize Topology** template
in the **Transform**
pane alters drawings in many ways at once by making fine adjustments in
the positions and coordinate points defining points, lines and areas,
considering all of the objects in a drawing. If objects fall within the
distance specified in the template's **Tolerance**
parameter, they will be adjusted to topologically sensible positions.

This template includes several functions that are executed simultaneously:

Snap points to nearest lines - Used to prepare drawings for use as networks.

Resolve overshoots and undershoots - Truncate overshoots and extend undershoots.

Adjust area boundaries - Clip overlaps and extend areas to fill in gaps.

When lines intersect or points fall on lines, insert coordinates for lines at the intersection, creating branches.

Remove redundant coordinates in object metrics that are not shared with other objects.

Move defining coordinates to the nearest positions consistent with the distance specified in the template's

**Tolerance**parameter, and remove any redundancies.

This latter function leads to the use of Normalize Topology for "generalizing"
drawings to a lower resolution by running Normalize Topology with the
desired **Tolerance** distance.

Normalize Topology can handle within the same drawing any mix of points, lines and areas, including branched objects. Lines and points are pulled to neighboring areas and then lines and points are adjusted between themselves. Normalize Topology considers neighboring objects when making adjustments. For example, it will automatically make fine adjustments so that small gaps do not appear between neighboring areas.

Removing redundant coordinates will remove a dimensionless "spike" of zero width from an area.

Consider an area created with a pathology as seen above.

The Coordinates tab shows how the same coordinate numbers define one coordinate, selected in red, with the area continuing on to a point and then returning to the same coordinate location, also selected in red. That creates a dimensionless spike.

In the Transform pane we choose Normalize Topology with a **Tolerance** setting
of **0**, for automatic tolerance.

We use the **Options **button
to specify a short name for the new component, and then we press
**Add Component** to create
a normalized version of the drawing.

Dropping the resulting drawing into our drawing as a layer (and turning
off the layer for the original Drawing) we see the spike has been eliminated.
We have **Shift-Alt-clicked**
the area to show the coordinates that define it.

Only one of the two coordinates that was previously selected remains. The distant coordinate that was the tip of the dimensionless spike has been removed, as was the duplicate coordinate to which the area boundary returned.

Points might fall near to a line but not actually lie on that line or not be coincident with a coordinate location that defines the line.

Consider the illustration above, where a point may appear to be coincident with the end of a line.

Zooming far in, we see that the point is not actually on the line. It is not coincident with the end of the line.

Running Normalize Topology with a **Tolerance** setting
of **1** meter will move
the point to the line.

We can see from the preview that the point will be moved to the end of the line.

The Normalize Topology template automatically performs all operations it does at once.

Consider a drawing as shown above. It consists of four lines, an area, and eight points. Some of the lines intersect each other. The orange line overshoots the area boundary. None of the points fall on any line.

We can run Normalize Topology with a **Tolerance**
of **10** meters, as
seen above.

The preview shows what the template will do.

In the Transform pane we press the **Options**
button and specify a short name for the output. We the press
**Add Component** to create a
new component. Normalize Topology always uses **Add Component** because the number
of objects or branches frequently changes.

Dropping the newly created drawing into the same map and coloring it
with Style similarly to the original drawing shows what has been done.
The orange line which overshoot into the green area has been
trimmed to the edge of the area. All points falling within
the **Tolerance** distance of
a line (all points in this example) have been moved to be placed exactly
on lines. Lines have been adjusted to acquire new coordinates,
creating branches, where they intersect other lines or where points have
been moved onto the lines. The new coordinates have
been added in locations that are consistent with the **Tolerance** used.

The effect of creating new coordinates where lines intersect or where points have been placed creates new branches in the lines, and it also often will convert what once was a straight line into a series of branches that together no longer form a straight line.

Consider the original drawing seen at left above. The straight
blue line has been chosen with a **Shift-Alt-click**
for editing, so the coordinates of the line show up as handles in the
drawing. The line is defined by two coordinates. It
is a single branch that is a single, straight segment between those two
coordinates. At right above we see the result of Normalize
Topology, with the same blue line chosen with a **Shift-Alt-click**
for editing, The line now is defined by many coordinates. It
consists of six straight line segments, each of which is a separate branch.
Lined up as they are, the six segments do not form a straight
line, because the coordinates which define them have been moved slightly
to fall within the **Tolerance** rounding
that was used.

The Smooth template is similar to the Normalize Topology template. However, the Smooth template is aimed at simplification on a per-object basis while the Normalize Topology template considers relationships between objects when simplifying them. We can see the difference by running both templates on a drawing of Mexico.

We begin with a drawing of Mexico that has been projected into Pseudo-Mercator projection.

Running the Smooth template with a **Distance**
setting of **25000** meters results
in the simplification of areas as seen in the preview below.

However, each area is simplified without considering any relationships with adjacent areas. This provides an optimal simplification when each area is considered by itself but also results in overlaps and gaps between areas.

Instead of using Smooth, we can choose the Normalize Topology template.
Using a **Tolerance** of **25000** meters results in the preview
shown below.

Normalize Topology can take longer to run than Smooth, but the result
is free of overlaps and gaps. The slight gap at the bottom
edge is an artifact of a preview being a quick, approximate preview and
not the final result. No gaps would appear in the final result.
Each area will be adjusted both by fitting coordinates to
the specified **Tolerance**
but also by considering the fitting of neighboring areas. However,
it could be said that the resulting shape for each individual object (without
regard to neighboring areas) is not as "optimal" a simplification
as is done by Smooth.

When simplifying a single object it is probably best to use Smooth since the result is obtained much faster. When simplifying many objects for which adjacency must be maintained it is best to use Normalize Topology.

Both of these transform templates are used to produce a clean metric; however, the metric produced by Normalize may be slightly different than that produced by Normalize Topology. The main difference between them is that Normalize is run on a per-object basis while Normalize Topology is run on an object set as a whole. When processing metrics Normalize Topology considers neighboring objects and Normalize does not:

Normalize Topology will detect overlapping areas and will assign the region of overlap to one of the overlapping areas while clipping it from the others. In this same circumstance Normalize will leave the overlaps.

Normalize Topology will snap points to the nearest object (such as the end of a line) if the distance between the point and the object is less than the

**Tolerance**. Normalize will leave points unmoved.

Normalize Topology will detect an intersection between two lines and will split the lines at the intersection. Normalize will leave the lines unchanged.

Both Normalize Topology and Normalize will remove redundant coordinates, but Normalize Topology may leave some redundant coordinates that would be removed by Normalize. Normalize Topology will leave any redundant coordinates that are also coordinates in any other object. This is done to guarantee that a common border between any two adjacent objects is exactly the same in both objects. Normalize will not do the same since it operates only on single objects.

How should we choose between Normalize Topology and Normalize? In most cases, we would like any adjustments to object metrics to proceed with the entire object set in mind so in most cases one would use Normalize Topology in preference to Normalize.

One of the rare cases where we might prefer Normalize over Normalize
Topology is when we must deal with a seriously inaccurate drawing that
is known to contain many redundancies in object metrics, which we would
like to quickly fix so that all subsequent operations are faster. In this
case we could first run Normalize at, say, one-fourth of the eventual
**Tolerance** precision and then run
Normalize Topology at the desired of **Tolerance**.

When dealing with imported drawings that may contain specific features of the metric that are to be preserved, users may choose to begin operations by running Normalize Topology. This will clean object metrics while preserving redundant coordinates that are coincident with coordinates in other objects.

Tech Tip - To prevent Normalize Topology
from moving coordinates about (snapping points to the ends of lines, etc.),
we simply set the **Tolerance** precision
to a very small value. The "small value" should be some value
considerably less than any possible distance between distinct coordinates
that occur in objects. For example, in a drawing originating from a USGS
DLG where the normal accuracy is ten meters, using a **Tolerance**
of 0.001 meter will assure that no coordinates are moved by Normalize
Topology.

Transform Templates - Drawings