buffer distance

8028
12
06-07-2016 01:50 PM
DavidStockdale
Occasional Contributor

Is there an easy way to determine for an irregularly shaped polygon, what the buffer distance would need to be to create a buffered polygon of a specified size? For example I have a polygon of 500 acres, and I need to create a polygon of 10% greater area, i.e. 550 acres. Is there a way to calculate what the buffer size would need to be in such a  case?

0 Kudos
12 Replies
RichardFairhurst
MVP Honored Contributor

There is no simple formula unless you are dealing with a circle or only the simplest of polygon shapes.  One post I found ([R-sig-Geo] How to buffer a polygon by area) suggests it can be done in several buffer iterations if you allow for some level of tolerance for some imprecision in the percentage.

Another approximate method that may work is based on a ratio of the area to the perimeter length and is shown in Creating polygons as % of original area using ArcGIS Desktop? - Geographic Information Systems Stack...

DavidStockdale
Occasional Contributor

Thanks gentlemen, I will try these.

0 Kudos
RobertBorchert
Honored Contributor

Here is a simple formula. 

A1 = current area retrieved from Shape_Area

L1 = current shape_Length

D = buffer distance (what we are trying to find)

% = how much you want to change.  Shown as a number i.e. 10% = 1.10 etc

A1 * % = A1 + (L1 x D)

when moved around

((A1 x %) - A1))   = D

           L1

I tried it out on a lake before submitting.  The area times 10% came out to 13791.312701 and the calculated result was 3.074344911282261549753763646194 for distance.  The final area was 13820.829974.  It is very close end polygon was 10.29 percent larger.

You can even create a new double field and calculate the new buffer distance for your entire polygon set all at one time and then use toolbox to buffer everything at once. For reference.  Here is the polygon I buffered.

RobertBorchert
Honored Contributor

If you create a field to buffer by that is a Double type.  Here is the formula you use in field calculator.

(( [SHAPE_Area] * 1.1)- [SHAPE_Area])/ [SHAPE_Length]

Just change the 1.1 value to what ever percentage change you want times 100

0 Kudos
DavidStockdale
Occasional Contributor

Thanks. That seems to work for one iteration. What I need to do is show the increase of invasive weeds that are spreading at the rate of 10% a year, 5 and 10 years out. So I would have to run it 5 and 10 times, using the area and length from each iteration as the input for the next. Even putting the calculations into a script, that still leaves a lot of intermediate datasets to get rid of.

What I did was to abstract the weed polygon into a circle, calculating the radius from the shape_area using the formula area = pi x radius squared. Then calculate the area of the 5 and 10 year circles using the formula = * 1 +( ) and calculate the radius of the new area circle. The buffer distance is then radius-new minus radius-original.

I did try your formula on my circles modifying it to (( * 1.1[Number of years])- )/ but that resulted in a larger circle than I got from my original method.

The Increase Polygon Area tool in the Production Mapping toolset will give you a polygon with a slightly larger area than specified, but it involves a lot of trial and error, and doesn’t work well on large, irregular polygons.

Dave Stockdale

GIS Program Manager

Forest Service

Sawtooth National Forest, Supervisor's Office

p: 208-737-3278

f: 208-737-3236

drstockdale@fs.fed.us<mailto:drstockdale@fs.fed.us>

2647 Kimberly Road East

Twin Falls, ID 83301

www.fs.fed.us<http://www.fs.fed.us/>

<http://usda.gov/>[Forest Service Twitter]<https://twitter.com/forestservice>[USDA Facebook]<https://www.facebook.com/pages/US-Forest-Service/1431984283714112>

Caring for the land and serving people

0 Kudos
DanPatterson_Retired
MVP Emeritus

ok... I am a bit confused... wouldn't the invasive species spreading out by a distance from an edge by whatever means?  Was you 10% based upon dissimilar distance measures?  It would be interesting to look at some real location since there may indeed be directionality in the data.  There have been some discussions long ago on directional buffers to try and replicate that effect (ie for wind-related processes).  Just a thought, since I am curious why it is area that you are focusing on, if the real process might be one of an advancing front (whether linear, or non-linear over time)

PS

You can experiment with the math, start with a circle (for instance), radius 10, calculate area, increment the area by 0.5 for several time steps, calculating area and determining the difference from the previous time step.  The change in radius ( or radii for other geometric shapes) while produce a predictable change in area and difference.  If you have enough time steps, you can determine the radii for complex shapes if the centroid remains fairly fixed but the front advances (ie the spokes of an ever increasing wheel)

0 Kudos
DavidStockdale
Occasional Contributor

That may be, but I think the abstraction (circle) would work for me in this situation, since this is for a programmatic EIS and they are wanting to know the effects of different weed treatments over a large area, not a specific project site. The 10% per year was the approximate minimum rate of spread of the weeds as estimated  by the resource specialists. The rate could be as much as 24%, and I would model that as well.

0 Kudos
KimOllivier
Honored Contributor

The approximation calculating the buffer distance using the perimeter looks fine to me.

You don't actually have to create a featureclass if you use geometry objects that have been added to Arcpy recently. Just copy the featureclass into a polygon geometry and then use arcpy functions to buffer it. All in memory, extremely fast and easy so it should be quite ok to iterate.

0 Kudos