Figure-ground: Feathering

By Aileen Buckley, Mapping Center Lead

Feathering - Results 2

In a previous blog entry, I discussed some of the major design principles used in cartography, including figure-ground organization, which is the spontaneous separation of the figure in the foreground from an “amorphous” background. Cartographers use this design principle to help their map readers find the area of the map or page to focus on. One way to promote figure-ground organization is to use a “feathering” effect in which the edges of the map are softened and appear to blend into the background. The way this is done in ArcMap is to use a buffered vignette and the advanced drawing setting for transparency. Note that, as described, this method requires an ArcEditor or ArcInfo level license; however, a user comment to this blog post describes how you can achieve this effect with an ArcView level license as well.

Feathering - Both

The map on the left has poor figure-ground organization. The map on the right uses feathering to promote this important design principle.

In the example below, the “figure” polygon is Bangladesh which I have emphasized with a feathering effect.

Feathering - Results 2

This example also shows how well this technique works when you want to provide some detail outside the area of interest – a nice alternative to simply clipping the map extent to the figure. For the map of Bangladesh, this allows you to see that the country as a whole is in a low-lying area, but its major rivers are being fed by runoff from mountains to the north and east.

Four steps are involved to create this effect:

  1. creating buffers for the vignette,
  2. adding a “universe polygon” to the buffer vignette feature class,
  3. adding and calculating the transparency attribute, and
  4. symbolizing the buffers using transparency.

Creating buffers for the vignette

To get an initial idea how far you want the “feathering” to extend, use the Measure tool. For my map, I decided that I wanted the feathering effect to end a small distance from the furthest extent of the feathering to the edge of the page – that distance is about 100 kilometers.

Feathering - 100 Km

TIP: You can also use the Multiple Ring Buffer tool in the Analysis toolbox. Using the Buffer Wizard instead is a little faster, especially if you want to experiment with the number of buffers and the distances.

To add the Buffer Wizard tool to your ArcMap session, click Customize on the top bar menu and then Customize Mode. In the “Show commands containing:” area, type “Buffer Wizard”. Click on the Buffer Wizard tool then drag and drop the tool onto any toolbar displayed in the ArcMap window. Click on the tool to open it.

  1. On the first page of the wizard select the feature class that contains a polygon for the area that you want to be the “figure”.Feathering - Buffer Wizard 1
  2. On the second page, choose the third option to create buffers “As multiple rings”, and set the number of rings and distance between rings. Note that the more rings you add, the smoother the effect but more rings will also slow down the drawing time. Generally, between 10-20 buffers is sufficient, depending on the total distance you want to use for the “feathering”
    .
    Feathering - Buffer Wizard 2
  3. On the third page, choose the options to:
    • dissolve buffers between barriers,
    • create buffers so they are only outside the polygon,
    • save the buffers in a new layer, and
    • specify the name and location of this new layer.

    Feathering - Buffer Wizard 3

Adding a “universe polygon” to the buffer vignette feature class

Notice that you can see outside the extent of the last buffer. What you need to do is add a polygon to the outside of the buffers – we’ll call this the “universe polygon”. There are many ways that you can do this – I find that this is one of the easiest:

  1. In Layout view, double click the data frame to “focus” it.
  2. Using the New Rectangle tool on the Draw toolbar, draw a graphic that fills the extent of the page.
  3. Switch to Data view and make the rectangle a little larger than the page extent using the handles to pull box out on opposite corners.
  4. Switch back to Layout view.
  5. Right click the data frame in the table of contents and click Convert Graphics to Features.
  6. Name the output feature class MapExtent and check the option to “Automatically delete graphic after conversion”.
  7. Use the Union tool in the Overlay toolset of the Analysis Tools toolbox with the buffer feature class and MapExtent as the input features, and name the output feature class Temp.Feathering - Union
  8. To remove the inner polygon, use the Erase tool in the Overlay toolset of the Analysis Tools toolbox with Temp as the Input Features and the polygon for the area that you want to be the “figure” (in my case, Bangladesh) as the Erase Features, and name the output feature class FeatheringEffect.
    Feathering - Erase
    The result will include the buffers and the universe polygon but not the inside polygon.Feathering - Erase Results
  9. Remove Temp from the table of contents.

Adding and calculating the transparency attribute

Now you need to add an attribute and calculate the transparency values.

  1. Right-click the FeatheringEffect layer in the Table of Contents and click Open Attribute Table.
  2. Click the Table Options button and click Add Field.
  3. Name the field “Xpar” which is an abbreviation for “transparency”.
  4. Click the Type dropdown arrow and change the field type to Long Integer.
  5. Click OK.
  6. Right-click the Xpar field heading and click Field Calculator.
  7. Enter the following:
    ((100 * [FromBufDst])/the largest FromBufDst value])
    This calculate statement will calculate transparency values that are a function of the distance so that the buffers farther away are less transparent. Click OK.
  8. Click on the box at the very left of the first record in the table (the one with an FID of -1) to select the “universe polygon”. Use the Field Calculator to calculate the Xpar value as 0.
    Feathering - Calculate Xpar

Symbolizing the buffers

  1. Right-click the FeatheringEffect layer in the table of contents and click Properties.
  2. Click the Symbology tab.
  3. In the “Show:” area, click Features > Single Symbol.
  4. Click the Symbol patch to change the symbol. Change the Fill Color to White and the Outline to No Color.
  5. Click OK to close the Symbol Selector dialog.
  6. Click the Advanced button next to the symbol patch and click Transparency.
  7. Select Xpar as the field that you will use to vary the transparency of the features.
    Feathering - Xpar
  8. Click OK.
    Feathering - Near Final esults

If you want to add any other features, be sure to place them under the FeatheringEffect layer in the table of contents. If you have text that falls within the feathering area and you also want it to be affected by the feathering, convert it to annotation and place it under the FeatheringEffect layer as well (otherwise the text will draw over all the layers including the FeatheringEffect layer).

Feathering - Final Results

Now all that is left to do is symbolize the layer. The result is a subtle fading out to the background.

This entry was posted in Mapping and tagged , . Bookmark the permalink.

Leave a Reply

17 Comments

  1. cameron.bouchard says:

    This vignetting looks great, I will be applying this to my maps more often.
    If the point is to highlight Bangladesh, wouldn’t giving it the topo and obsuring the topo from the other areas be appropriate? You are applying a different method in the examples above and I am wondering why?

  2. abuckley says:

    Actually, the topography IS being shown! There is the same amount of transparency for Bangladesh as for all other parts of the map. It just happens to be the case that Bangladesh is VERY flat. The elevation range (according to SRTM data) is about –45m to only about 978m (147ft to 3208ft). These low elevations are accentuated because of the country’s situation near the world’s highest mountain system, the Himalayas to the north with over 100 mountains higher than 7,2000m (23,600ft). You might be able to visualize this better if you download the map (2.5MB) I made of the area – you can access it here:
    http://downloads2.esri.com/MappingCenter2007/blog/Nov11Images/Bangladesh_Elevation.zip.

    This map was created using SRTM data. The hillshade was created using the default options, with a standard deviation stretch, n=2. The elevation tint was created using a color ramps from color ramps 2.0 from the ArcGIS Resources > Styles page here on Mapping Center. The source for the countries is the dtl_cntry data on the Esri Data and Maps DVD in the World folder.

  3. ngouk says:

    It would have been nice to know that you need ArcInfo to follow these steps. Waste of time.

    • abuckley says:

      It is true that you need an ArcEditor or ArcInfo level license to achieve this effect. To help others, I have noted that at the outset of this blog post. Sorry I didn’t think to include it earlier to help save you some time.

  4. yppmark says:

    I’ve been playing around with this effect and its very nice. I was thinking it might be nice to add some colour photographs around my map in some of the white spaces and to try and convey some more information in the map. Is this possible what would be the best way to go about this?

    • abuckley says:

      Note that this method only works if you fade to a white background. But if you do have that, then this will also work with your photos. Note that you can use the Measure tool to determine what distance you want to make the buffers and what the units are. I just tested this and it looks really nice on the page. Thanks for sharing this idea with us!

  5. clthompson says:

    I’m assuming that the perceived need for ArcInfo is simply the use of the Erase function which is unavailable at either Editor or View. The the Multiple Ring Buffer script available at both View and Editor should be able to duplicate the effect that is described very easily with that tool. In fact, if you combine the use of the Multiple Ring Buffer script with the ‘clip to shape’ property you don’t even need to use the erase function at all to achieve this effect. I was able to replicate this effect by using the following steps:

    1) buffer the polygon that is the focus of the map using the multi-ring buffer tool, pick the number of rings you want and the distance of each ring. In fact, this is probably a better approach as you can probably create a better gradient for your transparency this way if you vary the width of your buffer rings from fine to wider as you get further from your ‘focus’ polygon. You can pick ‘outside polygon’ only to keep this from creating buffers inside your focus area.
    2) Start an edit session with the multi-ring buffer shape, copy and paste the focus polygon into this shape file so it ‘fills’ the doughnut hole
    3) Add a field for the transparency value in the multi-ring buffer feature class. Again, this is a user decision about how rapidly you want the transparency effect to take effect and what you want that gradient to look like. Set the inner most polygon value (this should be your maps area of focus) to 100 so this area will show through completely.
    3) Set your symbology so the polygon is a white fill with no outline, then set the transparency to to the field you created in step 2
    4) Open the data frame properties and on the ‘Data Frame’ tab, under clip options select ‘clip to shape’ and use the ‘specify shape’ button to pick the multi-ring buffer.

    Often the things that can be done using ArcInfo and ArcEditor can be duplicated and quite simply without that level of software. It just requires us to think a little more creatively about how to get the result we want.

  6. abuckley says:

    Thanks for the tip, cthompson. I updated this blog post to note at the beginning that users can refer to the instructions in your comment if they are working with an ArcView level license.

  7. fulfilledstraw says:

    Great write-up! Another trick to get around using the Erase tool is by “exploding” the feature after the Union by utilizing the Multipart to Singlepart tool. Simply delete the interior ring and you’re all set.

    • abuckley says:

      Good suggestion! We are also working on posting a tool that does this bit of processing for you so you would only need to set your data frame extent and then select the polygon that you would use to cut out the “hole”. Will get that up as soon as we can!

  8. dwotwell says:

    The brute force route is to just create an insanely large number of rings, add a field wherein you place a tag and dissolve all the outer rings to create a “universe” layer

  9. kuhlfreda says:

    This process worked very well for me, Thank you. I was trying to get a similiar look using a gradient fill ramp and seting the second color as ‘No Color’ but it didnt work. The second color or interior color always defaults back to white.

    • abuckley says:

      You are right — you cannot just set the second color to No Color — that is why you need to use the transparency option instead. It provides the solution you are looking for, but is perhaps not as intuitive as the No Color for the second color option. Perhaps you can create an Idea about this on ideas.esri.com.

  10. deedug says:

    This line of code does not work for me

    100-((100 * [FromBufDst])/[LargestFromBufDst_Distance])