2

I've got several hundred thousand slivers in my dataset as a result of cutting in a layer.

Does anyone have a good solution as to how to have ArcGIS Desktop evaluate the position of each sliver and determine where they need to be allocated?

I want each sliver to be assigned to the largest adjacent polygon that it shares more than one node with.

Slivers all over the place!

5

If you have the "advanced" licence, this is something that the "eliminate" tool does. But from a cut you could have multipart polygons, which are more difficult to manage. Therefore you should first use "multipart to single part", then select the small polygons (select by location all polygons touching the one you used for cutting, then use a size threshold).

Eliminate has two options:

  • LENGTH —Merges a selected polygon with a neighboring unselected polygon by dropping the shared border. The neighboring polygon is the one with the longest shared border. This is the default.

  • AREA —Merges a selected polygon with a neighboring unselected polygon by dropping the shared border. The neighboring polygon is the one with the largest area.

Personnally I prefer largest shared boundary, but in your case you can use "AREA"

1

If you DON'T have the "advanced" licence, there is a workaround but it will not be exactly the same result.

It starts the same way : From a cut you could have multipart polygons, which are more difficult to manage. Therefore you should first use "multipart to single part", then select the small polygons (select by location all polygons touching the one you used for cutting, then use a size threshold).

Then export the selected polygons in a new layer, inverse the selection and export the other polygons in another layer. Now you have 2 distinct sets : one with the slivers and one without the slivers.

Use spatial join to get the OID value of the non sliver polygon that is closest to each sliver polygon.

Go back to your initial layer, add a new "temporaryOID" field and join by attribute the slivers'table to the initials'table. Update the temporaryOID based on the joined "not sliver" OID of the sliver polygons and the "not sliver OID" from the non sliver polygons.

Run the dissolve tool.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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