Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I have a point dataset that I want to append some information from a polygon to.

My polygon shapefile contains over 500 features. Whilst each of these features represents individual areas they are not discrete in their extent. For example, (see highly sophisticated Paint mock up below) a point (point 1) in Figure A may actually overlay all three zones (Point 1, Figure B). A spatial join or query will then result in an incorrect zone being appended.

Simple overview of the problem

What I’m wanting is a dataset like that shown in Figure C i.e. discrete polygons that do not overlap.

I have tried splitting my original polygon by an attribute/location and unioning these ~500 shapefiles together but to no avail. Namely, the Union tool would like to do this process two shapefiles at a time (I ideally wanted to point the tool at a folder containing the split shapefiles and union them all together).

This should be a really easy problem to solve but I want to avoid doing this manually (i.e. through the Editor 'Clip' tool).

Does anyone have any ideas?

share|improve this question
3  
This is an ArcGIS licensing issue: Union is the correct solution, but ESRI is limiting you to two arguments at a time. The work-around is to loop over the layers, unioning them two at a time. But do you really have 500 shapefiles? At the outset you mention you have only one shapefile with 500 features. If that's the case, why don't you just union this shapefile with itself? –  whuber Dec 10 '12 at 19:44
    
Is this problem/solution similar to what you're attempting? forums.arcgis.com/threads/… –  T. Wayne Whitley Dec 11 '12 at 2:01
    
Thanks for the comment whuber. I do have one shapefile with 500 features, I then went on to say that I split this up (using a split by attribute query) into it's constituent features, thereby resulting in 500 separate shapefiles. Unfortunately, unioning the shapefile with itself yields an empty dataset. I should also point out that I'm looking for an ArcGIS or QGIS solution. –  veedub Dec 11 '12 at 9:30
    
There is the real question, then: what is going wrong when you union the shapefile? What steps have you taken to diagnose this problem? –  whuber Dec 11 '12 at 16:15
add comment

2 Answers 2

You can do it using Quantum Gis(Qgis).

  1. From the menus, select Vector -> Geometry Tools -> Polygons to Lines
  2. Install Polygonizer Plugin using plugin installer(Plugins -> Fetch Python Plugins). If somehow the plugin installer doesn't work, downlad plugin directly from http://plugins.qgis.org/plugins/Polygonizer/version/2.1/ extract and copy the 'Polygonizer' folder to your qgis plugins folder('C:\Documents and Settings\yourname.qgis\python\plugins')
  3. Enable Plugin using Plugins -> Manage Plugins menu. A fancy looking icon should appear
  4. Click the Polygonizer icon and fill up the details as below.

    enter image description here

  5. You have distict polygons. Now we need to retrieve attributes from initial polygons.

  6. Select Vector -> Data Management Tools -> Join Attribute by Location. Set target layer as the new polygon layer and join layer as our converted lines. Use options shown below enter image description here

  7. You should have your distinct polygons now.

share|improve this answer
add comment

I just tried @whuber suggestion of Union on single feature class of 500 polys using your 3 circle example as a test and found that it created 6 polygons (innermost triplicated, middle duplicated, outermost with no overlap) and no straightforward way I could see to discard duplicates and ensure retention/rejoining of correct attributes.

To do this with ArcView/Basic licensing I think you probably need to use ModelBuilder or Python to:

  1. Select each of your 1st to 500th polygons out into a single polygon feature class that has one integer field called perhaps Poly1 to Poly500 and calculate that field's value to 1.
  2. Perform pairwise Unions to get them into a single feature class with 500 fields called Poly1 to Poly500. This could be a lot less than 500 Unions if you are worried about processing time because you could do each successive pair together in the first round, then each result of these as pairs next, etc, etc.
  3. Final step (before making sure you have all the attributes retained/rejoined) is to Select out just those polygons where Poly1 + Poly2 + Poly3 + ... Poly500 = 1 because these are the only ones that have no overlap with any other polygons and you know where they came from by which field name holds the 1.
share|improve this answer
    
I agree that ESRI's "union" has the unfortunate effect of replicating features in areas of overlap, but there are many ways to identify and discard duplicates--they have been discussed in older threads in these forums. They are far more straightforward and efficient than conducting 500 pairwise unions! –  whuber Dec 11 '12 at 16:16
1  
I'm keen to see other Answers on this Question, or links to the older threads you mention, because I think I am likely to delete my Answer. Thinking harder about the problem I think my Answer would lose all polygons where there is any overlap - not just remove that overlap. –  PolyGeo Dec 11 '12 at 22:32
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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