Class OffsetCurveBuilder
- java.lang.Object
-
- org.locationtech.jts.operation.buffer.OffsetCurveBuilder
-
public class OffsetCurveBuilder extends java.lang.Object
Computes the raw offset curve for a singleGeometry
component (ring, line or point). A raw offset curve line is not noded - it may contain self-intersections (and usually will). The final buffer polygon is computed by forming a topological graph of all the noded raw curves and tracing outside contours. The points in the raw curve are rounded to a givenPrecisionModel
.- Version:
- 1.7
-
-
Field Summary
Fields Modifier and Type Field Description private BufferParameters
bufParams
private double
distance
private PrecisionModel
precisionModel
-
Constructor Summary
Constructors Constructor Description OffsetCurveBuilder(PrecisionModel precisionModel, BufferParameters bufParams)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
computeLineBufferCurve(Coordinate[] inputPts, OffsetSegmentGenerator segGen)
private void
computeOffsetCurve(Coordinate[] inputPts, boolean isRightSide, OffsetSegmentGenerator segGen)
private void
computePointCurve(Coordinate pt, OffsetSegmentGenerator segGen)
private void
computeRingBufferCurve(Coordinate[] inputPts, int side, OffsetSegmentGenerator segGen)
private void
computeSingleSidedBufferCurve(Coordinate[] inputPts, boolean isRightSide, OffsetSegmentGenerator segGen)
private static Coordinate[]
copyCoordinates(Coordinate[] pts)
BufferParameters
getBufferParameters()
Gets the buffer parameters being used to generate the curve.Coordinate[]
getLineCurve(Coordinate[] inputPts, double distance)
This method handles single points as well as LineStrings.Coordinate[]
getOffsetCurve(Coordinate[] inputPts, double distance)
Coordinate[]
getRingCurve(Coordinate[] inputPts, int side, double distance)
This method handles the degenerate cases of single points and lines, as well as rings.private OffsetSegmentGenerator
getSegGen(double distance)
private double
simplifyTolerance(double bufDistance)
Computes the distance tolerance to use during input line simplification.
-
-
-
Field Detail
-
distance
private double distance
-
precisionModel
private PrecisionModel precisionModel
-
bufParams
private BufferParameters bufParams
-
-
Constructor Detail
-
OffsetCurveBuilder
public OffsetCurveBuilder(PrecisionModel precisionModel, BufferParameters bufParams)
-
-
Method Detail
-
getBufferParameters
public BufferParameters getBufferParameters()
Gets the buffer parameters being used to generate the curve.- Returns:
- the buffer parameters being used
-
getLineCurve
public Coordinate[] getLineCurve(Coordinate[] inputPts, double distance)
This method handles single points as well as LineStrings. LineStrings are assumed not to be closed (the function will not fail for closed lines, but will generate superfluous line caps).- Parameters:
inputPts
- the vertices of the line to offsetdistance
- the offset distance- Returns:
- a Coordinate array representing the curve or null if the curve is empty
-
getRingCurve
public Coordinate[] getRingCurve(Coordinate[] inputPts, int side, double distance)
This method handles the degenerate cases of single points and lines, as well as rings.- Returns:
- a Coordinate array representing the curve or null if the curve is empty
-
getOffsetCurve
public Coordinate[] getOffsetCurve(Coordinate[] inputPts, double distance)
-
copyCoordinates
private static Coordinate[] copyCoordinates(Coordinate[] pts)
-
getSegGen
private OffsetSegmentGenerator getSegGen(double distance)
-
simplifyTolerance
private double simplifyTolerance(double bufDistance)
Computes the distance tolerance to use during input line simplification.- Parameters:
distance
- the buffer distance- Returns:
- the simplification tolerance
-
computePointCurve
private void computePointCurve(Coordinate pt, OffsetSegmentGenerator segGen)
-
computeLineBufferCurve
private void computeLineBufferCurve(Coordinate[] inputPts, OffsetSegmentGenerator segGen)
-
computeSingleSidedBufferCurve
private void computeSingleSidedBufferCurve(Coordinate[] inputPts, boolean isRightSide, OffsetSegmentGenerator segGen)
-
computeOffsetCurve
private void computeOffsetCurve(Coordinate[] inputPts, boolean isRightSide, OffsetSegmentGenerator segGen)
-
computeRingBufferCurve
private void computeRingBufferCurve(Coordinate[] inputPts, int side, OffsetSegmentGenerator segGen)
-
-