Classic ARC/INFO Commands in PostGIS: Multi-Ring Buffer
- artlembo
- 5 days ago
- 1 min read
As promised, I'm going to expand on the BUFFER example and talk about the Multi-Ring Buffer. I felt it was too much to go over in one blog post, so we'll cover it now.
The Esri help manual has a nice diagram for the buffer operation:

Returning to the set of points we've been using:

a multi-ring buffer would be as follows:
This one is a little tricky because we don't want the concentric circles to overlap one another. So, if we are buffering by 0.5, 1.0, and 1.5 then we have to issue those three distances separately, and sort of cut out the donut hole
Lines 1-2: This is simple to understand. We are just buffering the data by 0.5. And, we are creating a field called buffer_distance that will say '0 to 0.5'. Easy enough.
Lines 6-8: this is a little trick. We are buffering the next ring as 1.0. But, that will overlap the 0.5, right? So, we calculate the ST_Difference between our 1.0 buffer and the 0.5 buffer, which gives us the outside ring:

clever, right? Now, when we perform the UNION ALL in line 4 the inside circle will get placed in the donut hole shown below.
Lines 12-14: again, we perform the same trick, but this time we compute the ST_Difference between the 1.5 and 1.0 buffers. Then, when we UNION ALL that in, we have our concentric circles with the appropriate attributes assigned to them.



Comments