I have a merged shapefile composed of 3 polygon classes (sand, water, vegetation) from where users have traced over a satellite image.

There a few slivers I need to remove. These are very slim polygons that are man-made errors from tracing. For example, a small thin water polygon in the middle of the sandy beach, or a small sand polygon in the middle of the open ocean. (I have circled these errors with a red pen in the images below).

I wish to eliminate these very tiny polygons by having them merge to the polygon class that surrounds them. I have tried using the Eliminate Tool.

However, I am struggling to select all the erroneous slivers because 1) there are thousands of slivers so it not possible to manually select every erroneous sliver, and 2) not every tiny polygon is an error. This means selecting for slivers simply by length/area may lead to genuine polygons being deleted.

I would like a solution where a very small polygon that is more or less enclosed by another class is merged to the big class. For example, a tiny bit of sand in the middle of the ocean merges to the water class.

What I've tried:

To eliminate the sand slivers, I've dissolved each layer (water.shp, sand.shp, vegetation.shp) and merged them together to create a shapefile that has just 3 polygons (merged.shp with sand, water and vegetation). I've then tried to remove sand slivers by using the Eliminate Tool and selecting sand. I hoped this would only merge the very small sand polygons that are surrounded by water but instead it merged the whole sand layer with water. This resulted in a shapefile with just water and vegetation, rather than the elimination of sand slivers.

I've tried to use the Eliminate Tool with the non-dissolved shapefile. However, there are thousands of potentially tiny slivers, so it is not possible for me to select them all manually (as per required by the Eliminate Tool).

Currently using ArcGIS Pro 2.5

Note: This is a separate problem to my other question Erase tool not erasing all overlapping features in ArcGIS Pro. That post relates to issues in deleting overlaps that arose from a problem related to CRS. This post relates to how to best merge slivers when there are thousands to select from, not all of which are erroneous.


enter image description here

  • 2
    Try Integrate tool.
    – BERA
    Jul 13, 2020 at 14:17
  • 2
    If your problem is the selection, try selecting by shape length and area. To select polygons with small area and long shape length compared to area. Maybe you could also try topology rules
    – BERA
    Jul 13, 2020 at 14:19
  • @EdyK Have you seen Filling spaces between polygons using ArcGIS Pro?
    – Midavalo
    Jul 13, 2020 at 16:04
  • 1
    Create points from centroid inside coordinated, add geometry attributes tool'. Convert polygons to lines and use near to calculate distances to lines. Points/ polygons with very small distances are candidates. Export them to separate layer and delete from original. Remove all fields in smalls and spatial join to rest, share boundaries with. Merge, dissolve by attribute.
    – FelixIP
    Jul 13, 2020 at 22:46

1 Answer 1


You could try the following:

Run Multipart to Singlepart. https://desktop.arcgis.com/en/arcmap/10.3/tools/data-management-toolbox/multipart-to-singlepart.htm

Select by Location using "Are completely within" to get polygons completely within another. https://desktop.arcgis.com/en/arcmap/10.3/map/working-with-layers/using-select-by-location.htm

With the selection run Eliminate to only get rid of those contained sliver polygons. https://desktop.arcgis.com/en/arcmap/10.3/tools/data-management-toolbox/eliminate.htm

  • For the dissolved merged shapefile (for which each class is represented by a single polygon creating an attribute table with 3 rows: water, vegetation and sand) and the task of eliminating minuscule sand polygons, I selected the sand attribute, hoping it would only eliminate parts of the sand polygon that are minuscule and surrounded by another the water or vegetation class. For the non-dissolved shapefile which has thousands of polygons for each class, I'm not sure how best to select slivers when there are thousands of slivers, not all of which are erroneous.
    – EdyK
    Jul 13, 2020 at 16:55
  • 1
    I updated my answer. Your question states that you want polygons that are completely contained within another polygon eliminated. Is that the case, or do you actually need to keep some polygons that are completely within another polygon?
    – Pdavis327
    Jul 13, 2020 at 17:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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