public class GeometrySnapper extends Object
Geometry
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.
Constructor and Description |
---|
GeometrySnapper(Geometry srcGeom)
Creates a new snapper acting on the given geometry
|
Modifier and Type | Method and 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 component
LineString s
of the source geometry
to the vertices of the given snap geometry. |
Geometry |
snapToSelf(double snapTolerance,
boolean cleanResult)
Snaps the vertices in the component
LineString 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.
|
public GeometrySnapper(Geometry srcGeom)
srcGeom
- the geometry to snappublic static double computeOverlaySnapTolerance(Geometry g)
g
- a Geometrypublic static double computeSizeBasedSnapTolerance(Geometry g)
public static double computeOverlaySnapTolerance(Geometry g0, Geometry g1)
public static Geometry[] snap(Geometry g0, Geometry g1, double snapTolerance)
g0
- a geometry to snapg1
- a geometry to snapsnapTolerance
- the tolerance to usepublic static Geometry snapToSelf(Geometry geom, double snapTolerance, boolean cleanResult)
Snapping a geometry to itself can remove artifacts such as very narrow slivers, gores and spikes.
geom
- the geometry to snapsnapTolerance
- the snapping tolerancecleanResult
- whether the result should be made validpublic Geometry snapTo(Geometry snapGeom, double snapTolerance)
LineString
s
of the source geometry
to the vertices of the given snap geometry.snapGeom
- a geometry to snap the source topublic Geometry snapToSelf(double snapTolerance, boolean cleanResult)
LineString
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).snapTolerance
- the snapping tolerancecleanResult
- whether the result should be made validCopyright © 2020. All rights reserved.