Friday, February 01, 2008 1:30 PM -
cfrye
Tip for creating annotation for complex maps
Complex maps such as topographic maps present several significant challenges for setting up labeling rules and creating annotation. The first challenge is that these maps typically have many layers and types of features, requiring map authors to create and manage numerous label classes. Second, these layers may have a high density of features, which means that automated labeling for these maps requires loading all the data into the labeling engine and making your computer to work fairly hard. Third, some labels on the map are very important and should be placed optimally (e.g., labels for cities or very important landmarks); some labels can be placed with some flexibility (e.g., placing river or stream names along lines; there are many candidate positions along a given line); and some labels are just less important (e.g., labels for contours, which must yield to the other information on the map).
Producing annotation is a requirement for most complex maps because some labels (especially contours) need to be masked, and the masking tools require annotation as the input. Also, you can perhaps see better performance by producing annotation for complex maps, as waiting over 10 seconds to a minute or so for each label redraw quickly gets tedious. However, there is a trade-off, as we learned that it wasn't worth the effort to fine-tune label weights
and priorities for complex maps (the user interface works well for
less complex maps, but is very hard to work with for complex maps).
So, we were stuck until we realized that we could produce annotation in batches, and then we could focus our efforts for setting weights and priorities more efficiently. Specifically, we found it was much easier to produce annotation for our maps in three batches:
- The most important features These features need to have consistent and prominent placement for their labels. Further, we didn't want to risk accidentally not placing labels for these features. So we set up label classes in our layers just for these features. Sometimes it was easy to set up SQL Queries on our label classes for these features using existing attributes, sometimes we needed to add a new attribute specifically for this purpose during map production. We found that these labels also had different rules with respect to which types of features they could overstrike, so that meant we set up special weights and priorities for this batch of annotation. We found that we always needed to produce this batch of annotation first. In fact if you have a certain few labels that are most important, go ahead and create annotation for them first. The idea is that once annotation is created, it's position is locked (i.e., Maplex cannot shuffle or fuss with these labels, they can only act as barriers to additional annotation production runs). It's difficult to visualize which labels these are in a small graphic, but these are the dozen or so pieces of text on a given map that have to be located well.
- Most of the remaining features Next, create annotation for every other feature type except contours.
- Contours The labels for contours are left for last for two reasons. First, contour data is vertex-rich and therefore is a huge memory hog. Second, contour labels can almost always be fit into whatever space is left over on the map without breaking convention.
Tips for labeling contours:
- If you are creating annotation for a large map or a large contour dataset, consider using the Simplify Line tool on the contours first. The idea is to remove perhaps 40% of the
vertexes, but not to significantly change the shape of the contours.
Use the Point Remove method on the Simplify Line tool.
- If you are labeling only index contours, then make sure your label class's SQL query excludes the intermediate contours, or create two contour layers, one for intermediate contours and one for index contours; and turn the intermediate contours off when labeling or creating annotation for the index contours. This will prevent the intermediate contours from being loaded into the labeling process (i.e., four times as much data as you are labeling from being unnecessarily loaded into the labeling engine).
The main idea of this blog entry is that your annotation production workflow can be broken into strategic batches, each with their own priorities and weights. This makes it possible for you to better control the placement of labels for certain features, and to break the annotation production process into more manageable chunks for your computer to process.