Merging sliver polygons

3013
7
04-22-2013 11:46 PM
JamesLeuzinger1
New Contributor
Hi

I have an Dataset with 2000 Polygons. 900 Polygons are sliver Polygons with an area smaller than 100 m² that I want to eliminate. I want them to merge with the neighboring polygon based on the field "GS" (shortinteger(1))in the attributtable. If there are more than 1 Polygons neighboring with the sliver polygon then the one with the longest touching line should be Chosen.

Very thanfull for your help!

regards James
Tags (2)
0 Kudos
7 Replies
TrishRice
Occasional Contributor III
Have you checked out the help page on fixing slivers? You might need some extra steps to determine which polygons have the longest touching sides, I'm not sure any of the sliver tools have that kind of option built in.
0 Kudos
JamesLeuzinger1
New Contributor
Hi
No there is no Option to define which neighboring polygon should be Chosen. I think I Need a modified python code or some free Extension which allows this. Can someone help me?

Many thanks
0 Kudos
TrishRice
Occasional Contributor III
Hi
No there is no Option to define which neighboring polygon should be Chosen. I think I Need a modified python code or some free Extension which allows this. Can someone help me?

Many thanks


The Polygon Neighbors tool claims to be able to determine the lengths of touching sides of polygons.  It could be incorporated into a script.

A sans python workaround (because I don't code and I'm surprised no coders have responded yet) could be done by running comparisons of the data in Excel and bringing it back in for merging.  It would take about the same amount of time as searching for the right script, and involves:
-Running the polygon neighbor tool to get the touching side lengths and IDs of touching neighbors.
-Comparing in Excel to determine which neighbor is longest.
-Creating a DissolveID field on all slivers & neighbors to tell which sliver to merge with which polygon. (These last two steps could easily be done in 2 equations.)
-Bringing that new field back into Arcmap as a table join or field join.
-Running the Dissolve tool based on the new DissolveID field.
0 Kudos
JamesLeuzinger1
New Contributor
Hi

Great Idea! Unfortunately the polygon neighbors tool is not available with arcgis 10.0.

regards
0 Kudos
TrishRice
Occasional Contributor III
Hi

Great Idea! Unfortunately the polygon neighbors tool is not available with arcgis 10.0.

regards


OK.  Hmm.  :confused: I'm sure there must be a way to do this.  Tinker with Polygon to Line or Feature to Line, along with Split Line at Vertices.  The idea being to convert the polygon boundaries to lines that are split at the vertices; eg a 5-sided polygon becomes 5 separate lines.  Make sure the lines retain an attribute ID for the polygon they originated from.  Then calculate the length of each line.  Then do overlap analysis to see which are touching your slivers.  That should get you to where you can perform my previously described workaround.
0 Kudos
JamesLeuzinger1
New Contributor
Hello again

I failed to accomplish my Task. I guess there is no way around a python code. Has anyone done this before and can help me? I would be delighted!!!

Best regards
0 Kudos
RobertBorchert
Frequent Contributor III
I once had this issue with a lake polygon shapefile I received.  There where some 2000 slivers.

I could not automate it.  What I did was go to the first sliver then selected the larger polygon I wanted it to be part of then used select by location to select all polygons touching it.  removed the ones I didn't want merged and hit the merge button and used the big polygon as the merge leader.


sounds daunting but with only 900 you might just be better off knuckling down and just plowing through it. I would even suggest symbolizing the slivers with something really distinctive so you can spot them a lot easier and only that polygon layer visible.

If you sort your table by slivers first you can simply select and pan swipe/select merge go on to the next.
0 Kudos