Loading

ES|QL ST_BUFFER function

Embedded
geometry
Expression of type geo_point, geo_shape, cartesian_point or cartesian_shape. If null, the function returns null.
distance
Buffer distance in the units of the input spatial reference system
options

(Optional) ST_BUFFER additional options like quad_segs, endcap, join and mitre_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.

Negative distance shrinks a polygon

Buffering a point produces a circle

A point with positive distance becomes a polygon approximating a circle (8 segments per quadrant by default).

Buffering a point produces a circle

Default round end caps on a line

A line buffered with default options has rounded end caps (endcap=round).

Default round end caps on a line

Flat end caps on a line

Setting endcap=flat keeps the buffer flush with the line's endpoints.

Flat end caps on a line

Square end caps on a line

endcap=square extends the buffer past each endpoint by the buffer distance.

Square end caps on a line

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.

Mitre joins on a buffered corner