geos::operation::buffer::BufferOp Class Reference

Computes the buffer of a geometry, for both positive and negative buffer distances. More...

`#include <BufferOp.h>`

## Public Types

enum | { CAP_ROUND = BufferParameters::CAP_ROUND , CAP_BUTT = BufferParameters::CAP_FLAT , CAP_SQUARE = BufferParameters::CAP_SQUARE }

## Public Member Functions

| BufferOp (const geom::Geometry *g)
| Initializes a buffer computation for the given geometry.
| BufferOp (const geom::Geometry *g, const BufferParameters &params)
| Initializes a buffer computation for the given geometry with the given set of parameters.
void | setEndCapStyle (int nEndCapStyle)
| Specifies the end cap style of the generated buffer.
void | setQuadrantSegments (int nQuadrantSegments)
| Sets the number of segments used to approximate a angle fillet.
void | setSingleSided (bool isSingleSided)
| Sets whether the computed buffer should be single-sided.
std::unique_ptr< geom::Geometry > | getResultGeometry (double nDistance)
| Returns the buffer computed for a geometry for a given buffer distance.

## Static Public Member Functions

static std::unique_ptr< geom::Geometry > | bufferOp (const geom::Geometry *g, double distance, int quadrantSegments=BufferParameters::DEFAULT_QUADRANT_SEGMENTS, int endCapStyle=BufferParameters::CAP_ROUND)
| Computes the buffer for a geometry for a given buffer distance and accuracy of approximation.
static std::unique_ptr< geom::Geometry > | bufferOp (const geom::Geometry *g, double distance, BufferParameters &bufParms)
static std::unique_ptr< geom::Geometry > | bufferByZero (const geom::Geometry *geom, bool isBothOrientations)

## Detailed Description

Computes the buffer of a geometry, for both positive and negative buffer distances.

In GIS, the positive (or negative) buffer of a geometry is defined as the Minkowski sum (or difference) of the geometry with a circle with radius equal to the absolute value of the buffer distance. In the CAD/CAM world buffers are known as offset curves. In morphological analysis the operation of positive and negative buffering is referred to as erosion and dilation.

The buffer operation always returns a polygonal result. The negative or zero-distance buffer of lines and points is always an empty Polygon.

Since true buffer curves may contain circular arcs, computed buffer polygons can only be approximations to the true geometry. The user can control the accuracy of the curve approximation by specifying the number of linear segments with which to approximate a curve.

The end cap style of a linear buffer may be specified. The following end cap styles are supported:

- CAP_ROUND - the usual round end caps
- CAP_BUTT - end caps are truncated flat at the line ends
- CAP_SQUARE - end caps are squared off at the buffer distance beyond the line ends

## Member Enumeration Documentation

## anonymous enum

anonymous enum

Enumerator

CAP_ROUND

Specifies a round line buffer end cap style.

Deprecated
  use BufferParameters

CAP_BUTT

Specifies a butt (or flat) line buffer end cap style.

Deprecated
  use BufferParameters

CAP_SQUARE

Specifies a square line buffer end cap style.

Deprecated
  use BufferParameters

## Constructor & Destructor Documentation

## BufferOp() [1/2]

geos::operation::buffer::BufferOp::BufferOp | ( | const geom::Geometry * | g | ) |

inline

Initializes a buffer computation for the given geometry.

Parameters

  g | the geometry to buffer

## BufferOp() [2/2]

geos::operation::buffer::BufferOp::BufferOp | ( | const geom::Geometry * | g,
|  | const BufferParameters & | params )

inline

Initializes a buffer computation for the given geometry with the given set of parameters.

Parameters

  g | the geometry to buffer
  params | the buffer parameters to use. This class will copy it to private memory.

## Member Function Documentation

## bufferByZero()

std::unique_ptr< geom::Geometry > geos::operation::buffer::BufferOp::bufferByZero | ( | const geom::Geometry * | geom,
|  | bool | isBothOrientations )

static

Buffers a geometry with distance zero. The result can be computed using the maximum-signed-area orientation, or by combining both orientations.

This can be used to fix an invalid polygonal geometry to be valid (i.e. with no self-intersections). For some uses (e.g. fixing the result of a simplification) a better result is produced by using only the max-area orientation. Other uses (e.g. fixing geometry) require both orientations to be used.

This function is for INTERNAL use only.

Parameters

  geom | the polygonal geometry to buffer by zero
  isBothOrientations | true if both orientations of input rings should be used

Returns
  the buffered polygonal geometry

## bufferOp()

std::unique_ptr< geom::Geometry > geos::operation::buffer::BufferOp::bufferOp | ( | const geom::Geometry * | g,
|  | double | distance,
|  | int | quadrantSegments = BufferParameters::DEFAULT_QUADRANT_SEGMENTS,
|  | int | endCapStyle = BufferParameters::CAP_ROUND )

static

Computes the buffer for a geometry for a given buffer distance and accuracy of approximation.

Parameters

  g | the geometry to buffer
  distance | the buffer distance
  quadrantSegments | the number of segments used to approximate a quarter circle
  endCapStyle | line buffer end cap style (default: BufferParameters::CAP_ROUND)

Returns
  the buffer of the input geometry

References bufferOp(), geos::operation::buffer::BufferParameters::CAP_ROUND, and geos::operation::buffer::BufferParameters::DEFAULT_QUADRANT_SEGMENTS.

Referenced by bufferOp().

## getResultGeometry()

std::unique_ptr< geom::Geometry > geos::operation::buffer::BufferOp::getResultGeometry | ( | double | nDistance | ) |

Returns the buffer computed for a geometry for a given buffer distance.

Parameters

  nDistance | the buffer distance

Returns
  the buffer of the input geometry

## setEndCapStyle()

void geos::operation::buffer::BufferOp::setEndCapStyle | ( | int | nEndCapStyle | ) |

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

  nEndCapStyle | the end cap style to specify

## setQuadrantSegments()

void geos::operation::buffer::BufferOp::setQuadrantSegments | ( | int | nQuadrantSegments | ) |

inline

Sets the number of segments used to approximate a angle fillet.

Parameters

  nQuadrantSegments | the number of segments in a fillet for a quadrant

## setSingleSided()

void geos::operation::buffer::BufferOp::setSingleSided | ( | bool | 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

  isSingleSided | true if a single-sided buffer should be constructed

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

- BufferOp.h