labeling a complex web of rivers
My river feature is a cartographer's #### of hundreds of crossing lines (see enclosed image). It is a line feature, but lines are broken at each node; moreover they have no name attributes, and they are not divided into major and secondary rivers. I have to label a few dozens of them, guessing their names from paper cartography. What is the fastest way to do it?
1) by hand
2) joining the sections composing the river I'm going to label, then labeling it
3) selecting the sections composing the river, adding the name to their attribute entries and then using Maplex to label them all at once
Mapping Center Answer:
In the absence of a name attribute, and if you do not have any other attribute that you can use to identify all the segments of a single river, your fastest solution is probably going to be "by hand" as you say. If you had one attribute that identified each segment as part of a particular river, then you could use the Dissolve tool to make all of the segments into one river. We have found this to be common practice as the first step for labeling rivers as well as roads. While this "dissolved" feature class is used for labeling, you might still use the "undissolved" feature class for symbology and analysis. But it sounds like you cannot take this approach due to the lack of attributes.
On the other hand, since you only need to label a few dozen, it would probably go pretty quickly to do this by hand. First add a name attribute, and a size attribute, and while you are at it, you could add a label_size attribute. Select all the segments that make up one river with the same name and the same symbol size on the map, as well as the same size label on the map. Use the Field Calculator to populate the attributes for the name, whether it is a "major" or "secondary" river (the terms you used)*, and a size class for the label. Continue doing this for all the rivers you have to label. I am guessing that those you do not have to label will be the smaller tributaries. Assign those a size as well -- it might be the same as the "secondary" rivers, or it might even be smaller.
Then do the dissolve.
Copy and paste the feature class in your table of contents. Set the symbology of one of them to Categories - Unique Values and set the Value field to your size attribute. Now you can set each of the size classes to varying line widths. You will use the other copy of the rivers feature class to do the labeling. Since you already have the streams drawn, set the symbology for the feature class you are using to label to Features - Single Color and set the color to No Color so that these features are not drawn.
Now, in Label Manager, use the label_size attribute to create unique label classes for this feature class. Set the parameters for one of the label classes. Copy and paste them to the other label class or classes and change the label size (and any other label parameters you think you need to change.)
This is a technique we use often for labeling streams, and as I said, roads. There is a complete write up as well a associated illustrations in the bottom notes of the "One Minute Cartographer" presentation from last year's User Conference. You can download the PDF with those bottom notes from the Other Resources page of Mapping Center.
Note: I can also conceive of a DEM processing method that might help you at least get the size attribute, but it seems like it would take more time than this, and it would not be helpful in populating the name and label_size attributes.
If you would like to post a comment, please login.