In Part I of this third lesson we discussed ways to use type effectively as labels. In this part of the lesson you will learn how to exert greater control over the appearance and placement of text labels. We begin with a concept gallery item.
Learn more about text effect customization in the Concept Gallery.
A. Text Effects
In the previous part of this lesson you learned about type characteristics that can be used to differentiate features and create visual hierarchies. Text effects can be used to establish separation between text and the features underneath. Some effects are usefully created as global properties of all the dynamic labels in a layer, which will be demonstrated here. Other effects may be needed on just a few labels. Steps to add effects to individual labels follow the section on converting labels to annotation.
Here we will create halos around the streets layer labels that are the color of the borough of Bellefonte. As the concept gallery item on Text Effect Customization points out, halos the color of the background behind labels are useful to break the lines of the features that the labels come in contact with. This makes labels legible without having to make them large, bold or otherwise too high in the visual hierarchy.
- In your practice map document, open the Label Manager and make sure there is a check mark next to the streets layer, and that it is using the attribute STNAME in the Label Field.
- Select one of the label classes. In the Text Symbol box, click the Symbol button and then the Edit Symbol... button.
- Click the Mask tab and then click the Halo radio button. Notice that the default halo is white and 2pts thick.
- To match the halo color to the color of the borough, click the Symbol button and change the Fill Color . You may need to determine the exact color you are using for the Bellefonte polygon by going into the properties of that symbol first (via the Symbol Selector).
- Click OK to dismiss the windows.
- Repeat these steps as needed for the other label classes.
If you are using a different polygon color for the borough that is a different color from the surrounding townships, then you will notice that the halos you just created are visible on the labels outside the borough. One way to prevent this is to create a label class for those labels in the borough and another for the labels outside the borough and to symbolize them differently. Another solution - which will be demonstrated in the next section - is to convert the labels to annotation and edit them individually. Yet another solution is to use the Feature Outline Mask tool in the Cartography toolbox (available only in ArcInfo; see the Try This! section).
If you have access to ArcInfo, you have access to the Cartography tools in the ArcToolbox. Use the Feature Outline Masks tool to perform variable depth masking, a technique to mask data from one or more layers while allowing other layers to remain visible (rather than using a halo that masks all layers below). See the ArcGIS Help topic on Using Masking to create and use a masking layer.
Another text effect you may be interested in is to create a dropshadow:
- Open the Label Manager and select a label class of one of the layers.
- In the Text Symbol box click the Symbol button and then the Edit Symbol... button.
- Click the Advanced Text tab. Change the Shadow color to 20% gray, the X Offset to 1, and the Y Offset to -1.
- Click OK to dismiss the windows.
Notice that shadows don't separate the labels from the streets as well as the labels with halos, so don't use dropshadows as a method to break lines of other labels, but they are effective stylistically if you want a label to appear as if it is floating above a surface.
B. Converting Dynamic Type into Annotation
From Esri's GIS glossary, annotation in ArcGIS is "text of graphics that can be individually selected, positioned, and modified. Annotation may be manually entered or generated from labels. Annotation can be stored as features in a geodatabase or as map annotation in a data frame." The labels we created using the Label tool are annotation text (and stored in the map in the default annotation group). As we learned in Part I of this lesson, the labels created dynamically using the Label Manager are useful for creating a consistent style across a layer, but cannot be edited singly. It should be obvious then why we might want to convert labels that were created dynamically into annotation.
- If you have not already, label the streets layer in your map by STNAME.
- Make any font, color, size, or style changes that you want applied to all street labels. Once the labels are converted to annotation it is much more difficult to change these text properties as a group.
- In the Table of Contents, right-click the streets layer and choose Convert Labels to Annotation... from the context menu.
- In the Convert Labels to Annotation window that opens, specify: Store Annotation: In the map (streets Anno) and Create Annotation For: Features in the current extent. Also make sure a check mark is in the box that reads: Convert unplaced labels to unplaced annotation.
- Click the Convert button.
This process converts only the labels visible in the current map extent and stores them in the .mxd file as an annotation group class (to see this, open the Data Frame Properties and click the Annotation Groups tab). The annotations will turn on and off with the layer but are no longer generated as an attribute of the layer. In fact they will remain on the map even if the originating layer is removed. If you right-click on the streets layer in the TOC you will also see in the menu that there is no longer a check mark next to Label Features. If you were to check Label Features again you would end up with two sets of labels: one that is dynamically created from the features and the second that is the annotation. This also means that if you ever want to go back to the dynamic labels to make global changes you can simply delete the annotation group (by removing the group from the Annotation Groups tab of the Data Frame Properties), and then turn the dynamic labels on again (but you will then lose any individual changes made to labels after they were converted to annotation).
- The street labels are now individually editable. Select one (using the Select Elements tool). It will become highlighted by a dashed cyan box. Move your cursor over the label. Notice that the cursor icon changes. Click and drag the label to a new position.
- To open the properties of the individual labels, double-click one of them. Within this window you can change what the text reads, the font characteristics, and alignment. If you click the Change Symbol button you can access all of the effects settings that we worked with above.
- Suggestions for edits to the streets annotation text:
- Delete or change the color of the noticeable label halos outside the Bellefonte borough.
- Optimize the placement of the street labels, keeping all labels about the same distance away from their feature, on top of the street they label, but not covering any of the streetlines, and avoiding overlap.
- Delete unnecessary repeats in the labels.
- Using the Overflow Annotation window (which should have popped up after converting to annotation), right-click one of these labels and choose Flash Feature to see if it is a street that has gone unlabeled. If it is, you may want to choose Add Annotation from the menu. If it is a repeat, you can delete it. (If you do not see the Overflow Annotation window or closed it, you can access it again via the View menu).
The steps above describe the convert to annotation process while in either the Layout or Data View. But remember that if you are in the data view and switch to the layout view, you must "focus" the data frame to be able to select a piece of annotation text. Do this by double-clicking the data frame within the view area.
C. Text Effects, Part 2
Text effects can be done either on dynamically created labels or on annotation text. In section A we created halos on dynamic labels so that all features in that layer or label class were affected. Here we will create effects on labels after they were convered to annotation. There is a class of effects that are best used on annotation rather than dynamic labels - callouts (or leader lines). These are lines or boxes that connect labels to their features. They can be simple arrows or boxes that look like dialog in a comic strip. Cartographic convention suggests that callouts be used as a last resort, when label placement is highly obstructed or dense. I will demonstrate using callouts with labels for the schools layer.
- Pan your map slightly northwest to the town of Wingate (look for the Wingate Elem. or Bald Eagle High School labels). In this one small area are four schools and a state police barracks.
- If you haven't done so, turn labels on for the schools layer and convert them to annotation.
- Using the Select Elements tool, click and drag the school labels away from their points so that all of the labels are legible. Use the Identify tool if you lose track of which feature is which.
- Open the Properties window for the Bald Eagle Area Head Start. Click the Change Symbol... button, then the Edit Symbol... button and then choose the Advanced Text tab.
- Click the Text Background checkbox and then click the Properties... button.
- Look at the choices under the Type: drop-down menu. Select each to see how the Editor options change.
- Choose Line Callout from the list. Leave Gap and Leader Tolerance as default. Uncheck the Border checkbox. Leave the default settings for Style and Margins unchanged. Notice that Leader, Accent Bar, and Border all have Symbol buttons. Clicking any one will take you to the Symbol Selector window you have seen many times. Click OK to dismiss the windows.
- Notice that in addition to the dashed cyan bounding box, there is also a cyan anchor. Click and drag the label to a new position, and notice that the anchor remains unmoved.
- Move your cursor over the anchor. Click and drag it to the school point symbol.
- Create different callouts (Balloon and Simple Line) for the other three school labels. Experiment with the settings and options.
D. Creating a Custom Marker Symbol for a Label
In this section we will see how to use symbols for labels, as well as how to import a picture to use as a symbol. ArcMap can import picture files in two formats (BMP or EMF) for use as marker symbols. EMF files are stored as vector data and will therefore scale better and remain clear. You can use any software package that exports these formats to create a picture.
Often larger roads that connect towns (or states) on reference maps are labeled with route numbers. The streets data that I supplied for you in Lesson 2 does not have route numbers as an attribute of the data. So for this section of the lesson you will need to download more data, which you can use for the final map. It contains a "padot_stateroads" shapefile (which does not include local roads), and a picture file for one of the route symbols you may use (more information on the road data layers below).
Importing the marker symbol:
- Download the PA State road data (7.3 MB). In addition to the state roads data and the marker symbol for this example, this download also has a "buildings" and a "parcels" shapefile which you can use in your final map (although you do not have to).
- Click Customize > Style Manager. In the Style Manager window, expand the folder named for your login id.
- Click on the Marker Symbols folder. Move your cursor into the right hand pane and right-click.
- Choose New > Marker Symbol from the context menu.
- In the Symbol Property Editor window, change the Properties: Type: drop-down menu to Picture Marker Symbol.
- Navigate to your State_roads data that you just downloaded. Change the Files of type: drop-down menu to Enhanced Metafiles (*.emf). Choose keystone.emf and click Open.
For those of you who don't know, Pennsylvania is nicknamed the Keystone state. It was in the middle of the original thirteen colonies. PA state road numbers are signed inside keystone signs.
- In the Symbol Property Editor, change the Size: to 16pts. Click OK.
- Back in the Style Manager window, name the new symbol keystone. Close the Style Manager.
Labeling with the marker symbol:
You can label with a marker symbol using the Label tool or via dynamic labeling. The steps here lead you through the dynamic labeling and converting to annotation, but if you have just a couple of roads you want to label with the route numbers, you can use the label tool and save yourself some steps.
- Add the padot_stateroads shapefile to your practice map.
- It might be useful to turn off layers you aren't labeling here, like the points layers. Also temporarily turn off the streets layer to avoid confusion with the padot_stateroads layer.
- The easiest way to create label classes that match the different types of routes is to create symbology classes. Go into the symbology tab of the layer properties for the padot_stateroads layer.
- Choose to show unique values (under Categories), and use TRAF_RT_NO as the value field for symbolizing the layer. Click Add All Values and uncheck the box next to all other values. At this point we are just focusing on labels, so it is not important to design the road symbols on this layer. Click OK.
- Open the Label Manager. Place a check mark next to padot_stateroads.
- Select the text padot_stateroads so it becomes highlighted and the label class options appear.
- With check marks next to all the symbology classes, click the Add button to make these also the label classes. Select Yes to overwrite the current label classes.
- Click on the PA label class in the left window so the labeling options appear.
- In the Text String field, set Label Field to ST_RT_NO.
- In the Text Symbol field, click the Symbol button.
- Scroll down the list and choose U.S. Route HWY. Click the Edit Symbol button.
- In the General tab of the Editor window, change the Horizontal Alignment to Center.
- Click the Advanced Text tab. Notice the Text Background box is checked. Click the Properties button.
- Click the Symbol button. At the top of the list, choose your keystone symbol (if it is not at the top, check at the bottom).
- You may need to adjust the size of the symbol and/or the text in the symbol so they work together to your liking. 16 pt for the symbol and 6 pt for the text seem to work, but you may choose differently. Click OK to dismiss the windows to get you back to the main Label Manager window.
- In the Placement Properties field, click the Horizontal radio button so the symbols remain upright in the data frame.
- Click on the US label class in the window at right so its labeling options appear.
- Repeat steps 9 through 16, except do not change the background symbol to the keystone symbol in step 13.
- If you are showing interstate 80 on your map, Click on the I label class in the window at right so its labeling options appear.
- Repeat steps 9 through 16, except in step 11 choose the U.S. Interstate HWY symbol, and do not change it in step 13.
- Click OK to dismiss the Label Manager window. Labels should appear.
- Once you are satisfied with the global properties of the labels, right-click on the padot_stateroads layer in the TOC and choose Convert Labels to Annotation from the context menu.
- Store annotation in the map and create annotation for Features in the current extent. Click on Convert.
- Now the labels are individually editable. Reduce duplicates and unnecessary route labels, and determine placements that communicate to the map user where the routes enter and/or exit the borough.
Now, how are you going to handle the two different street data layers? You have the streets layer that you downloaded at the beginning of lesson 2, and the padot_stateroads layer that you downloaded here. This is a characteristic issue in working with GIS data for cartography. The several attributes you want for a data set are not available from one source. So you get two (or more) different datasets and have to sort through what you want from each.
You have a couple options available here, some of which depend on the scale map you plan on producing. You could simply use either one of the layers and not the other. The streets layer has all roads included but no route numbers. The padot_stateroads layer has route numbers but no local roads. You could use the streets layer for the symbolization and most labels and the padot_stateroads layer just for the route number labels. Or you could use the streets layer for the local roads and their labels, and the padot_stateroads layer for the other roads and their labels.
What you decide is up to you. But if you decide to use labels from a layer that you are not symbolizing (e.g. the streets layer for the symbols, and the padot_stateroads layer for the route number labels), then you need to make sure that, first, the labels are annotation so they are no longer connected with the data layer (we did this in step 21 above - or if you used the label tool they are automatically annotation text), and second, make sure the labels' annotation group is not associated with the data layer you will not be using. To do this second item, follow the steps below.
- Open the Data Frame Properties, and go to the Annotation Groups tab.
- Select the padot_stateroads Anno Group Name, and click the Properties... button.
- In the Associated Layer drop down menu choose the streets layer. Click OK to dismiss the two windows.
- Now the route number labels from the padot_stateroads layer are associated with the streets layer. Turn the streets layer and the padot_stateroads layer off and on to confirm this.
- Turn the padot_stateroads layer off and keep the streets layer on.
E. Apply These Topics to Your Map
- If you used a practice map, save it if you want. Then open your reference map document.
- Look over the labeling. Would your map benefit from the skills you have just learned? Take some time and experiment with the ways to label and the different text effects, but remember the purpose of the map. Don't create lots of effects simply because you can, make sure that your choices add to the effectiveness of the map.
F. Save the Map Document
You have just completed Part II, which dealt with type and annotation. In Part III, you will create custom, multiframe layouts and add marginal map elements.