ES|QL ST_BUFFER function
geometry- Expression of type
geo_point,geo_shape,cartesian_pointorcartesian_shape. Ifnull, the function returnsnull. distance- Buffer distance in the units of the input spatial reference system
options-
(Optional) ST_BUFFER additional options like
quad_segs,endcap,joinandmitre_limit.
Computes a buffer area around the input geometry at the specified distance. The distance is in the units of the input spatial reference system. Positive distances expand the geometry, negative distances shrink it. A distance of zero will return the input geometry unchanged. Points and lines become polygons when buffered, unless a zero distance is provided.
| geometry | distance | options | result |
|---|---|---|---|
| cartesian_point | double | cartesian_shape | |
| cartesian_point | float | cartesian_shape | |
| cartesian_point | integer | cartesian_shape | |
| cartesian_point | long | cartesian_shape | |
| cartesian_shape | double | cartesian_shape | |
| cartesian_shape | float | cartesian_shape | |
| cartesian_shape | integer | cartesian_shape | |
| cartesian_shape | long | cartesian_shape | |
| geo_point | double | geo_shape | |
| geo_point | float | geo_shape | |
| geo_point | integer | geo_shape | |
| geo_point | long | geo_shape | |
| geo_shape | double | geo_shape | |
| geo_shape | float | geo_shape | |
| geo_shape | integer | geo_shape | |
| geo_shape | long | geo_shape |
quad_segs- (integer) Number of line segments used to approximate a quarter circle. Defaults to 8.
endcap- (keyword) End cap style for buffering linear geometries. Defaults to round.
join- (keyword) Join style for buffering. Defaults to round.
mitre_limit-
(double) Mitre ratio limit, only meaningful when join=mitre. Defaults to 5.0.
ROW wkt = "POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0))"
| EVAL buffered = ST_BUFFER(TO_GEOSHAPE(wkt), -1)
| wkt:keyword | buffered:geo_shape |
|---|---|
| POLYGON ((0 0, 4 0, 4 4, 0 4, 0 0)) | POLYGON ((1.0 1.0, 1.0 3.0, 3.0 3.0, 3.0 1.0, 1.0 1.0)) |
The optional options argument can configure end caps and join styles. Combining endcap=flat with join=mitre produces sharp corners on a buffered L-shape:
ROW geom = TO_CARTESIANSHAPE("LINESTRING(0 0, 10 0, 10 10)")
| EVAL buffered = ST_BUFFER(geom, 2, {"endcap": "flat", "join": "mitre"})
| KEEP buffered
| buffered:cartesian_shape |
|---|
| POLYGON ((8.0 2.0, 8.0 10.0, 12.0 10.0, 12.0 -2.0, 0.0 -2.0, 0.0 2.0, 8.0 2.0)) |
Negative distance shrinks a polygon
Buffering a 10x10 square by -2 produces a smaller square inset by 2 units on each side.
Buffering a point produces a circle
A point with positive distance becomes a polygon approximating a circle (8 segments per quadrant by default).
Default round end caps on a line
A line buffered with default options has rounded end caps (endcap=round).
Flat end caps on a line
Setting endcap=flat keeps the buffer flush with the line's endpoints.
Square end caps on a line
endcap=square extends the buffer past each endpoint by the buffer distance.
Mitre joins on a buffered corner
join=mitre produces sharp corners. Combined with endcap=flat you get a clean rectangle for a buffered L-shape.