how to dissolve "internal" polygon boundaries, or: arcinfo region coverages we miss you!

April 14 2011 | 7 comments
Categories: Map Data, Symbology

We've been scratching our heads over how to tackle this for some time, and are no more illuminated than when we started. I hope you can help. Our task is thus: how to draw a lake with a solid outer perimeter line and no lines between internal wetlands, shoals and shallows? 'Tis a relatively straightforward process with ArcInfo coverages and Regions, but alas, that is no longer a viable option for us. The datasets we use now are too large and the lack coverage editing ability in ArcMap crucial. Can cartographic representations solve our dilemma? Is it possible to create something like the attached without resorting to creating (and managing) duplicating duplicate geometries whose sole purpose is better looking maps?

You do not have to use Cartographic Representations to do this.  There is a Knowledge Base article on how to symbolize polygon features so that boundary lines between like polygons are dissolved.  The solution dissolves all boundaries so for those areas you wish to symbolise with a boundary you need to modify it as follows:

For each class, edit the symbol to give it an outline style and width.  Ensure that the outline width is double the final intended width (for reasons given below)

Now you need to modify the symbol levels.  In the solution, all fills are drawn on one level and all outlines are on another level but this has the effect of masking all the outlines whatever symbols you use.

Instead, you need to set symbol levels so that the fill and outline are alternate for each class.  For example, symbol levels 1 and 2 for one class, then 3 and 4 for another and so on.

The result is to alternate the fill and outline symbol levels so that outlines can be seen - though only half the width of the outlines will ever be seen which is why it is important to double the thickness.

Note, if you use a cartographic line symbol then only one half of the width of the symbol will be visible with this workaround and that may have consequences for the line style you choose.  The solution will work best for solid or dashed lines.

KB link broken posted by matt wilkie on Apr 18 2011 3:12PM
Thank you for taking the time to think about and answer our question.

The link to the KB article is broken, the title and href are reversed (and `&` encoded), it should be:

Knowlege Base article
it works! (with some work) posted by matt wilkie on Apr 21 2011 11:04AM
Thank for pointing Symbol Levels out to me. I've seen the dialogs and help topics before but hadn't dug into them because the examples are about cased lines and I didn't understand how the same principles could be applied to polygons.

The help page for v10 Dissolving polygon boundaries using symbol level drawing is much easier to follow than the knowledge base article. Although written for a v10 audience it looks like it could help v9.x users as well.

I did finally get Symbol Levels to work with our data without having to modify it (the data). There are few inconsistencies in the interface which add confusion, which I'll mention here (a.k.a. "watch for submerged rocks" and "here be dragons").

* Boundaries don't dissolve when marker or picture fills are used, only plain and gradient fills work

* Sometimes editing a symbol causes it to jump to the top of stack (under "Advanced > Symbol Levels") and it's join/merge state change to unchecked.

* Sometimes the advanced settings won't "taKe", try changing the stack order and various applications of enable/disable join/merge.

* After enabling Symbol Levels Occasionally the "apply color ramp" step (#17) doesn't work at all. The symbols stick with what is defined in the upper most Edit Symbol dialog. An Arcmap reboot seems to cure it.

A workaround for using marker/picture fills, dissolving all internal boundaries, and drawing outermost perimeter of all objects ("ordinary high water mark" in the attached data) is to:

* add the layer a second time in the TOC, below the marker/pic fill layer,
* Use "Single Symbol", plain fill, enable Symbol Levels, do the same double layer trick as above under advanced symbol properties
* and enable both Join and Merge checkboxes
* another bug here: sometimes the []Merge box is not enabled until after you go to advanced symbol properties editor.

Develop the habit of always doublechecking the stack order and the join merge properties. Just because you told it to do/not-do X doesn't mean it actually remembered.

So in summary, for *cartographic purposes* Symbol Levels with join & merge properties is a workable if quirky analog for Arcinfo Regions.

For analytical purposes like "query surface area of ordinary high water" you'll still need to do some geoprocessing and generate duplicate data.
thanks posted by Ken Field on Apr 26 2011 11:28AM
Thanks for the additional comments on using the workaround for getting the symbology to work for you.
Don't show internal boundaries, or: Arcinfo Region posted by matt wilkie on Apr 26 2011 11:52AM
I've cross posted our dilemma and evenutal solution at http://gis.stackexchange.com/questions/8571/dont-show-internal-boundaries-or-arcinfo-regions-we-miss-you with pictures and a link to a map package with the solution embedded.
thanks (again)! posted by Ken Field on Apr 26 2011 12:05PM
Matt, you've done a good amount of work on this solution. We hope others can benefit.
Dissolve to get boundary posted by Jeremy Crowley on Mar 27 2014 1:51PM
I was working on a similar problem and just figured out a solution. I had a map of surface geology (hundreds of polygons) and wanted to get the map boundary to use to identify the map for other analysis, I just added a new field "Dissolve" to the attribute table, did the field calculator and entered "Y" for all the polygons, then used the dissolve tool on the "Dissolve" field.
No need to add or calculate a field posted by Aileen Buckley on Mar 31 2014 12:20PM
I am pretty sure (because I just tried it) that you will also get the same results by not selecting any dissolve field (note that it is optional). Then you would just get a single poly for all of the polys in the feature class. This saves you from having to add and calculate a field.