Transform: Normalize Topology

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:



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.

Example: Remove redundant coordinates

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.


Example: Snap points to nearest lines

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.

Example:  Multiple operations at once

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.

Comparison to Smooth

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.

Differences between Normalize Topology and Normalize

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:





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_yoshi_sm.png


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.


See Also

Contents Pane




Transform Pane


Transform Templates - Drawings


SQL Functions