# Creating buffer of points with pre-defined area?

I need to create a buffer with a predefined area, my inputs are points, at first I tried it by calculating the area that each buffer may have and then giving the radius as an input, but then I have to dissolve the buffers polygons so the area change.

Is there some tool that can do this?

• Area is `pi * r * r`, so r is `sqrt( area / pi )`, certainly, but if your points' buffers overlap you've got an NP Hard problem on your hands. It doesn't make sense that this would have needed to be solved. Perhaps you should take a step back and explain why you need this. – Vince Jul 20 '19 at 3:02
• Are you creating single polygon? – FelixIP Jul 20 '19 at 5:24
• If you need an ArcPy solution then please provide a code attempt. However, it sounds like you should explain more to figure what the GUI offers first. – PolyGeo Jul 20 '19 at 5:33
• the idea is that all the polygons must sum a final area, but they overlap so I have to merge them – Luis Medina Jul 21 '19 at 3:53

You can get very accurate estimate by using any root finding algorithm, e.g. bisection.

At given dimensions: total area of 3 circles is 94247.7796. We can get very close to the same area for dissolved polygon by simply playing with radius:

``````import arcpy, math
from arcpy import env
resultFC="c:/scratch/scratch.gdb/dissolved"
target=94247.779608
result=arcpy.GetCount_management("POINTS")
nNodes=int(float(result.getOutput(0)))
##find lower limit for radius and set upper one
low=math.pow(target/nNodes/math.pi,0.5)
high=5*low
g=arcpy.Geometry()
iterCount=0
while True:
if (high-low)<0.01:break
mid=(high+low)/2
pgon=arcpy.Buffer_analysis("POINTS",g, mid, "FULL", "ROUND", "ALL")
curArea=pgon.area
if curArea<target:low=mid
else:high=mid
iterCount+=1
format(target,curArea,mid,iterCount))
arcpy.CopyFeatures_management([pgon],resultFC)
`````` Script messages:

• Target = 94247.78
• Area = 94245.82