Intersect, Union... or? (now: how to combine stacked polygons)

13840
17
02-15-2011 11:45 AM
DavidMedeiros
Occasional Contributor III
I have a geo-processing question I need some help with.

I have a student (I'm a GIS assistant/intern at local library) who has a single feature class with multiple overlapping polygons representing distributions by species (so each poly has only one attribute, a single species type). The student would like to output a new layer where each polygon overlap becomes a single individual polygon with attributes reflecting all of the species present in the overlap area. The image below may help conceptualize this (mostly for me!).

What I need are the overlap areas as single new polygons showing the species present from the input polygons (so one new poly each for AC, ABC and BC). Not stacked polygons where the area for say ABC would actually end up as several new polys (AB, BC, AC). From the documentation I can't tell if Union will do this in a single step or if I need to run another process after that to merge the resulting output stacks... or if I need another tool all together?

Any help is appreciated,
Dave
0 Kudos
17 Replies
DavidMedeiros
Occasional Contributor III
The dissolve will need to be run so that you are left with a single polygon for each overlap, not stacked polygons. This is only possible if a UID has been generated for the overlapping polygons. One way to do this, is to generate a pt from the Unioned overlay, and dissolve those points based on their X,Y coordinates (matching UIDs in this case) and then create a new field and populate a UID using any method you are familiar with.

in field calculator:
"ABC" & "-" & [FID] + 1

or whatever


Then perform a spatial join to transfer attributes from the centroid pt, to the unioned polygon.

Your GDB should then be ready for the relate.

That archived post does leave out a lot of intermediate steps because the assumption is that the user has some basic working knowledge of ArcGIS as seen in the initial post. Its assumed you know how to eliminate the stacked polygons (identical spatially) into a single polygon. And also how to populate a field to concatenate the values in the related table.


In the last post of the archived forum, download the Zipped mxd and gdb to explore how it was done (hint: explore the GDB when in ArcCatalog to observe the relates, tables, structure, etc...)


Ok, that work flow is making some sense to me now. Thank you. Work copy of Arc does not have the full Data Management tool box installed so can't generate points from poly here. But will give the process a try at the Library tomorrow.
0 Kudos
MichaelStead
Regular Contributor
That will work, but relates complicate things. Merge all your linework into one file (convert your 3 polygons to polylines). Build polygons. Spatial join with your three habitat layers one at a time.
0 Kudos
DonovanCameron
Occasional Contributor II
Ok, that work flow is making some sense to me now. Thank you. Work copy of Arc does not have the full Data Management tool box installed so can't generate points from poly here. But will give the process a try at the Library tomorrow.


Their is a small workaround for getting pts from polys without an arcinfo license:

Create two new double integer fields (default scale and precision of 0 and 0), one called x_coord and the other y_coord

Then, you can right click these, and Calculate Geometry with the first pulldown pointing to either X Coordinate of Centroid and then click OK, do this also for the y_coord field.

Then, click the options button in this attribute table, and Export, to a DBF.

Bring that table into arcmap and right click it and create an event layer by clicking Display XY Data.
Don't forget to tell it what coordinate system you are using.


There are tonnes of ways to get the results you want, so have fun experimenting, and post back here the method you used to complete this thread.
0 Kudos
ChrisSnyder
Regular Contributor III
The attached python script will do it. Note this is a newer version of this script: http://arcscripts.esri.com/details.asp?dbid=16700.

This new version has some extra (optional) parameters that concatenate the overlapping polygon values. So per your Venn-like diagram, a new field can optionally be added to the "regionalized/planarized" output polygon FC and will contain values like 'A','A,B','B,C','A,B,C', etc. depending on what region it is describing.
0 Kudos
JoeEncinas
New Contributor

Do you now if the attached Super Region Poly works for ArcMap 10.3.1?  Joe

0 Kudos
DavidMedeiros
Occasional Contributor III
Well it turns out I have two variations on this problem that need to be addressed; one involves getting single overlap polygons that inherit the unique species ID from the input polygons (as already described above). The other version is to get overlap polygons that sum the values of one field from the input polygons, and I think I managed to do this today. Here's the work flow:


add original polygon layer
[union] polygons, keeping all attributes (stacks identical polygons)
open table to union layer
add 3 new fields; x_coord, y_coord & xy_id
calculate geometry for x & y coord fields
create UID by concatenating coordinates into the xy_id field
[dissolve] union layer on xy_id; use a sum statistic operation during dissolve to sum selected values of stacked polygons (in this case the "count" field)
output layer polygons are single non stacked polygons of the overlap and non overlap areas with a count sum from all identical polygons in its stack

Does that seem right? It worked on my very basic sample file.

For the other issue, retaining unique species info and concatenating into one field for the dissolved stack I found the link below. Will try later, not sure how complex the species data is (still have not interviewed the student).

http://forums.arcgis.com/threads/12637-Union-intersect-Concatenate
0 Kudos
DaleHoneycutt
Regular Contributor
The way to do this is with the "Spaghetti and Meatballs" technique.  This technique is in the UC presentation http://resources.arcgis.com/gallery/file/geoprocessing/details?entryID=6D00A1DF-1422-2418-7FB1-4720F....  Spaghetti and Meatballs works like this:

  1. Use the Feature To Polygon tool; input your feature class containing the overlapping polygons.  The tool will output a new feature class with non-overlapping polygons.  Essentially, your input is the 'spaghetti', and Feature to Polygon will turn this spaghetti into polygons.

  2. Now create the 'meatballs'. Run the output of Feature To Polygon input Feature To Point.  Be sure to check the "Inside" option.  What this does is create a point feature class of polygon centroids.  Each point has the object ID of the input polygons so that you can relate these back to the input polygons.

  3. Intersect the meatballs (the centroids) with the original overlapping polygons.  The output will be a new point feature class.  There will be one point in the output feature class for each polygon that overlays the point.

  4. Summarize the points output from Intersect.  What you're doing is reducing the multiple points per polygon into one point, summarizing fields as you do.  I can't tell you exactly what to do -- it depends on your attributes.

  5. Join the summarized points (the meatballs) back to the non-overlapping polygons.


The download has a couple of models that show this technique, and the slides detail it further.

I sure hopes this helps... I've been meaning to blog about this, but 10.1 keeps getting in my way!
Thanks, Dale
0 Kudos
DianeMcConnaughey
Occasional Contributor
I am unable to find the "Spaghetti and Meatball" link described in this forum, but I did try the summary of it.  I probably did something wrong along the ways.  The output is slightly different than another method described  http://forums.esri.com/Thread.asp?c=93&f=987&t=282764&mc=8 in which you unioned the feature with itself, added XCOOR, YCOORD fields, concatentated those into a new field, summarized the concatenated field, and joined it back to Union poly.  The second method seem to produce a correct result when compared against the original feature with the overlapping polygons.
0 Kudos