Class MCIndexSnapRounder

java.lang.Object
org.locationtech.jts.noding.snapround.MCIndexSnapRounder
All Implemented Interfaces:
Noder

public class MCIndexSnapRounder extends Object implements 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 Details

  • Constructor Details

  • Method Details

    • getNodedSubstrings

      public Collection getNodedSubstrings()
      Description copied from interface: Noder
      Returns a Collection of fully noded SegmentStrings. The SegmentStrings have the same context as their parent.
      Specified by:
      getNodedSubstrings in interface Noder
      Returns:
      a Collection of SegmentStrings
    • computeNodes

      public void computeNodes(Collection inputSegmentStrings)
      Description copied from interface: Noder
      Computes the noding for a collection of SegmentStrings. Some Noders may add all these nodes to the input SegmentStrings; others may only add some or none at all.
      Specified by:
      computeNodes in interface Noder
      Parameters:
      inputSegmentStrings - a collection of SegmentStrings to node
    • checkCorrectness

      private void checkCorrectness(Collection inputSegmentStrings)
    • snapRound

      private void snapRound(Collection segStrings, LineIntersector li)
    • findInteriorIntersections

      private List findInteriorIntersections(Collection segStrings, LineIntersector li)
      Computes all interior intersections in the collection of SegmentStrings, and returns their Coordinates. Does NOT node the segStrings.
      Returns:
      a list of Coordinates for the intersections
    • computeIntersectionSnaps

      private void computeIntersectionSnaps(Collection snapPts)
      Snaps segments to nodes created by segment intersections.
    • computeVertexSnaps

      public void computeVertexSnaps(Collection edges)
      Snaps segments to all vertices.
      Parameters:
      edges - the list of segment strings to snap together
    • computeVertexSnaps

      private void computeVertexSnaps(NodedSegmentString e)
      Snaps segments to the vertices of a Segment String.