Removing small spaces (slivers) between polygons?

Use Eliminate (ArcInfo License required)

Eliminates polygons by merging them with neighboring polygons that have the largest area or the longest shared border. Eliminate is often used to remove small sliver polygons that are the result of overlay operations, such as Intersect or Union.

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000005p000000.htm

enter image description here

ArcGIS 10 Users Note there is a NEW Feature in the Options for this Tool.

It is now possible to preserve the original POLYGON or POLYLINE with the option > ex_features (Optional) An input polyline or polygon feature class or layer that defines polygon boundaries, or portions thereof, that should not be eliminated.


To do this by hand in QGIS, go to Settings|Project Properties... On the General tab at the bottom is Snapping options... Check the layer that you want to snap, set the mode to to vertex and set the tolerance to some value less than the shortest distance between two points that you have. If you're not sure, set the units to pixels and the tolerance to something like 5 so that if there are some fiddly details you can zoom right in and be sure that you don't snap to the wrong vertex.

Then edit your vector layer, select the node tool, and move the errant points to their counterparts.

Doing it automatically is a bit trickier. AFAIK QGIS doesn't have a plugin to automate it, and although PostGIS is built on GEOS which does have snapping functions, they're not exposed to PostGIS. It might be possible to write a query to check each point of a polygon for neighbours within the snapping distance, but that is currently beyond my wit to expand upon.

GRASS has v.clean.snap which you can access via QGIS, but there's the extra step of creating a GRASS dataset.


If you'r familiar with QGIS: In the QGIS trunk 1.9 (can be installed as qgis.dev via the OSGEO installer, see qgis homepage) is a new function in the vector menu called "Eliminate sliver polygons", which exactly does what you want. You can select the problematic polygons and merge them to adjacent polygons based on a common boundary or area propotion. Try it out!