Increase each polygon area to the same area

Similar to this question, your task doesn't have analytical solution. Fortunately an accurate estimate can be found numerically through iterations and by using root-finding techniques.

Create a copy of your buildings, call it "polygons" in active mxd table of content and run this script:

import arcpy
target,tolerance=500,0.001
maxR=pow(target/3.141593,0.5)

mxd = arcpy.mapping.MapDocument("CURRENT")
buffers = arcpy.mapping.ListLayers(mxd,"POLYGONS")[0]
with arcpy.da.UpdateCursor(buffers,"SHAPE@") as cursor:
    for i,row in enumerate(cursor):
        shp=row[0]; area=shp.area
        arcpy.AddMessage('Processing polygon No %i'%i)
        if area>=target:continue
        low,high=0,maxR
        while True:
            middle=0.5*(low+high)
            newPgon=shp.buffer(middle)
            if (high-low)<tolerance: break
            curArea=newPgon.area
            if curArea<target:low=middle
            else:high=middle
        cursor.updateRow((newPgon,))

OUTPUT:

enter image description here

Note: you need to modify target value, e.g. change it to 100. Script tested on shapefile, you have to start editing session, if "polygons" stored in database, so that ArcGIS will be able to recalculate Shape_Area field. The accuracy of solution only depends on ArcGIS ability to compute buffer.

It took under 2 seconds to complete task for 95 polygons shown on my very old PC.


You may use below algorithm :

Steps:
1) loop through all polygons, get the area of polygon x .
2) check if it is below or above 100m2.
3) use the python code in below link to increase scale of your polygon with very small portion like :

scale_geom(some_geom, 0.01)  

Is there ArcPy tool for polygon resizing like Scale tool of Advanced Editing toolbar in ArcMap?

4) Check the area of returned scaled geometry from previous function, then you will have value for how many m2 per 0.01 %.

5) once you know how many m2 per 0.01%, you can do the math to get how many m2 and percentage needed to scale the polygon to reach area of 100m2 .

6) call the scale_geom function with scale percentage (either by +ve or -ve ) needed and voila the returned geometry.

NB:

  • To get nearest number from 100m2, you may need to increase decimal and percentage. Instead of get m2 per 0.01, use smaller value like m2 per 0.0001 in oreder to reach number near from 100m2 per polygon.

  • percentage should be in negative if want to decrease the area of original polygon and should be in positive if want to increase the original polygon area .

  • I was about to add the buffer zone as second solution but it doesn't reflect the same shape of buildings and also above function (scale_geom) reserve the rings inside the shapes.