Class MCIndexSnapRounder
java.lang.Object
org.locationtech.jts.noding.snapround.MCIndexSnapRounder
- All Implemented Interfaces:
Noder
Uses Snap Rounding to compute a rounded,
fully noded arrangement from a set of
SegmentStrings.
Implements the Snap Rounding technique described in
papers by Hobby, Guibas & Marimont, and Goodrich et al.
Snap Rounding assumes that all vertices lie on a uniform grid;
hence the precision model of the input must be fixed precision,
and all the input vertices must be rounded to that precision.
This implementation uses a monotone chains and a spatial index to speed up the intersection tests.
This implementation appears to be fully robust using an integer precision model. It will function with non-integer precision models, but the results are not 100% guaranteed to be correctly noded.
- Version:
- 1.7
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate LineIntersectorprivate Collectionprivate MCIndexNoderprivate final PrecisionModelprivate MCIndexPointSnapperprivate final double -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidcheckCorrectness(Collection inputSegmentStrings) private voidcomputeIntersectionSnaps(Collection snapPts) Snaps segments to nodes created by segment intersections.voidcomputeNodes(Collection inputSegmentStrings) Computes the noding for a collection ofSegmentStrings.voidcomputeVertexSnaps(Collection edges) Snaps segments to all vertices.private voidSnaps segments to the vertices of a Segment String.private ListfindInteriorIntersections(Collection segStrings, LineIntersector li) Computes all interior intersections in the collection ofSegmentStrings, and returns theirCoordinates.Returns aCollectionof fully nodedSegmentStrings.private voidsnapRound(Collection segStrings, LineIntersector li)
-
Field Details
-
pm
-
li
-
scaleFactor
private final double scaleFactor -
noder
-
pointSnapper
-
nodedSegStrings
-
-
Constructor Details
-
MCIndexSnapRounder
-
-
Method Details
-
getNodedSubstrings
Description copied from interface:NoderReturns aCollectionof fully nodedSegmentStrings. The SegmentStrings have the same context as their parent.- Specified by:
getNodedSubstringsin interfaceNoder- Returns:
- a Collection of SegmentStrings
-
computeNodes
Description copied from interface:NoderComputes the noding for a collection ofSegmentStrings. Some Noders may add all these nodes to the input SegmentStrings; others may only add some or none at all.- Specified by:
computeNodesin interfaceNoder- Parameters:
inputSegmentStrings- a collection ofSegmentStrings to node
-
checkCorrectness
-
snapRound
-
findInteriorIntersections
Computes all interior intersections in the collection ofSegmentStrings, and returns theirCoordinates. Does NOT node the segStrings.- Returns:
- a list of Coordinates for the intersections
-
computeIntersectionSnaps
Snaps segments to nodes created by segment intersections. -
computeVertexSnaps
Snaps segments to all vertices.- Parameters:
edges- the list of segment strings to snap together
-
computeVertexSnaps
Snaps segments to the vertices of a Segment String.
-