Class BufferOp
- java.lang.Object
-
- org.locationtech.jts.operation.buffer.BufferOp
-
public class BufferOp extends java.lang.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)
orsetQuadrantSegments(int)
.The end cap style of a linear buffer may be
specified
. The following end cap styles are supported:BufferParameters.CAP_ROUND
- the usual round end capsBufferParameters.CAP_FLAT
- end caps are truncated flat at the line endsBufferParameters.CAP_SQUARE
- end caps are squared off at the buffer distance beyond the line ends
The join style of the corners in a buffer may be
specified
. The following join styles are supported:BufferParameters.JOIN_ROUND
- the usual round joinBufferParameters.JOIN_MITRE
- corners are "sharp" (up to adistance limit
)BufferParameters.JOIN_BEVEL
- corners are beveled (clipped off).
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 adefault
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 int
CAP_BUTT
Deprecated.use BufferParametersstatic int
CAP_FLAT
Deprecated.use BufferParametersstatic int
CAP_ROUND
Deprecated.use BufferParametersstatic int
CAP_SQUARE
Deprecated.use BufferParameters
-
Constructor Summary
Constructors Constructor Description BufferOp(Geometry g)
Initializes a buffer computation for the given geometryBufferOp(Geometry g, BufferParameters bufParams)
Initializes a buffer computation for the given geometry with the given set of parameters
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods 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.Geometry
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.
-
-
-
Field Detail
-
CAP_ROUND
public static final int CAP_ROUND
Deprecated.use BufferParametersSpecifies a round line buffer end cap style.- See Also:
- Constant Field Values
-
CAP_BUTT
public static final int CAP_BUTT
Deprecated.use BufferParametersSpecifies a butt (or flat) line buffer end cap style.- See Also:
- Constant Field Values
-
CAP_FLAT
public static final int CAP_FLAT
Deprecated.use BufferParametersSpecifies a butt (or flat) line buffer end cap style.- See Also:
- Constant Field Values
-
CAP_SQUARE
public static final int CAP_SQUARE
Deprecated.use BufferParametersSpecifies a square line buffer end cap style.- See Also:
- Constant Field Values
-
-
Constructor Detail
-
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 bufferbufParams
- the buffer parameters to use
-
-
Method Detail
-
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 bufferdistance
- 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 bufferdistance
- the buffer distanceparams
- 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 bufferdistance
- the buffer distancequadrantSegments
- 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 bufferdistance
- the buffer distancequadrantSegments
- the number of segments used to approximate a quarter circleendCapStyle
- 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 zeroisBothOrientations
- 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 areBufferParameters.CAP_ROUND
,BufferParameters.CAP_FLAT
, andBufferParameters.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
-
-