Select to view content in your preferred language

Divide Polygon in equal areas

77923
31
02-14-2012 05:06 AM
KonradHentze1
New Contributor II
Dear community,

we are working with a lot of big forest parcels and want to divide them into (exact) 1ha, 0,25ha parcels and so forth. Is there any kind of algorithm which could do this automatically? Up to now, we are overlaying polygon-rasters of smaller size then the desired output and merge the small squares. But of course the parcels we get cant fit 100% in our forest area (squares in irregular polygons). Other solutions are drawing parcels by hand and estimating the area, calculating it as an attribute, take a small bit of or ad a bit and so forth until we get the area of 1 Hectar.

Do you guys have any idea how we can automate this process? and if not as "divide polygon in 0,25 ha pieces" something like " divide polygon in 20 equal areas"? It would save us time and space in our layers :rolleyes:

I fear this is to heavy to calculate but still hope for suggestions

thanks for you input, regards Konrad
Tags (2)
0 Kudos
31 Replies
MichelleTotman
Occasional Contributor

I recently encountered this same issue and have been unable to satisfactorily resolve it. The project involves polygons representing different forest types across mountainous terrain. We wanted to divide each habitat type into 4 pieces of equal area, each of which will receive a different harvest treatment. Ultimately, we just divided the polygons manually, using the "undo" function numerous times until we were +/- 1 acre. For a larger project, I could see this methodology becoming increasingly tedious. I intend to look into the parcel fabric solution, but am surprised that I was unable to find a tool that could automate this.

0 Kudos
deleted-user-yFo_UoWEJbkc
New Contributor III

This may not satisfy the functionality you originally wanted, Konrad, but for the benefit of others who are doing just a simple division, I found this "Polygon Bisector" tool on AGOL, which creates a line feature that splits the polygon feature in half either vertically or horizontally and can be used as a guide for the Cut Polygons Tool. Again, probably not the full functionality you need, but maybe this will help some of the others who have searched this thread for answers to similar though simpler challenges (it definitely helped me out for something that I didn't want to have to create a parcel fabric for).

https://www.arcgis.com/home/item.html?id=9aadb577ccb74f0e88b13a0e3643ca4d 

0 Kudos
KimOllivier
Regular Contributor II

This seems to be an unanswerable question if it is still going after 5 years!

But it inspired me to think of a solution that is modelled on the discovery that the earth sweeps around the sun on an ellipse at different speeds but a constant swept area. I know people had in mind rectangular forestry plots but that is never going to fit into an irregular polygon. Without the restraint of a grid (from previous failed solutions) there is an apparently trivial solution. So this is my idea that seems easy to implement.

Why not simply divide the area into n segments? Each segment will have area = total_area / n. There will not be any left-over areas. Start by selecting the centre, say a modified centroid. Then sweep around the boundary adding up the cumulative area until you reach the limit for a segment, draw a line and restart.

I can see an exception with some shapes that are so re-entrant that there is not a straight line to the centroid, so they would need special handling such as splitting into convex polygons.

With geometry objects in arcpy the calculations can be very fast with a python function that iterates over the boundary vertices. Each step is a simple triangle with an easy area solution, just keep adding until you get to the limit. If the vertices are too widely spaced, interpolate or densify the boundary before starting.

So you don't like the shapes? Why not, for a small number, say 4 they will be almost a rectangle anyway. Maybe for a very large number you could cut out the centre say using a circle and have n-1 segments around the donut to prevent sliver shaped areas. Hint: Surveyors use the Double Difference Area equation to calculate the area of a traverse with only one division operation by 2.

Anyone up to the challenge to provide a script that runs in a short time?

0 Kudos
DebbieMurphy
New Contributor III

Kim,

I have a similar  requirement.  We need to download current satellite imagery of different countries but the data provider only allows 124,000 square km at a time.  So, we need to  take country polygons and divide into sub-polygons that are no more than 124,000 km each.  I am not really sure about the technique you are referring to, is there a help topic somewhere that I can look at to get an idea of what you are talking about?  We have someone on our team that can create the script if I can provide a clear solution.

0 Kudos
KimOllivier
Regular Contributor II

I don't think it applies to images that are always rectangular. So for your case create a bounding box and tile it into less than the maximum size. Better still contact the vendor and get a quote for providing the area you want. They probably will do a custom area.

My thought experiment was to simply divide up an irregular but convex polygon into segments from the centroid. We know the area of the segment so we can create triangles from the centroid to the boundary vertices. you keep adding up the triangles until you reach the limit and then draw the combined shape. For 4 parts the segments would be quarters. I know for large numbers the shape would not be squarish. This could be helped by cutting out a circle in the middle and then do the same process, subtracting off the centre segment. Then there would be n -1 equal areas and one circle of the same area. The areas around the ring would have roughly 4 sides, maybe the circular side could be simplified to a straight segment.

0 Kudos
BruceHarold
Esri Regular Contributor

Maybe we need some civil engineering smarts  - is there an algorithm to place columns to support an arbitrarily shaped roof with N>=3 columns bearing equal load?  Then do a Voronoi split of the polygon.

0 Kudos
AbdullahAnter
Regular Contributor II

may be this link helpful , Split polygon feature by percentage , it is relate to subject. 

0 Kudos
pokateo_
New Contributor III

Hi Kim!

Maybe this script is what you are looking for?:

Dividing a polygon into a given number of equal areas with arcpy – Alex Tereshenkov 

DebbieMurphy
New Contributor III

We created a tool for a client who wanted to be able to split a country polygon into equal subset polygons of a designated area/size so they could use the subset polygons as templates to request data downloads from Digital Globe.  It was not a problem to divide "regular shaped" country polygons but most countries are not "regularly" shaped and many have peninsulas or islands.  This left numerous small polygons around the edges, which I am calling fringe.  We wanted to be able to consolidate the fringe, including the land in the polygon but not the water.  The tool that we created does this by first breaking up the original country polygon into a very small grid pattern and then sweeping the grid, combining the smaller blocks into subsets until it reaches the desired area at which point, that subset becomes a polygon.  The process continues to sweep the entire country creating subset polygons of equal area.

0 Kudos
pokateo_
New Contributor III

I found this script and it worked perfectly for me and likely will for you! 

0 Kudos