Buffering points bounded within polygons

I'm using arcGIS 10.1 on an i5 win7 machine with 16g RAM. Not a xeon but have never had big problems even with large datasets.

Here's what I'm doing: I have point data representing locations within specified political boundaries. They represent the centroids of districts contained within larger geographic units which are 1) not uniform in size or 2) shape.

My goal is to create a buffer around these points, but to do so such that the larger boundaries act as the minimum bounding geography. So the radius of the buffer would not exceed the closest point of the border of the larger geography. This would give me buffers which were totally contained in the larger geography and would vary with the size of the larger bounding geography. I've looked at min. bounding geography features, and this seems to do something different--i.e. it would create a larger buffer around the larger geography.

To answerers: The issue with this is that it will give me an irregular shape--what I'm really trying to get here is to preserve the circle shape, but to make sure that it doesn't exceed any point of the larger bounding geography. Clipping would give me 'pac man' kind of shapes that are not ideal. As to more than 1 step--Oh of course! I'd take a dozen steps if I can get to the solution. And welcome more cumbersome but technically simple approaches.

• Does this need to be a one-step solution, or can you buffer then clip to the larger boundaries? – Erica Sep 17 '14 at 17:22
• Yes, that's exactly what I was going to suggest, though it could be coded without an intermediate product (for each point, locate containing polygon, buffer point, clip to container, and write) in ArcObjects or Python. – Vince Sep 17 '14 at 17:31
• @Erica, I don't think that's what the OP is after: "So the radius of the buffer would not exceed the closest point of the border of the larger geography". So you'd need to find out how close each point is to the boundary, and use that distance as the buffer distance for that point. – Dan C Sep 17 '14 at 17:43
• Good catch @DanC – Erica Sep 17 '14 at 18:12

so you need different sizes of buffers depending on the position within the polygon in order not to have buffer that go out of your boundaries.

I suggest that you fix the size of your buffer based on the closest edge position in the polygon, therefore you make sure it does not go out.

1) convert polygons to lines

2) use spatial join to get the closest feature and the distance to this feature

3) create buffer based on the distance to the closest line

• Thanks--if I do this I can then import the information into the attribute table and do a variable buffer. I can also try the answer below which seems similar. Thanks! Very much appreciated as always. – user37133 Sep 17 '14 at 17:58
• spatial join will create a new feature class with a distance field to the closest point on the closest geometry, so you don't need to code anything. – radouxju Sep 17 '14 at 17:59

Finding the smallest circle which fits within a shape is a computationally demanding task. It's also not something you're going to implement without some coding.

Your task is simplified by the known starting point, which makes a multi-pass approach possible:

• Locate the closest point in each bounding polygon for each centroid
• Calculate the distances between the edges and the centroids
• Use those distances (or 99.5% of them) as the buffer distance for the circle feature class output of a buffer by column value

Scripting would make this easier, but if it's a one-shot deal, then you could probably get by without Python.

ET GeoWizards (http://www.ian-ko.com/) has a tool (with a restriction of 100 features in the layer to be processed in the free version, if you have more object than that you have to buy a licence or divide your data) that may perform something close to what you want