Dear Community,
I am trying to use the Multiple Ring Buffer tool to create a set of non-overlapping buffers (e.g., 100 m, 200 m, 300 m, 400 m) around 50 polygons, which are different sites. I am running into a few challenges:
To sum up, I am trying to generate a series of non-overlapping buffers (rings) around multiple sites. Then, I need to know which buffer is associated with each site, so I would ideally have an attribute in the buffer shapefile that corresponds to the site id.
I would be grateful for any suggestions on how to achieve this!
Might try using the multi-ring buffer tool in a ModelBuilder model with an Iterator.
Use Inline Variable Substitution so each of the output feature classes (one for each of the sets of buffers) has a unique name.
Append the feature classes together.
https://pro.arcgis.com/en/pro-app/latest/tool-reference/data-management/append.htm
You could set up a model to use the ordinary buffer tool. Buffer the input polygons once. Then buffer the resulting features, and then buffer the next set of resulting features. Then, append two of the result feature classes into the other one.
Seems like it works.
For this part "Then, I need to know which buffer is associated with each site" maybe try: the buffer, since it's a circle, its centroid should be pretty close to the site centroid. So, with those centroids you can do a nearest spatial join to get the site id to know which buffer goes with which site. I am sure there might be a better straight froward way to do this.
For the sites that are completely within its buffer with no other site overlapping that buffer, you may try a completely within spatial join
I think you have a simple option of a spatial join to the original points with 'Have their Center in'. the Centroid of any buffer ring will have a centroid coincident with the site.
Multiring buffer should include data with the original feature. Unfortunately, as you have found out, that doesn't work if the Donut option is chosen. Here's a relevant Idea: Analysis Tools: Multiple Ring Buffer: Don't dissol... - Esri Community
To Ed's point, it turns out the centroids of each buffer are different, which is super frustrating.
So, here's a toolbox with two tools to fix that.
They turn the disc output of multiring into donuts without sacrificing the attributes.
| |
Before | After |
One tool (Punch out buffers) works after you've made the buffers, while Clean Donuts buffers the input feature and gets the nice donut result all in one go.
I've only lightly tested these, so your mileage may vary, but it's worked for me so far.
I'll be sharing this toolbox to that Idea as well.
I don't know why either, but here's the proof:
When I was figuring out the code, my initial thought was to go by centroid.
Note that the buffers and the original point are in this coordinate system.
Original point at the bottom, with the other three buffer centroids above.
You also get different stuff if you check arcpy geometry.
So, anyway. They do not have the same centers, which means that if you try to match centroids, you won't get any results.
My solution was to check the ORIG_FID field and work with that. You can check my code to see how I did it.
Full disclosure, I have a hard time with coordinate systems and stuff, so that may be another wrinkle to this, but I tried to keep everything consistent while testing this.
Also, to be fair. That initial test I just showed was buffered geodesic. Buffering planar (again, keeping spatial references consistent) gives a much tighter spread, but a spread regardless.
I've done the same using a 'normal' coordinate system and all the Centroids are the same as I'd expect. Calculate Geometry Attributes and Spatial Join 'Have their Centre in' work as expected.
I think this may be Aerial distortions from using WMAS coordinate system. I would guess that if you did the same experiment in the Southern Hemisphere that you would see the opposite drift of Centroids.
Or it's some difference in versions causing the default to be 'inside' which seems a bit unwanted to me.