Namespace NetTopologySuite.Operation.Linemerge
Classes
EdgeString
A sequence of LineMergeDirectedEdge
s forming one of the lines that will
be output by the line-merging process.
LineMergeDirectedEdge
A com.vividsolutions.jts.planargraph.DirectedEdge
of a LineMergeGraph
.
LineMergeEdge
An edge of a LineMergeGraph
. The marked
field indicates
whether this Edge has been logically deleted from the graph.
LineMergeGraph
A planar graph of edges that is analyzed to sew the edges together. The
marked
flag on Edges
and Nodes indicates whether they have been
logically deleted from the graph.
LineMerger
Sews together a set of fully noded LineStrings.
LineSequencer
Builds a sequence from a set of LineStrings, so that they are ordered end to end. A sequence is a complete non-repeating list of the linear components of the input. Each linestring is oriented so that identical endpoints are adjacent in the list.
The input linestrings may form one or more connected sets. The input linestrings should be correctly noded, or the results may not be what is expected. The output of this method is a single MultiLineString, containing the ordered linestrings in the sequence.
The sequencing employs the classic 'Eulerian path' graph algorithm. Since Eulerian paths are not uniquely determined, further rules are used to make the computed sequence preserve as much as possible of the input ordering. Within a connected subset of lines, the ordering rules are: - If there is degree-1 node which is the start node of an linestring, use that node as the start of the sequence. - If there is a degree-1 node which is the end node of an linestring, use that node as the end of the sequence. - If the sequence has no degree-1 nodes, use any node as the start
Not all arrangements of lines can be sequenced.
For a connected set of edges in a graph,
Euler's Theorem states that there is a sequence containing each edge once
if and only if there are no more than 2 nodes of odd degree.
If it is not possible to find a sequence, the IsSequenceable()
property will return false
.