Puedo usar Python y el Búfer. Cada Punto se pone en búfer, recortadas y zona está activada. Si la diferencia entre el área recortada y tamaño deseado es más que ok_diff, que se te cargan de nuevo con un poco más grandes búfer de distancia y comprobar de nuevo.. Al aceptar se obtiene anexa a la salida de fc. El código puede ser ejecutado en la Ventana de Python.
import arcpy, math
arcpy.env.overwriteOutput = True
#Change to match your data:
arcpy.env.workspace = r'C:\Default.gdb'
boundries = r'Boundries'
points = r'bufferpoints'
out_feature_class = r'GrowPoints'
#Change to match your desired size of polygon, ok difference and step in buffer radius increase
size = 7500
ok_diff = 50
increment = 1
arcpy.CreateFeatureclass_management(out_path=arcpy.env.workspace, out_name=out_feature_class,
geometry_type='POLYGON',
spatial_reference=arcpy.Describe(points).spatialReference)
arcpy.MakeFeatureLayer_management(in_features=boundries, out_layer='blyr')
with arcpy.da.SearchCursor(points,['OID@','SHAPE@']) as cursor:
for row in cursor:
bufferstart = math.sqrt((size/math.pi))
sql = """{0} = {1}""".format(
arcpy.AddFieldDelimiters(points,arcpy.Describe(points).OIDFieldName),row[0])
arcpy.MakeFeatureLayer_management(in_features=points, out_layer='pointlyr',where_clause=sql)
arcpy.SelectLayerByLocation_management(in_layer='blyr', overlap_type='INTERSECT',
select_features='pointlyr')
if [i[0] for i in arcpy.da.SearchCursor('blyr','SHAPE@AREA')][0] > size:
area = 1
while abs(size-area)>ok_diff:
print area
arcpy.Buffer_analysis(in_features='pointlyr', out_feature_class=r'in_memory\point',
buffer_distance_or_field="{0} Meters".format(bufferstart))
arcpy.Clip_analysis(in_features=r'in_memory\point', clip_features='blyr',out_feature_class=r'in_memory\clipbuffer')
area = [i[0] for i in arcpy.da.SearchCursor(r'in_memory\clipbuffer','SHAPE@AREA')][0]
bufferstart+=increment
arcpy.Append_management(inputs=r'in_memory\clipbuffer', target=out_feature_class, schema_type='NO_TEST')
else:
print 'Impossible to fit buffer inside boundry for point number: ',row[0]