Class SnapRoundingNoder
- java.lang.Object
-
- org.locationtech.jts.noding.snapround.SnapRoundingNoder
-
- All Implemented Interfaces:
Noder
public class SnapRoundingNoder extends java.lang.Object implements Noder
Uses Snap Rounding to compute a rounded, fully noded arrangement from a set ofSegmentString
s, in a performant way, and avoiding unnecessary noding.Implements the Snap Rounding technique described in the papers by Hobby, Guibas & Marimont, and Goodrich et al. Snap Rounding enforces that all output vertices lie on a uniform grid, which is determined by the provided
PrecisionModel
.Input vertices do not have to be rounded to the grid beforehand; this is done during the snap-rounding process. In fact, rounding cannot be done a priori, since rounding vertices by themselves can distort the rounded topology of the arrangement (i.e. by moving segments away from hot pixels that would otherwise intersect them, or by moving vertices across segments).
To minimize the number of introduced nodes, the Snap-Rounding Noder avoids creating nodes at edge vertices if there is no intersection or snap at that location. However, if two different input edges contain identical segments, each of the segment vertices will be noded. This still provides fully-noded output. This is the same behaviour provided by other noders, such as
MCIndexNoder
andSnappingNoder
.- Version:
- 1.7
-
-
Constructor Summary
Constructors Constructor Description SnapRoundingNoder(PrecisionModel pm)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
computeNodes(java.util.Collection inputSegmentStrings)
Computes the nodes in the snap-rounding line arrangement.java.util.Collection
getNodedSubstrings()
Returns aCollection
of fully nodedSegmentString
s.
-
-
-
Constructor Detail
-
SnapRoundingNoder
public SnapRoundingNoder(PrecisionModel pm)
-
-
Method Detail
-
getNodedSubstrings
public java.util.Collection getNodedSubstrings()
Description copied from interface:Noder
Returns aCollection
of fully nodedSegmentString
s. The SegmentStrings have the same context as their parent.- Specified by:
getNodedSubstrings
in interfaceNoder
- Returns:
- a Collection of NodedSegmentStrings representing the substrings
-
computeNodes
public void computeNodes(java.util.Collection inputSegmentStrings)
Computes the nodes in the snap-rounding line arrangement. The nodes are added to theNodedSegmentString
s provided as the input.- Specified by:
computeNodes
in interfaceNoder
- Parameters:
inputSegmentStrings
- a Collection of NodedSegmentStrings
-
-