GEOS  3.14.0dev
Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
geos::operation::buffer::BufferParameters Class Reference

Contains the parameters which describe how a buffer should be constructed. More...

#include <BufferParameters.h>

Public Types

enum  EndCapStyle { CAP_ROUND = 1 , CAP_FLAT = 2 , CAP_SQUARE = 3 }
 End cap styles. More...
 
enum  JoinStyle { JOIN_ROUND = 1 , JOIN_MITRE = 2 , JOIN_BEVEL = 3 }
 Join styles. More...
 

Public Member Functions

 BufferParameters ()
 Creates a default set of parameters.
 
 BufferParameters (int quadrantSegments)
 
 BufferParameters (int quadrantSegments, EndCapStyle endCapStyle)
 Creates a set of parameters with the given quadrantSegments and endCapStyle values. More...
 
 BufferParameters (int quadrantSegments, EndCapStyle endCapStyle, JoinStyle joinStyle, double mitreLimit)
 Creates a set of parameters with the given parameter values. More...
 
int getQuadrantSegments () const
 
void setQuadrantSegments (int quadSegs)
 Sets the number of line segments used to approximate an angle fillet. More...
 
EndCapStyle getEndCapStyle () const
 
void setEndCapStyle (EndCapStyle style)
 
JoinStyle getJoinStyle () const
 
void setJoinStyle (JoinStyle style)
 Sets the join style for outside (reflex) corners between line segments. More...
 
double getMitreLimit () const
 
void setMitreLimit (double limit)
 
void setSingleSided (bool p_isSingleSided)
 
bool isSingleSided () const
 

Static Public Member Functions

static double bufferDistanceError (int quadSegs)
 Computes the maximum distance error due to a given level of approximation to a true arc. More...
 

Static Public Attributes

static const int DEFAULT_QUADRANT_SEGMENTS = 8
 The default number of facets into which to divide a fillet of 90 degrees. More...
 
static const double DEFAULT_MITRE_LIMIT
 

Detailed Description

Contains the parameters which describe how a buffer should be constructed.

Member Enumeration Documentation

◆ EndCapStyle

End cap styles.

Enumerator
CAP_ROUND 

Specifies a round line buffer end cap style.

CAP_FLAT 

Specifies a flat line buffer end cap style.

CAP_SQUARE 

Specifies a square line buffer end cap style.

◆ JoinStyle

Join styles.

Enumerator
JOIN_ROUND 

Specifies a round join style.

JOIN_MITRE 

Specifies a mitre join style.

JOIN_BEVEL 

Specifies a bevel join style.

Constructor & Destructor Documentation

◆ BufferParameters() [1/3]

geos::operation::buffer::BufferParameters::BufferParameters ( int  quadrantSegments)

Creates a set of parameters with the given quadrantSegments value.

Parameters
quadrantSegmentsthe number of quadrant segments to use

◆ BufferParameters() [2/3]

geos::operation::buffer::BufferParameters::BufferParameters ( int  quadrantSegments,
EndCapStyle  endCapStyle 
)

Creates a set of parameters with the given quadrantSegments and endCapStyle values.

Parameters
quadrantSegmentsthe number of quadrant segments to use
endCapStylethe end cap style to use

◆ BufferParameters() [3/3]

geos::operation::buffer::BufferParameters::BufferParameters ( int  quadrantSegments,
EndCapStyle  endCapStyle,
JoinStyle  joinStyle,
double  mitreLimit 
)

Creates a set of parameters with the given parameter values.

Parameters
quadrantSegmentsthe number of quadrant segments to use
endCapStylethe end cap style to use
joinStylethe join style to use
mitreLimitthe mitre limit to use

Member Function Documentation

◆ bufferDistanceError()

static double geos::operation::buffer::BufferParameters::bufferDistanceError ( int  quadSegs)
static

Computes the maximum distance error due to a given level of approximation to a true arc.

Parameters
quadSegsthe number of segments used to approximate a quarter-circle
Returns
the error of approximation

◆ getEndCapStyle()

EndCapStyle geos::operation::buffer::BufferParameters::getEndCapStyle ( ) const
inline

Gets the end cap style.

Returns
the end cap style

◆ getJoinStyle()

JoinStyle geos::operation::buffer::BufferParameters::getJoinStyle ( ) const
inline

Gets the join style.

Returns
the join style

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve().

◆ getMitreLimit()

double geos::operation::buffer::BufferParameters::getMitreLimit ( ) const
inline

Gets the mitre ratio limit.

Returns
the limit value

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve().

◆ getQuadrantSegments()

int geos::operation::buffer::BufferParameters::getQuadrantSegments ( ) const
inline

Gets the number of quadrant segments which will be used

Returns
the number of quadrant segments

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve().

◆ isSingleSided()

bool geos::operation::buffer::BufferParameters::isSingleSided ( ) const
inline

Tests whether the buffer is to be generated on a single side only.

Returns
true if the generated buffer is to be single-sided

◆ setEndCapStyle()

void geos::operation::buffer::BufferParameters::setEndCapStyle ( EndCapStyle  style)
inline

Specifies the end cap style of the generated buffer.

The styles supported are CAP_ROUND, CAP_BUTT, and CAP_SQUARE.

The default is CAP_ROUND.

Parameters
stylethe end cap style to specify

Referenced by geos::operation::buffer::BufferOp::setEndCapStyle().

◆ setJoinStyle()

void geos::operation::buffer::BufferParameters::setJoinStyle ( JoinStyle  style)
inline

Sets the join style for outside (reflex) corners between line segments.

Allowable values are JOIN_ROUND (which is the default), JOIN_MITRE and JOIN_BEVEL.

Parameters
stylethe code for the join style

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve().

◆ setMitreLimit()

void geos::operation::buffer::BufferParameters::setMitreLimit ( double  limit)
inline

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
limitthe mitre ratio limit

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve().

◆ setQuadrantSegments()

void geos::operation::buffer::BufferParameters::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|
       

For round joins, quadSegs determines the maximum error in the approximation to the true buffer curve.

The default 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. The error is always less than the buffer distance (in other words, the computed buffer curve is always inside the true curve).

Parameters
quadSegsthe number of segments in a fillet for a quadrant

Referenced by geos::operation::buffer::OffsetCurve::OffsetCurve(), and geos::operation::buffer::BufferOp::setQuadrantSegments().

◆ setSingleSided()

void geos::operation::buffer::BufferParameters::setSingleSided ( bool  p_isSingleSided)
inline

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 single-sided buffer of point geometries is the same as the regular buffer.

The End Cap Style for single-sided buffers is always ignored, and forced to the equivalent of CAP_FLAT.

Parameters
p_isSingleSidedtrue if a single-sided buffer should be constructed

Referenced by geos::operation::buffer::BufferOp::setSingleSided().

Member Data Documentation

◆ DEFAULT_MITRE_LIMIT

const double geos::operation::buffer::BufferParameters::DEFAULT_MITRE_LIMIT
static

The default mitre limit

Allows fairly pointy mitres.

◆ DEFAULT_QUADRANT_SEGMENTS

const int geos::operation::buffer::BufferParameters::DEFAULT_QUADRANT_SEGMENTS = 8
static

The 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.


The documentation for this class was generated from the following file: