Skip to main content
Buffers a geometry at multiple distances in a single call and returns a GeometryCollection whose parts are ordered by ascending buffer distance. This is the multi-distance counterpart to ST_Buffer; each individual buffer is computed with the same semantics as ST_Buffer, so the optional useSpheroid flag and buffer-style parameters string behave identically. The second argument is an array of buffer distances (integers or doubles), supplied either as an array literal or as a column of array type. The concentric argument controls how the buffers are combined:
  • concentric = true (default): the parts are disjoint annular rings (“donuts”). The innermost part is the solid buffer at the smallest distance, and each outer part is the full buffer at that distance with the next-smaller buffer subtracted. Because buffering is monotonic (ST_Buffer(g, d1) is contained in ST_Buffer(g, d2) when d1 <= d2), the rings never overlap.
  • concentric = false: the parts are the overlapping full buffers at each distance, i.e. a stack of ST_Buffer results.
  • Negative values are supported. Fully decimated negative buffers return empty geometries.
Distances are sorted ascending and de-duplicated before processing, so the resulting parts correspond one-to-one with the distinct distances from innermost to outermost regardless of the order they were supplied in. The SRID of the input geometry is preserved on the result.
A null input geometry returns null. An empty or null distances array returns an empty GeometryCollection.

Signatures

Parameters

Geometry
required
The input geometry.
Array<Double>
required
The buffer distances. Sorted ascending and de-duplicated before processing.
Boolean
true (default) for disjoint annular rings; false for overlapping full buffers.
Boolean
Whether to use spheroidal distance calculation, as in ST_Buffer. When true, distances are interpreted as meters.
String
The buffer style parameters value, as in ST_Buffer (e.g. quad_segs=8 endcap=round).

Return type

A GeometryCollection of buffer rings ordered by ascending distance.

Examples

Concentric rings (default) — three disjoint annuli ordered from innermost to outermost:
Output:
Overlapping full buffers via concentric = false:
Passing with concentric, useSpheroid, the ST_Buffer buffer style string: