Class BufferOp

java.lang.Object
org.locationtech.jts.operation.buffer.BufferOp

public class BufferOp extends Object
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 of 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 are only approximations to the true geometry. The user can control the accuracy of the approximation by specifying the number of linear segments used to approximate arcs. This is specified via BufferParameters.setQuadrantSegments(int) or setQuadrantSegments(int).

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

The join style of the corners in a buffer may be specified. The following join styles are supported:

The buffer algorithm may perform simplification on the input to increase performance. The simplification is performed a way that always increases the buffer area (so that the simplified input covers the original input). The degree of simplification can be specified, with a default used otherwise. Note that if the buffer distance is zero then so is the computed simplify tolerance, no matter what the simplify factor.

Buffer results are always valid geometry. Given this, computing a zero-width buffer of an invalid polygonal geometry is an effective way to "validify" the geometry. Note however that in the case of self-intersecting "bow-tie" geometries, only the largest enclosed area will be retained.

Version:
1.7
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    static final int
    Deprecated.
    use BufferParameters
    static final int
    Deprecated.
    use BufferParameters
    static final int
    Deprecated.
    use BufferParameters
    static final int
    Deprecated.
    use BufferParameters
  • Constructor Summary

    Constructors
    Constructor
    Description
    Initializes a buffer computation for the given geometry
    Initializes a buffer computation for the given geometry with the given set of parameters
  • Method Summary

    Modifier and Type
    Method
    Description
    static Geometry
    bufferByZero(Geometry geom, boolean isBothOrientations)
    Buffers a geometry with distance zero.
    static Geometry
    bufferOp(Geometry g, double distance)
    Computes the buffer of a geometry for a given buffer distance.
    static Geometry
    bufferOp(Geometry g, double distance, int quadrantSegments)
    Computes the buffer for a geometry for a given buffer distance and accuracy of approximation.
    static Geometry
    bufferOp(Geometry g, double distance, int quadrantSegments, int endCapStyle)
    Computes the buffer for a geometry for a given buffer distance and accuracy of approximation.
    static Geometry
    bufferOp(Geometry g, double distance, BufferParameters params)
    Computes the buffer for a geometry for a given buffer distance and accuracy of approximation.
    getResultGeometry(double distance)
    Returns the buffer computed for a geometry for a given buffer distance.
    void
    setEndCapStyle(int endCapStyle)
    Specifies the end cap style of the generated buffer.
    void
    setQuadrantSegments(int quadrantSegments)
    Sets the number of line segments in a quarter-circle used to approximate angle fillets for round end caps and joins.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • CAP_ROUND

      public static final int CAP_ROUND
      Deprecated.
      use BufferParameters
      Specifies a round line buffer end cap style.
      See Also:
    • CAP_BUTT

      public static final int CAP_BUTT
      Deprecated.
      use BufferParameters
      Specifies a butt (or flat) line buffer end cap style.
      See Also:
    • CAP_FLAT

      public static final int CAP_FLAT
      Deprecated.
      use BufferParameters
      Specifies a butt (or flat) line buffer end cap style.
      See Also:
    • CAP_SQUARE

      public static final int CAP_SQUARE
      Deprecated.
      use BufferParameters
      Specifies a square line buffer end cap style.
      See Also:
  • Constructor Details

    • BufferOp

      public BufferOp(Geometry g)
      Initializes a buffer computation for the given geometry
      Parameters:
      g - the geometry to buffer
    • BufferOp

      public BufferOp(Geometry g, BufferParameters bufParams)
      Initializes a buffer computation for the given geometry with the given set of parameters
      Parameters:
      g - the geometry to buffer
      bufParams - the buffer parameters to use
  • Method Details

    • bufferOp

      public static Geometry bufferOp(Geometry g, double distance)
      Computes the buffer of a geometry for a given buffer distance.
      Parameters:
      g - the geometry to buffer
      distance - the buffer distance
      Returns:
      the buffer of the input geometry
    • bufferOp

      public static Geometry bufferOp(Geometry g, double distance, BufferParameters params)
      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
      params - the buffer parameters to use
      Returns:
      the buffer of the input geometry
    • bufferOp

      public static Geometry bufferOp(Geometry g, double distance, int quadrantSegments)
      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
      Returns:
      the buffer of the input geometry
    • bufferOp

      public static Geometry bufferOp(Geometry g, double distance, int quadrantSegments, int endCapStyle)
      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 - the end cap style to use
      Returns:
      the buffer of the input geometry
    • bufferByZero

      public static Geometry bufferByZero(Geometry geom, boolean isBothOrientations)
      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
    • setEndCapStyle

      public void setEndCapStyle(int endCapStyle)
      Specifies the end cap style of the generated buffer. The styles supported are BufferParameters.CAP_ROUND, BufferParameters.CAP_FLAT, and BufferParameters.CAP_SQUARE. The default is CAP_ROUND.
      Parameters:
      endCapStyle - the end cap style to specify
    • setQuadrantSegments

      public void setQuadrantSegments(int quadrantSegments)
      Sets the number of line segments in a quarter-circle used to approximate angle fillets for round end caps and joins.
      Parameters:
      quadrantSegments - the number of segments in a fillet for a quadrant
    • getResultGeometry

      public Geometry getResultGeometry(double distance)
      Returns the buffer computed for a geometry for a given buffer distance.
      Parameters:
      distance - the buffer distance
      Returns:
      the buffer of the input geometry