Maps are a fusion of art and science, presenting complex geographical data in a way that is both visually appealing and informative. Cartographers use maps to convey a story, drawing attention to important information using carefully crafted design choices and curated map elements that engage the viewer. Although cartographers employ a variety of specialised techniques to present this meaningful information on a map, one of the simplest, yet most effective methods is through map labels.
Quite simply, map labels are symbols or texts strategically placed at specific locations on a map to identify important geographical features, locations, or areas of interest. To a map viewer, labels are a quick and easy way to know exactly what is shown on a map. To a map maker, however, the task of creating labels is not often quick and generally isn’t easy. This is especially true when there are a large number of labels that need to be placed, or when labels need to follow complex paths such as roadways, rivers, or trails. Map-makers must also consider the issue of label crowding and collisions, ensuring labels are not overlapping each other, covering or distracting from other important features of the map. Combined, these challenges can be a significant time-sink in the map-making process, requiring both time and effort on the part of the cartographer.
Let’s start with our unlabelled map. We have taken a collection of openly available geo-data depicting the small mountain town of Ouray, Colorado (home of National Geographic Cartographer and last month’s Avenza Cartographer Chronicles feature, Mike Boruta). We have stylized the data to show rivers, parks, streets and trails all throughout the town, but we feel labels would help a user to better understand the information being shown. We are going to approach the labelling process in a few different ways.
Manual Label Placement with the MAP Tagger Tool
For small labelling tasks, where a map maker might need to place only a handful of precisely located labels, the MAP Tagger tool is perfect for the job. MAP Tagger allows us to configure a basic set of options that control the character style of our label as well as general label placement rules. From there, we can simply click on a map feature and have the tool automatically detect and apply a label from attribute information contained in the selected layer. As we have direct control over the placement of every individual label, we can be extremely precise in choosing label placements that work for our map. Best of all, the tool automatically detects and applies text pathing for line features, meaning text labels can follow the form of any road, river, trail in your map!
When working with a small number of map features, the MAP Tagger tool is often just what you need to add well-placed labels to your map. For larger labelling tasks, such as our Ouray map, where there are many layers and several different features to be labelled, a manual approach such as this would be very time-consuming. Instead, we need to implement a more automated, batch labelling technique to speed-up the map-making process.
Batch label placement with the Label Features Tool
When you are working with several map layers, or have a large number of geographic features that each need to be labelled, it can be more efficient to create your labels all at once. The Label Features tool comes built-in with MAPublisher, and can handle batch labelling of map features with only a few clicks. The tool is designed similarly to MAP tagger, and automatically populates the map with precise, path-aligned labels, while offering the flexibility to define unique character styles for each map layer.
Taking a look at the tool, we were able to quickly generate over a hundred labels, for every road, trail, river, and park layer in our Ouray map. By nature, the tool will present you with a large number of labels for each feature, allowing us to examine and choose the labels we wish to retain and remove those that we don’t. With a little bit of clean-up to remove those extra or unwanted labels (see the animation below), we can already see our labelled map is coming together!
The Label Features tool is great for getting a head start on large labelling projects, but you might notice that the output of the labelling tool still requires some manual intervention to clean-up the output. For example, notice how “4th Street” and “5th Street” labels are repeated several times over the length of the street, with some labels colliding with others to create an overlap. This is a common problem in many labelling tasks and is due to the way our input data is structured. The dataset we obtained presents each road in the town as a line, but rather than present each road as a single continuous feature, it breaks up each street into several linked segments. Although this can be corrected with manual editing, it can still be time-consuming when working with a high number of labelled features. To avoid this, we need a method of achieving smarter batch label placement that can detect and reduce instances of label collision or redundancy.
Fortunately, we have one last trick up our sleeves that makes even the most complex labelling tasks a breeze. We can use MAPublisher LabelPro for collision-free, rules-based label placement.
Better Labelling with MAPublisher LabelPro
The MAPublisher LabelPro add-on allows the user to customize a wide variety of enhanced labelling options that result in smarter, more efficient label placement. LabelPro comes with a powerful purpose-built labelling engine that handles not only label placement, styling, and pathing, but also optimizes the grouping, fitting, and collision avoidance of labels to reduce crowding, avoid label overlap, and eliminate label redundancies.
Remember those overlapping labels we ran into with the Ouray map? With LabelPro we can set rules that treat street segments as contiguous features in a single line, meaning the labelling engine will efficiently place labels that are representative of the entire street, rather than just for each segment. The intelligent collision and fitting rules mean we can also prevent labels from overlapping each other or crowding the map, saving us time and effort by letting the tool handle precise label placement with minimal clean-up. By setting layer priorities designating certain layers as obstacles we can make sure our important labels are unobstructed, and other labels do not cross other features in a way that would confuse the map viewer.
With LabelPro, we can also create expressions to apply conditional character styles and rules based on attribute values in the data. In our map, we created label filters for “Residential Roads”, “Service Roads”, and “Alleyways”, allowing us to label (or not label) certain road types differently, even though they are all contained in the same “secondary roads” map layer. These are only a few examples of the robust collection of configurable rules and smart labelling options available to tackle even the most complex labelling tasks.
With our rules set up and all character styles defined, in very short order we could automatically generate labels for all rivers, roads, highways, parks and trails in our Ouray map. The smart placement with LabelPro means we spend less time manually correcting label placement and allows us to produce maps more efficiently and easily.
Data sources: All datasets were obtained from OpenStreetMap and the Ouray County Open Data portal.