Using Topology Primitives

Topology primitives consist of nodes, edges, and faces.

Each primitive has references to features that allow navigation between topology and features used during topology structuring. For example, the reference area_to_face is used during structuring to find the faces that comprise a polygon.

Topology information is calculated by a Build Topology task and stored within a datastore containing internal classes. The classes for topology are sys:node, sys:edge and sys:face. When you build topology, these classes are populated. 

There is only one set of topology primitives per session. To have different sets of topology primitives, you need different sessions with their own Build Topology task.

At the end of the session, the topology primitives are thrown away, unless you create an action to copy some or all of them to your own classes (for example copying face geometries for a polygonisation action).

Topology table structure

Topology references can be used to accurately identify spatial relationships in the data (e.g. find all edges which reference at least one road feature but no water features).

Topology nodes and edges can also be moved by assigning them an updated geometry. These changes get automatically propagated to the features from which the topology was built, which means that these edits guarantee that the data stays connected. Simplifying a topology edge geometry will guarantee that the polygons on either side of the edge do not have gaps and overlaps introduced between them.

When a node or the end of an edge is moved than all connected edges will move in sympathy. The built-in operation set_topology_edge_drag_mode determines whether a moved node will drag only the final segment of the connected edges, or whether the whole length of the connected edges will be moved in order to keep them connected (see Built-in Operations).

1Integrate will raise an error if any changes would cause problems with the specific topology setting such crossing edges or edges shorter than tolerance.