Creating polygons based on values of other polygons

1914
2
11-16-2013 10:52 AM
AlexDin1
New Contributor
Hi,

I have a question about how to make new polygons based on the values of an attribute within existing polygons. I have a census block groups with values 0-20 (or  so) and would like to group them so that the values equal 26 or as close as possible without going over. I think this could be done with a dissolve but I am not sure how to dissolve into groups like that.

Thank you for your help!
0 Kudos
2 Replies
RichardFairhurst
MVP Honored Contributor
Hi,

I have a question about how to make new polygons based on the values of an attribute within existing polygons. I have a census block groups with values 0-20 (or  so) and would like to group them so that the values equal 26 or as close as possible without going over. I think this could be done with a dissolve but I am not sure how to dissolve into groups like that.

Thank you for your help!


I don't understand your description of your data and what you are trying to do.  How would these attribute values equal 26 if they range from 0-20?  Are they first being accumulated in some way?  If that is the case a value of 0 would accumulate with every group without pushing the accumulated value over any threshold.

What do these values represent and why do you need to group them?  What are the accumulation rules?  Would the groupings have to be contiguous or would they form multi-part polygons?

In general the dissolve would have to be based on a select by attribute expression on the field, but the field itself would have to be excluded as an actual case field if the selection would merge multiple actual values together.  The selection field could only be included as a summary field to merge together the different values.  In all likelihood this would involve a multi-step process to achieve the final result you are looking for.

A picture with a couple examples would really help define what you are asking for and lead much more quickly to the best solution to your problem.
0 Kudos
DaleHoneycutt
Regular Contributor
Sounds like you're trying to generate territories where each territory has something close to 26 "whatevers".

Generally, this is done by first selecting one "seed" polygon, then selecting all polygons that share a border with the seed polygon, get the total of "whatever".  If it exceeds 26, remove one or more polygons from the selection until you get a good number.  Once you have a good set of adjacent polygons, assign them to "territory 1".  Then move on to another seed polygon, building territory #2.

Here's a picture of what I mean (from our 9.3 help):

[ATTACH=CONFIG]29231[/ATTACH]


You can use Select Layer By Location with the BOUNDARY_TOUCHES or SHARE_A_LINE_SEGMENT_WITH relationship -- essentially selecting polygons that are adjacent. See the help topic Select By Location: Select based on spatial relationship within the layer.

But this is just the start.  What you want to do is really difficult to do in any sort of optimized way and requires some specialized algorithms. Our Business Analyst product has a Territory Design toolbox which will probably do what you need (I haven't used these tools).

But if your dataset is small and you think you could survive doing it manually, you could use Select By Location and iterate. Here's a 9.3 topic about this specific workflow: Iteration using a count of Boolean condition.  There's some gobblygook at the end of this topic about getting the sum of attributes -- you can use the Get Field Value tool instead (accessed from ModelBuilder menu > Insert > Model Only tools.  Get Field Value didn't exist at 9.3.
0 Kudos