Transform - Normalize Topology

Normalize Topology alters drawings in many ways at once by making fine adjustments in the positions and coordinate points defining points, lines and areas. If objects fall within the distance specified in Location Precision in the View - Properties - Precision dialog, they will be adjusted to topologically sensible positions.


This operator includes several functions that are executed simultaneously:


·      Snap lines to nearest points - 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.

·      Split lines at intersections.

·      Remove redundant coordinates in object metrics that are unshared with other objects.

·      Move defining coordinates to the nearest positions consistent with the Location Precision parameter and remove any redundancies.


This latter function leads to the use of Normalize Topology for "generalizing" drawings to a lower resolution by altering the Location Precision parameter in the View - Properties - Precision dialog of a drawing and then running Normalize topology.


Normalize Topology can handle any mix of points, lines and areas, including branched areas. 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. It will automatically make fine adjustments so that small gaps do not appear between neighboring areas, for example.


See the Normalize Metric topic for illustrations of redundant metrics.


Use with Multiple Map Layers


To run Normalize Topology across map layers, run it on [All Objects] or on [Selection] if the selection includes objects in multiple map layers.


For better results (both speed and accuracy) make sure that all map layers and the map are in the same projection and all layers use the same location precision.




Once Normalize Metric or Normalize Topology is run on an object, the object will be flagged within internal Manifold storage as clean. During future Normalize runs the process will skip examination and normalization of objects that are marked clean. If an object is subsequently modified (through editing by a user or by a script) the "clean" flag will be cleared so that the object will be examined by future passes of Normalize Topology. If the Location Precision property of a drawing is modified via the View - Properties - Precision dialog to a higher value (that is, a less demanding precision) then the "clean" flag for all objects will be cleared.


Because of the caching behavior of Normalize Topology, the amount of time required for the function will vary based on how many objects are been marked "clean." If the Location Precision has just been changed in a large drawing the function will take longer to run. If Normalize Topology has just been run (either explicitly or automatically as part of another transform), the function will run very rapidly since all objects will be marked "clean."


Comparison to Simplify


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




We begin with a drawing of Mexico that's been projected into Orthographic projection.




Running Simplify with a Distance setting of 25000 meters results in the simplification of areas. 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.


If instead of using Simplify we used Normalize Topology, we would first use View - Properties - Precision to set the Location Precision to 25000 meters and then we would run Normalize Topology.




Normalize Topology takes a lot longer to run than Simplify, but the result in the end is free of overlaps and gaps. Each area has been adjusted both on the basis of capturing its own shape as well as to match its neighbors. 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 Simplify.


When simplifying a single object it is probably best to use Simplify 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 Metric


Both of these transform operators are used to produce a clean metric; however, the metric produced by Normalize Metric may be slightly different than that produced by Normalize Topology. The main difference between them is that Normalize Metric 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 Metric 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 Metric 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 location precision. Normalize Metric will leave points unmoved.

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


Both Normalize Topology and Normalize Metric will remove redundant coordinates, but Normalize Topology may leave some redundant coordinates that would be removed by Normalize Metric. 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. Note that Normalize Metric can not do the same since it operates only on single objects.


How should one choose between Normalize Topology and Normalize Metric? 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 Metric.


One of the rare cases where we might prefer Normalize Metric 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 Metric at, say, one-fourth of the usual Location precision and then run Normalize Topology at the normal value of Location precision.


When dealing with imported drawings that may contain specific features of the metric that are to be preserved, users will often choose to begin operations by running Normalize Topology. This will clean object metrics while preserving redundant coordinates that are co-located with other objects, and it will mark all objects as having clean metrics. This avoids a situation where Manifold is compelled to run Normalize Metric even though we do not want it run.


If some other transform operator (such as Clip Intersect) is run on a drawing that has not been yet normalized with either Normalize function Manifold has no choice but to run Normalize Metric to guarantee a clean metric. By running Normalize Topology first we pre-empt the running of Normalize Metric by other transforms in self-defense. The main reason for running Normalize Topology first is to prevent the deletion of redundant coordinates that are co-located with other objects. A secondary (rare) reason is to prevent redundant coordinates from being deleted when we are working at a location precision that may cause coordinates to be judged "redundant" that are really needed to prevent gaps from emerging between formerly adjacent objects.


Why do the other transform operators run Normalize Metric instead of Normalize Topology if objects need cleaning before processing? Transform operators are frequently run on subsets of objects. If Normalize Topology were used automatically the usual workflow of running transforms on subsets of objects would quickly lead to a clustered drawing, different parts of which have been normalized with respect to different sets of objects. That would defeat the global normalization that is usually a key objective of Normalize Topology.


To summarize, when in doubt run Normalize Topology once before running other transforms. This can be very time consuming for large drawings, but it is a prudent and necessary step experts will take if they wish to preserve specific metrics.


Tech Tip


To prevent Normalize Topology from moving coordinates about (snapping points to the ends of lines, etc.), one simply sets the location 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 location precision of .001 meter will assure that no coordinates are moved by Normalize Topology. The procedure is:


·      Launch the View - Properties dialog for the drawing and set Location Precision to a very small value.

·      Launch Tools - Options dialog, go to Miscellaneous page and uncheck the Split branched objects after transforms checkbox.


See Also



Transform - Normalize Metric