Removing slivers between polygon boundaries

07-12-2017 12:08 PM
New Contributor III


I have a bit of an interesting problem that I am trying to solve.  Basically, I have multiple shapefiles of unprojected polygons that represent field boundaries over the course of about a decade.  Each shapefile (there are ten in total) represents a single year of field boundaries.  Over the course of the decade, there have been many changes to the field boundaries so there are legitimate shape differences between years that must be preserved.  

Here is the tricky part.  I'd like to preserve these legitimate field boundary changes from different years that might represent a different field, while at the same time getting rid of field boundaries that are incorrect overlays/gaps, bad slivers, etc..  In other words, I need to keep any boundaries that are significantly different enough between years as legitimate field differences and get rid of any boundaries from different years that look like they should match up but they do not. In the end, I need to have a master polygon file of field boundaries over all years that respects the legitimate boundary differences between years and correct polygon geometery but eliminates slivers/gaps/bad overlays that are not correct between years. It is vital that the original attributes are preserved, too!!

Note: I'm using the most recent year of field boundaries as the reference against which all other shapefiles field boundaries are compared.  Depending on the year and location of the fields, there are very significant differences from the current year's field boundaries.  


My initial thought was that I need to eliminate potential non desired overlays, slivers, gaps, etc. I've tried the Integrate tool, but I've found it's nearly impossible to find an appropriate XY cluster tolerance that acceptably removes potential slivers/bad overlays between years while preserving a original features’ geometry (e.g. A polygon that represents a long skinny road in the shapefile might be collapse, for example).  In addition, I've tried using Intersect and Merge tools but this does not seem to be an appropriate application for these tools.  

My conclusion is that I should create a geodatabase topology, but I am not sure that this is the right route to take either.  I used the Feature to Line tool to create polylines and then set up a rule in my topology that the different feature classes must cover each other.  This generates errors that quite nicely sum up the differences, but there are no automatic/quick fixes for this route (this particular rule does not have an associated topology error fix with it).  

Right now, I was thinking of exporting these errors as features in a feature class and then using a buffer on the current year field boundaries to delete the errors features that fall within that buffer distance.   

I'm pretty stuck at this point so any ideas to get the ball rolling would be very much appreciated!  Thank you!

- Josh

Note: I need to make adjustments without changing the original shape of the field boundaries.

Note: I need to automate this process as much as possible, so having arcpy ability with my geoprocessing tool is a must! Thanks!!

3 Replies
New Contributor III

Brief update: I have been able to isolate all boundary line differences between current and past year shapefile by converting polygons to lines (using Feature to Line tool).  Then, I set up a geodatabase topology and had rule that said previous feature class lines must be covered by current year feature class boundary lines.  Not sure if isolating the differences is helpful though, since I still need to figure out how to preserve lines that might be legitimate boundaries while getting rid of boundary lines that are just incorrect overlays or slivers... Any tips on how to proceed would be much appreciated!!

New Contributor

Did you ever resolve this?  I am having a similar issue with tree planting blocks and wondering what you came up with.

0 Kudos
New Contributor III

Hi Emily,

My apologies for just responding.  Just saw your response.  Unfortunately, I no longer have access to this data (was a contractor), so I'm trying to pull things from memory.  I believe I was able to get a satisfactory solution.

If I'm remembering correctly, I was able to get lines that were changed boundaries through time using a topology (upon conversion from original polygons to lines) and then further isolate changed boundaries using buffered current boundary lines. 

The issue was that sometimes there were gaps (ie broken boundary) between the changed (ie historic) boundary and the current boundary.  I believe I used the Near tool to find the nearest XY coordinate on the boundary of interest. 

Then, I created a line to that point.  Oh and be sure to use check and repair geometry tools to ensure single features, etc. Not perfect, but at least closed boundary gaps.   I don't think I ever was able to find a way to convert back to polygons. 

Without knowing the specifics of your project, it's hard to provide great advice.  Also, some of the tools- like Near- require an Advanced License for access.

Wish I could be a greater help, though my memory has faded on this project.


- Josh

0 Kudos