Namespace NetTopologySuite.GeometriesGraph
Contains classes that implement topology graphs.
The Net Topology Suite (NTS) is a .Net API that implements a core set of spatial data operations using an explicit precision model and robust geometric algorithms. NTS is intended to be used in the development of applications that support the validation, cleaning, integration and querying of spatial datasets.
NTS attempts to implement the OpenGIS Simple Features Specification (SFS) as accurately as possible. In some cases the SFS is unclear or omits a specification; in this case NTS attempts to choose a reasonable and consistent alternative. Differences from and elaborations of the SFS are documented in this specification.
Classes
Depth
A Depth object records the topological depth of the sides of an Edge for up to two Geometries.
DirectedEdge
DirectedEdgeStar
A DirectedEdgeStar is an ordered list of outgoing DirectedEdges around a node. It supports labelling the edges as well as linking the edges to form both MaximalEdgeRings and MinimalEdgeRings.
Edge
EdgeEnd
Models the end of an edge incident on a node.
EdgeEndStar
A EdgeEndStar is an ordered list of EdgeEnds around a node. They are maintained in CCW order (starting with the positive x-axis) around the node for efficient lookup and topology building.
EdgeIntersection
An EdgeIntersection represents a point on an edge which intersects with another edge. The intersection may either be a single point, or a line segment (in which case this point is the start of the line segment) The label attached to this intersection point applies to the edge from this point forwards, until the next intersection or the end of the edge. The intersection point must be precise.
EdgeIntersectionList
A list of edge intersections along an Edge.
EdgeList
A EdgeList is a list of Edges. It supports locating edges that are point-wise equals to a target edge.
EdgeNodingValidator
Validates that a collection of Edge is correctly noded.
Throws an appropriate exception if an noding error is found.
EdgeRing
GeometryGraph
A GeometryGraph is a graph that models a given Geometry.
GraphComponent
A GraphComponent is the parent class for the objects' that form a graph. Each GraphComponent can carry a Label.
Label
A Label
indicates the topological relationship of a component
of a topology graph to a given Geometry
.
This class supports labels for relationships to two Geometry
s,
which is sufficient for algorithms for binary operations.
Topology graphs support the concept of labeling nodes and edges in the graph.
The label of a node or edge specifies its topological relationship to one or
more geometries. (In fact, since NTS operations have only two arguments labels
are required for only two geometries). A label for a node or edge has one or
two elements, depending on whether the node or edge occurs in one or both of the
input Geometry
s. Elements contain attributes which categorize the
topological location of the node or edge relative to the parent
Geometry
; that is, whether the node or edge is in the interior,
boundary or exterior of the Geometry
. Attributes have a value
from the set {Interior, Boundary, Exterior}
. In a node each
element has a single attribute On
. For an edge each element has a
triplet of attributes Left, On, Right
.
It is up to the client code to associate the 0 and 1 TopologyLocation
s
with specific geometries.
Node
NodeFactory
A Factory to create Nodes.
NodeMap
A map of nodes, indexed by the coordinate of the node.
PlanarGraph
The computation of the IntersectionMatrix
relies on the use of a structure
called a "topology graph". The topology graph contains nodes and edges
corresponding to the nodes and line segments of a Geometry
. Each
node and edge in the graph is labeled with its topological location relative to
the source point.
Note that there is no requirement that points of self-intersection be a vertex.
Thus to obtain a correct topology graph, Geometry
s must be
self-noded before constructing their graphs.
Two fundamental operations are supported by topology graphs:
Computing the intersections between all the edges and nodes of a single graph
Computing the intersections between the edges and nodes of two different graphs
Position
A Position indicates the position of a Location relative to a graph component (Node, Edge, or Area).
QuadrantOp
Utility functions for working with quadrants, which are numbered as follows:
1 | 0 --+-- 2 | 3
TopologyLocation
A TopologyLocation is the labelling of a GraphComponent's topological relationship to a single Geometry.