Class BufferParameters
java.lang.Object
org.locationtech.jts.operation.buffer.BufferParameters
A value class containing the parameters which
specify how a buffer should be constructed.
The parameters allow control over:
- Quadrant segments (accuracy of approximation for circular arcs)
- End Cap style
- Join style
- Mitre limit
- whether the buffer is single-sided
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
Specifies a flat line buffer end cap style.static final int
Specifies a round line buffer end cap style.static final int
Specifies a square line buffer end cap style.static final double
The default mitre limit Allows fairly pointy mitres.static final int
The default number of facets into which to divide a fillet of 90 degrees.static final double
The default simplify factor Provides an accuracy of about 1%, which matches the accuracy of the default Quadrant Segments parameter.private int
private boolean
static final int
Specifies a bevel join style.static final int
Specifies a mitre join style.static final int
Specifies a round join style.private int
private double
private int
private double
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a default set of parametersBufferParameters
(int quadrantSegments) Creates a set of parameters with the given quadrantSegments value.BufferParameters
(int quadrantSegments, int endCapStyle) Creates a set of parameters with the given quadrantSegments and endCapStyle values.BufferParameters
(int quadrantSegments, int endCapStyle, int joinStyle, double mitreLimit) Creates a set of parameters with the given parameter values. -
Method Summary
Modifier and TypeMethodDescriptionstatic double
bufferDistanceError
(int quadSegs) Computes the maximum distance error due to a given level of approximation to a true arc.int
Gets the end cap style.int
Gets the join styledouble
Gets the mitre ratio limit.int
Gets the number of quadrant segments which will be useddouble
Gets the simplify factor.boolean
Tests whether the buffer is to be generated on a single side only.void
setEndCapStyle
(int endCapStyle) Specifies the end cap style of the generated buffer.void
setJoinStyle
(int joinStyle) Sets the join style for outside (reflex) corners between line segments.void
setMitreLimit
(double mitreLimit) Sets the limit on the mitre ratio used for very sharp corners.void
setQuadrantSegments
(int quadSegs) Sets the number of line segments used to approximate an angle fillet.void
setSimplifyFactor
(double simplifyFactor) Sets the factor used to determine the simplify distance tolerance for input simplification.void
setSingleSided
(boolean isSingleSided) Sets whether the computed buffer should be single-sided.
-
Field Details
-
CAP_ROUND
public static final int CAP_ROUNDSpecifies a round line buffer end cap style.- See Also:
-
CAP_FLAT
public static final int CAP_FLATSpecifies a flat line buffer end cap style.- See Also:
-
CAP_SQUARE
public static final int CAP_SQUARESpecifies a square line buffer end cap style.- See Also:
-
JOIN_ROUND
public static final int JOIN_ROUNDSpecifies a round join style.- See Also:
-
JOIN_MITRE
public static final int JOIN_MITRESpecifies a mitre join style.- See Also:
-
JOIN_BEVEL
public static final int JOIN_BEVELSpecifies a bevel join style.- See Also:
-
DEFAULT_QUADRANT_SEGMENTS
public static final int DEFAULT_QUADRANT_SEGMENTSThe default number of facets into which to divide a fillet of 90 degrees. A value of 8 gives less than 2% max error in the buffer distance. For a max error of < 1%, use QS = 12. For a max error of < 0.1%, use QS = 18.- See Also:
-
DEFAULT_MITRE_LIMIT
public static final double DEFAULT_MITRE_LIMITThe default mitre limit Allows fairly pointy mitres.- See Also:
-
DEFAULT_SIMPLIFY_FACTOR
public static final double DEFAULT_SIMPLIFY_FACTORThe default simplify factor Provides an accuracy of about 1%, which matches the accuracy of the default Quadrant Segments parameter.- See Also:
-
quadrantSegments
private int quadrantSegments -
endCapStyle
private int endCapStyle -
joinStyle
private int joinStyle -
mitreLimit
private double mitreLimit -
isSingleSided
private boolean isSingleSided -
simplifyFactor
private double simplifyFactor
-
-
Constructor Details
-
BufferParameters
public BufferParameters()Creates a default set of parameters -
BufferParameters
public BufferParameters(int quadrantSegments) Creates a set of parameters with the given quadrantSegments value.- Parameters:
quadrantSegments
- the number of quadrant segments to use
-
BufferParameters
public BufferParameters(int quadrantSegments, int endCapStyle) Creates a set of parameters with the given quadrantSegments and endCapStyle values.- Parameters:
quadrantSegments
- the number of quadrant segments to useendCapStyle
- the end cap style to use
-
BufferParameters
public BufferParameters(int quadrantSegments, int endCapStyle, int joinStyle, double mitreLimit) Creates a set of parameters with the given parameter values.- Parameters:
quadrantSegments
- the number of quadrant segments to useendCapStyle
- the end cap style to usejoinStyle
- the join style to usemitreLimit
- the mitre limit to use
-
-
Method Details
-
getQuadrantSegments
public int getQuadrantSegments()Gets the number of quadrant segments which will be used- Returns:
- the number of quadrant segments
-
setQuadrantSegments
public void setQuadrantSegments(int quadSegs) Sets the number of line segments used to approximate an angle fillet.- If quadSegs >= 1, joins are round, and quadSegs indicates the number of segments to use to approximate a quarter-circle.
- If quadSegs = 0, joins are bevelled (flat)
- If quadSegs < 0, joins are mitred, and the value of qs
indicates the mitre ration limit as
mitreLimit = |quadSegs|
- Parameters:
quadSegs
- the number of segments in a fillet for a quadrant
-
bufferDistanceError
public static double bufferDistanceError(int quadSegs) Computes the maximum distance error due to a given level of approximation to a true arc.- Parameters:
quadSegs
- the number of segments used to approximate a quarter-circle- Returns:
- the error of approximation
-
getEndCapStyle
public int getEndCapStyle()Gets the end cap style.- Returns:
- the end cap style
-
setEndCapStyle
public void setEndCapStyle(int endCapStyle) Specifies the end cap style of the generated buffer. The styles supported areCAP_ROUND
,CAP_FLAT
, andCAP_SQUARE
. The default is CAP_ROUND.- Parameters:
endCapStyle
- the end cap style to specify
-
getJoinStyle
public int getJoinStyle()Gets the join style- Returns:
- the join style code
-
setJoinStyle
public void setJoinStyle(int joinStyle) Sets the join style for outside (reflex) corners between line segments. Allowable values areJOIN_ROUND
(which is the default),JOIN_MITRE
and {link JOIN_BEVEL}.- Parameters:
joinStyle
- the code for the join style
-
getMitreLimit
public double getMitreLimit()Gets the mitre ratio limit.- Returns:
- the limit value
-
setMitreLimit
public void setMitreLimit(double mitreLimit) Sets the limit on the mitre ratio used for very sharp corners. The mitre ratio is the ratio of the distance from the corner to the end of the mitred offset corner. When two line segments meet at a sharp angle, a miter join will extend far beyond the original geometry. (and in the extreme case will be infinitely far.) To prevent unreasonable geometry, the mitre limit allows controlling the maximum length of the join corner. Corners with a ratio which exceed the limit will be beveled.- Parameters:
mitreLimit
- the mitre ratio limit
-
setSingleSided
public void setSingleSided(boolean isSingleSided) Sets whether the computed buffer should be single-sided. A single-sided buffer is constructed on only one side of each input line.The side used is determined by the sign of the buffer distance:
- a positive distance indicates the left-hand side
- a negative distance indicates the right-hand side
The End Cap Style for single-sided buffers is always ignored, and forced to the equivalent of CAP_FLAT.
- Parameters:
isSingleSided
- true if a single-sided buffer should be constructed
-
isSingleSided
public boolean isSingleSided()Tests whether the buffer is to be generated on a single side only.- Returns:
- true if the generated buffer is to be single-sided
-
getSimplifyFactor
public double getSimplifyFactor()Gets the simplify factor.- Returns:
- the simplify factor
-
setSimplifyFactor
public void setSimplifyFactor(double simplifyFactor) Sets the factor used to determine the simplify distance tolerance for input simplification. Simplifying can increase the performance of computing buffers. Generally the simplify factor should be greater than 0. Values between 0.01 and .1 produce relatively good accuracy for the generate buffer. Larger values sacrifice accuracy in return for performance.- Parameters:
simplifyFactor
- a value greater than or equal to zero.
-