Class GeometrySnapper
- java.lang.Object
-
- org.locationtech.jts.operation.overlay.snap.GeometrySnapper
-
public class GeometrySnapper extends java.lang.Object
Snaps the vertices and segments of aGeometry
to another Geometry's vertices. A snap distance tolerance is used to control where snapping is performed. Snapping one geometry to another can improve robustness for overlay operations by eliminating nearly-coincident edges (which cause problems during noding and intersection calculation). It can also be used to eliminate artifacts such as narrow slivers, spikes and gores.Too much snapping can result in invalid topology being created, so the number and location of snapped vertices is decided using heuristics to determine when it is safe to snap. This can result in some potential snaps being omitted, however.
- Version:
- 1.7
- Author:
- Martin Davis
-
-
Constructor Summary
Constructors Constructor Description GeometrySnapper(Geometry srcGeom)
Creates a new snapper acting on the given geometry
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static double
computeOverlaySnapTolerance(Geometry g)
Estimates the snap tolerance for a Geometry, taking into account its precision model.static double
computeOverlaySnapTolerance(Geometry g0, Geometry g1)
static double
computeSizeBasedSnapTolerance(Geometry g)
static Geometry[]
snap(Geometry g0, Geometry g1, double snapTolerance)
Snaps two geometries together with a given tolerance.Geometry
snapTo(Geometry snapGeom, double snapTolerance)
Snaps the vertices in the componentLineString
s of the source geometry to the vertices of the given snap geometry.Geometry
snapToSelf(double snapTolerance, boolean cleanResult)
Snaps the vertices in the componentLineString
s of the source geometry to the vertices of the same geometry.static Geometry
snapToSelf(Geometry geom, double snapTolerance, boolean cleanResult)
Snaps a geometry to itself.
-
-
-
Constructor Detail
-
GeometrySnapper
public GeometrySnapper(Geometry srcGeom)
Creates a new snapper acting on the given geometry- Parameters:
srcGeom
- the geometry to snap
-
-
Method Detail
-
computeOverlaySnapTolerance
public static double computeOverlaySnapTolerance(Geometry g)
Estimates the snap tolerance for a Geometry, taking into account its precision model.- Parameters:
g
- a Geometry- Returns:
- the estimated snap tolerance
-
computeSizeBasedSnapTolerance
public static double computeSizeBasedSnapTolerance(Geometry g)
-
computeOverlaySnapTolerance
public static double computeOverlaySnapTolerance(Geometry g0, Geometry g1)
-
snap
public static Geometry[] snap(Geometry g0, Geometry g1, double snapTolerance)
Snaps two geometries together with a given tolerance.- Parameters:
g0
- a geometry to snapg1
- a geometry to snapsnapTolerance
- the tolerance to use- Returns:
- the snapped geometries
-
snapToSelf
public static Geometry snapToSelf(Geometry geom, double snapTolerance, boolean cleanResult)
Snaps a geometry to itself. Allows optionally cleaning the result to ensure it is topologically valid (which fixes issues such as topology collapses in polygonal inputs).Snapping a geometry to itself can remove artifacts such as very narrow slivers, gores and spikes.
- Parameters:
geom
- the geometry to snapsnapTolerance
- the snapping tolerancecleanResult
- whether the result should be made valid- Returns:
- a new snapped Geometry
-
snapTo
public Geometry snapTo(Geometry snapGeom, double snapTolerance)
Snaps the vertices in the componentLineString
s of the source geometry to the vertices of the given snap geometry.- Parameters:
snapGeom
- a geometry to snap the source to- Returns:
- a new snapped Geometry
-
snapToSelf
public Geometry snapToSelf(double snapTolerance, boolean cleanResult)
Snaps the vertices in the componentLineString
s of the source geometry to the vertices of the same geometry. Allows optionally cleaning the result to ensure it is topologically valid (which fixes issues such as topology collapses in polygonal inputs).- Parameters:
snapTolerance
- the snapping tolerancecleanResult
- whether the result should be made valid- Returns:
- a new snapped Geometry
-
-