I'm trying to measure the compactness (roundness) of some 800 polygons of different shape and size. I created the centroids and what I want to do now is to buffer those centroids with the exact same area of their polygons. Sorry if this is too simple but I just can't find the way to do it.

  • At what point exactly are you running into trouble? Also, what software/version are you using?
    – phloem
    Jan 8, 2015 at 17:59
  • I don't know how/where to specify the size of the buffer based on the [area] field rather than in a distance.
    – 1buzz
    Jan 8, 2015 at 18:06
  • Area = pi * r * r, r = sqrt(Area/pi) But you should do more research into "roundness" and "compactness" for standards
    – Vince
    Jan 8, 2015 at 18:18
  • 1
    look at the solution and comments in Easily calculate “roundness/compactness” of a polygon
    – gene
    Jan 8, 2015 at 18:23

1 Answer 1

  1. If not done already, calculate the area in a field for your polygons
  2. Create centroids. Area field should carry over to the points.
  3. Create and calculate a radius field that corresponds to a circle of the given area, for each point. The formula for circle area is A = pi*r^2, so r = Sqr(A/pi). Pi = 4*Atn(1). The exact VBScript field calculation is:

    Sqr ( [area]/(4*Atn(1) ) )

  4. Run Buffer using the values in your radius field as the distance.

Not the answer you're looking for? Browse other questions tagged or ask your own question.