Generate multiple concentric buffer rings at user-defined dynamic distances around any vector features.
500,1000,2000,5000.| Parameter | Description |
|---|---|
| Input layer | Any vector layer with point, line, or polygon geometries. |
| Distances | Comma-separated positive numbers. Example: 500,1000,2000 |
| Distance field | Optional. Select a numeric field to read distances dynamically from the attribute table. Overrides manual distances. |
| Distance unit | Meters, Kilometers, Miles, Feet, or Nautical Miles. |
| Ring type | Rings — non-overlapping donuts. Discs — cumulative overlapping buffers. |
| Dissolve | Merge all features sharing the same distance band into one multipart feature. |
| Segments | Segments per quarter-circle. Higher = smoother curves, slower processing. |
| End cap style | Round, Flat, or Square end caps (relevant for line inputs). |
Each ring represents only the area between consecutive distance thresholds. Ring 1 covers 0–500 m, Ring 2 covers 500–1000 m, and so on. No geometry overlap.
Each disc is a full buffer from the source feature. Disc 1 covers 0–500 m, Disc 2 covers 0–1000 m. Geometries overlap.
| Field | Type | Description |
|---|---|---|
ring_id | Integer | Sequential ring number (1 = innermost). |
source_fid | Long | Feature ID of the original input feature. -1 when dissolved. |
dist_inner | Double | Inner boundary distance. |
dist_outer | Double | Outer boundary distance. |
distance | Double | Nominal buffer distance for this ring. |
import processing
result = processing.run('dynamicdistancebuffer:dynamicdistancebuffer', {
'INPUT': 'path/to/layer.gpkg',
'DISTANCES': '500,1000,2000,5000',
'DISTANCE_UNIT': 0,
'RING_TYPE': 0,
'DISSOLVE': True,
'SEGMENTS': 36,
'OUTPUT': 'memory:'
})