Class LineMerger
Merging stops at nodes of degree 1 or degree 3 or more. In other words, all nodes of degree 2 are merged together. The exception is in the case of an isolated loop, which only has degree-2 nodes. In this case one of the nodes is chosen as a starting point.
The direction of each merged LineString will be that of the majority of the LineStrings from which it was derived.
Any dimension of Geometry is handled - the constituent linework is extracted to form the edges. The edges must be correctly noded; that is, they must only meet at their endpoints. The LineMerger will accept non-noded input but will not merge non-noded edges.
Input lines which are empty or contain only a single unique coordinate are not included in the merging.
- Version:
- 1.7
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Collection
private GeometryFactory
private LineMergeGraph
private Collection
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoid
add
(Collection geometries) Adds a collection of Geometries to be processed.void
Adds a Geometry to be processed.private void
add
(LineString lineString) private void
private void
private void
private void
private void
private EdgeString
Gets theLineString
s created by the merging process.private void
merge()
-
Field Details
-
graph
-
mergedLineStrings
-
factory
-
edgeStrings
-
-
Constructor Details
-
LineMerger
public LineMerger()Creates a new line merger.
-
-
Method Details
-
add
Adds a Geometry to be processed. May be called multiple times. Any dimension of Geometry may be added; the constituent linework will be extracted.- Parameters:
geometry
- geometry to be line-merged
-
add
Adds a collection of Geometries to be processed. May be called multiple times. Any dimension of Geometry may be added; the constituent linework will be extracted.- Parameters:
geometries
- the geometries to be line-merged
-
add
-
merge
private void merge() -
buildEdgeStringsForObviousStartNodes
private void buildEdgeStringsForObviousStartNodes() -
buildEdgeStringsForIsolatedLoops
private void buildEdgeStringsForIsolatedLoops() -
buildEdgeStringsForUnprocessedNodes
private void buildEdgeStringsForUnprocessedNodes() -
buildEdgeStringsForNonDegree2Nodes
private void buildEdgeStringsForNonDegree2Nodes() -
buildEdgeStringsStartingAt
-
buildEdgeStringStartingWith
-
getMergedLineStrings
Gets theLineString
s created by the merging process.- Returns:
- the collection of merged LineStrings
-