Labels layers place text at desired locations in a map. We can add labels to maps for cartographic explication and clarity, or simply to provide technical readouts of attributes for features such as the names of towns or the lengths of road segments.
Labels are created by specifying a drawing on which they are based, with the labels component taking attribute data (like text fields to be used in the label) and geometry to position the label from the drawing's table. Labels can also be created from drawings which are, in turn, created from a query. We can create a new, blank labels component that is not based on any existing drawing. In that case, Manifold will automatically create a new, blank drawing, and that drawing's table, on which the labels component will be based.
The illustration above shows two labels layers in a map, one called Regions Labels and the other called Cities Labels. The labels for cities are created automatically from points in the Cities drawing. The labels for regions are created automatically from areas in the Regions drawing.
Labels are normally used as layers in maps, but a labels component can be popped open in its own window as well. There is no need for the drawing upon which a labels layer is based to also be a part of the map.
Please read the Drawings and Tables topics before continuing. The techniques used for editing labels are very similar to those used for editing drawings, so it is a good idea to read the Editing Drawings topic as well.
Labels take zero storage space. All the data for the labels stays stored in the table that powers the drawing on which the label is based. We can create as many labels as we want that all visualize data from the same drawing and table, using different styles for each such labels, without making the .map project file any bigger.
Labels windows can also include temporary layers that are other labels, images, or drawings. For example, a labels window may use a background layer that is pulled from an imageserver, such as a Bing, Google or OpenStreetMap server. Such temporary layers are lost when the labels window is closed. To permanently save a labels window with a layer structure, save it as a map using the Edit - Save as Map command.
Manifold provides two ways to add labels to a map, either automatically creating them for us or allowing us to add them manually.
Automatically, from fields in a drawing. If we have a drawing of cities as points, where each point has the name of the city in the drawing's table, we can automatically create labels for each city point giving the name of the city. Automatic labels are dynamic: Automatic labeling means that as cities are added or deleted in the drawing the labels for them will also automatically be added or deleted. If a city moves, the label for that city will move with it. If the city name changes in the table, the label text for that city also automatically will change.
Manually, by clicking into a blank labels layer with a label-creation tool. We can add a blank labels layer to a map and then click into that layer wherever we want to add a label. Most often we will add labels in point locations, but if we like we can add labels oriented to lines or to areas. Manual labels are static: We can delete them or move them or change their text, but we must do that manually. See the Example: Add Labels to a Map topic for an example.
In both cases above, labels layers are based on drawings and their associated tables. With automatic labels the drawing on which the labels are based will usually appear in the map. For example, a drawing showing cities as points plus a labels layer based on that drawing that shows the names of the cities. With manual labels, the drawing on which the labels are based usually won't appear in the drawing. For example, if we add labels for the Atlantic Ocean and the Pacific Ocean in a big map we won't also add the drawing layer that shows points that anchor the locations of those labels.
When labels are too close together, the system will clip, that is, has hide, some labels to prevent them from overlapping adjacent labels. As we zoom in and out and pan the view, labels will be dynamically clipped as needed.
Suppose we have a map with a Cities drawing layer that shows cities as points. The drawing's table gives the name for each city in a Name field. We can create labels automatically for each city.
Right-click onto the Cities drawing in the Project pane and choose Create - New Labels.
The Based on box automatically will be loaded with the name of the Cities drawing.
In the Text box, choose the Name field to use for the text of the label.
Press Create Labels. A new labels component called Cities Labels will appear in the project.
Drag and drop the new Cities Labels layer into the map. Labels will appear.
To format the labels layer, use the Style pane.
The default name for a labels layer based on the Cities drawing will be Cities Labels. We can specify whatever name we want in the New Labels dialog if we do not want to use the default. When a labels component is created based on a drawing it will automatically inherit the projection used by that drawing. If desired, the New Labels dialog allows us to specify a different coordinate system.
Positioning: Labels will be positioned at the location of points, aligned to and slightly offset from lines and approximately in the center of areas. Label positioning is dynamic: if we zoom into a drawing so that only part of an area is visible, the system will attempt to position the label for that area so it is visible. We can change the relative positioning of labels using the Style pane for labels. For example, we can offset labels for points so the labels are not drawn directly on top of points.
Suppose we have a map with a variety of layers in it. We want to add labels to the map manually. We do that in two steps: first we add a new, blank labels layer to the map, and then we click into that layer to add the labels we want. See the Example: Add Labels to a Map topic for a step by step illustrated example of the following.
Right-click onto a blank location in the Project pane and choose Create - New Labels.
Specify a Name for the new labels component.
The Based on box automatically will be loaded with <new drawing> to indicate a new drawing will be created.
Press Create Labels. A new labels component will appear in the project, along with a new, blank drawing and new table to support that labels component.
Drag and drop the new labels component into the map as the uppermost layer in the map.
Nothing appears since the layer is empty. But the lower layers will provide visual context so we can add labels in the desired locations.
In the main toolbar, choose the Create Point tool for the cursor mode.
Click into the map where a label is desired. The Info pane will pop open.
In the Info Text box, enter the text desired for the label. Press Ctrl-Enter or Add Record to create the label.
To format the labels layer, use the Style pane.
We can create labels aligned to lines or to areas by choosing the Create Area or Create Line tool instead of the Create Point tool
By default, all labels in a layer are formatted the same way. To enable individual formatting for each label, in the Style pane for the labels layer, click the New Field button to add a new field for hosting style override info and then check the Use style overrides box. When style overrides are enabled, in addition to specifying the text for a label as it is being created we can also specify the individual style for that label such as colors, font and font size.
Positioning: Labels will be positioned at the location of points, aligned to and slightly offset from lines and approximately in the center of areas. Label positioning is dynamic: if we zoom into a drawing so that only part of an area is visible, the system will attempt to position the label for that area so it is visible. We can change the relative positioning of labels using the Style pane for labels. For example, we can offset labels for points so the labels are not drawn directly on top of points.
Drawings can be created based on a query, and labels can, in turn, be created from such drawings.
Right-click onto the existing drawing in the Project pane and choose Create - New Labels.
In the New Labels dialog provide the Name desired for the new labels component.
The Based on box automatically will be loaded with the name of the existing drawing.
In the Text box, choose the field to use for the text of the label.
Press Create Labels. A new labels component will appear in the project.
Labels created from drawings based on queries will appear only when used as a layer in a map that contains at least one other layer.
To update the labels after any changes in source table data, choose View - Refresh.
If the query text is changed, we must run the query at least once after changing the text, so that any future refreshes of the labels component will use the new query text.
We can very rapidly use Style to create spectacular labels that combine text, graphics elements like enclosing boxes, and symbolic elements like icons. The illustration below shows a label. Labels can be used to create dramatic captions.
See the Style: Labels topic for details on formatting labels. See the Style: Label Placement topic for offsetting labels from their points.
Labels components are always based on a drawing, using the location of the points, lines or areas upon which each label is based to specify the position of that label, and taking the text for the label from some attribute field in the drawing's table.
The drawing on which labels are based can be an existing drawing that we intend to use in a map. For example, a drawing might show points at the locations of cities and we might also want to create labels for the name of each such city.
When using an existing drawing the labels are created based on the points, lines or areas in that existing drawing, being created at the locations of those objects and taking their text from the specified field for each object. If a new object is added to the drawing, then a new label for that drawing will be automatically created.
Sometimes we want to create labels by themselves that are not tied to an objects, like points, that we will display in a layer. In that case, when we create the labels component, Manifold automatically creates a new, blank drawing and associated table to support the new labels layer. We can then add the new, blank labels layer to our map. As we click on locations in the map to create new labels and enter the text for that label, a new object is created in the drawing that supports the labels layer with the desired text added to that object's text field in the table.
In both cases, the machinery behind labels is exactly the same. When labels are always created based on objects in some drawing, using attributes in some table, that makes it possible to manipulate labels in the same standard way using dialogs like the Transform dialog, to use SQL to alter the position or text content of labels, or to manipulate labels programmatically.
The illustration above shows a map that contains a Cities drawing with points and a Cities Labels layer created from the Cities drawing. It shows the drawing's table, called Cities Table, which contains the geometry for each point and a text Name field that gives the name for each city.
The same Geom field that specifies where a point should be drawn in the drawing also specifies where the label for that object should be located. In the example above, the Style pane has been used to specify an Offset of 7 points for the label, so it appears above the point.
The Name text field for the table provides the text for labels, such as Montlucon for the selected record. Selecting a record in the table selects the object for that record in the drawing layer and also selects the label associated with that record. Likewise, selecting either the label or the object in the drawing would also select the associated record in the table.
A labels component is based on a drawing. The label component's Drawing property specifies the name of the parent drawing for that labels component. The label component's FieldText property specifies the name of the field within that parent drawing's table to use for each label's text. When we create a new labels component Manifold automatically rigs up that infrastructure so the label component's properties point to the desired drawing and field. If we want to use a different text field or a different drawing, we can just change that in the Properties for the labels component if we desire.
Each label that appears in labels layer is derived from one object in the drawing, that is, one record in the drawing's table. The geometry field in that record specifies the location of the label. If the geometry defines a line or an area object, that specifies the orientation and positioning of the label as well. Labels will be positioned at the location of points, aligned to and slightly offset from lines and approximately in the center of areas. If we edit a drawing to move an object, the label created from that object automatically will also move.
The text that appears in the label will automatically be taken from the specified text field in the drawing's table. If we edit the text contents of that field, the text that appears in labels will also automatically change.
The geometry in a drawing tells the labels layer where to put the label, while a text field tells the labels layer what text to use for the label. We can diagram the relationship between labels and the drawing and table that power the labels:
In the diagram above we see the Cities Labels component open in its own window. An orange arrow indicates the Properties dialog for Cities Labels. We can see from the Properties that Cities Labels is based on the Cities drawing and that it takes its text from the Name field. The Cities drawing contains point objects. Each label appears at the location of a point in the Cities drawing. For example, the label for the city of Avord appears at the location of the point for that label. The text for that label comes from the Name field in the drawing's table.
We can create a map that has the Cities drawing as a layer and Cities Labels as a layer. That makes it easy to see how each label in Cities Labels appears at the location of the corresponding point in the Cities drawing.
The location of the points in the Cities drawing automatically specifies the location of the associated label. If we move a point in the Cities drawing the associated label in Cities Labels will also move.
For example, if using the techniques in Editing Drawings (alt-click the point, and then click it again to put it into edit mode) we move the point for the city of Avord in the Cities drawing, the associated label in Cities Labels will also move. If we have both the drawing and the labels component open in their own windows at the same time, when we move either the point object or the label the corresponding label or point will also move.
In the map we can see how moving the point will move the label as well.
Likewise, changing the text in the Name field in the Cities Table will automatically change the text used in the label. Suppose we change Avord to Harry as seen above (just before we press Ctrl-Enter to commit the edit).
The text used in the labels will also change, automatically being updated in the Cities Labels window as well as in the map window where Cities Labels is a layer.
When we create labels using an existing drawing we often do so because we want to provide a label for objects that are shown in the map. For example, we might want labels that show the name of each city next to the point for the city. Therefore, we often will show both the labels layer as well as the drawing on which that labels layer is based together in a map. But we do not have to do that if we do not want. We can show only the labels layer and not the drawing on which it is based.
On the left above we see a map with a drawing of French regions. Another layer in the map shows a drawing of centroid points for the regions. On the right above we have used the Centroids drawing to create labels positioned at the centroid of each region. Since our objective is to label the regions and to not clutter the display with centroid points, we have removed the Centroids layer from the map, showing only the labels created from the centroids. Labels can take their position and text even from drawings which do not participate in the map.
Why use centroids? Given that Manifold automatically tries to position labels for areas at the centroid of the area, why might we want to manually create centroids and then create labels from those centroids? We can do that to force labels to always appear at the centroid. When creating labels for areas, Manifold will dynamically position those labels so as many areas in view as possible are labeled. If the entire area is in view Manifold will try to position the label at the centroid, if that centroid falls within the area. If we zoom into the view so only part of an area is visible, Manifold will dynamically re-position the label to move it to the part of the area that is visible. If we do not want such dynamic repositioning to happen, we can first create centroids for each area and then create labels from those centroids.
At left above in the map we see a layer that shows all France as a single object (creating using the Transform pane's Merge: area (dissolve) template). The labels created from centroids also appear, conveniently labeling different regions of France without the clutter of region outlines. On the right we have added the Centroids drawing as a layer to illustrate how the labels take their position from the Centroids drawing upon which they are based.
Of course, in a cartographic composition like the illustration at above left we would not include the centroids. But sometimes when creating such a composition it is convenient to show the drawing from which labels take their position, so we can change the position of labels by moving the objects that specify their position. We can then remove or turn off the layer that shows those objects to reduce visual clutter for the final presentation.
For example, at left we have Alt-clicked the point that defines the Occitanie label and then we have clicked it again to enter editing mode so we can drag the point to a new location, more to the northwest. When we accept the edit, we see that both the centroid point and the label associated with it have moved to the new position.
Moving labels about by moving their objects is such a common task that Manifold allows a shortcut: instead of showing the drawing upon which the labels are based and moving objects around in that drawing, we can move the labels themselves and Manifold will automatically move their associated objects even though the drawing for those objects is unseen and not a part of the map.
At left above we have just the labels layer and the background layer of France. We Alt-click onto the Occitanie label and then click it again, just as we did with the centroid point in the drawing. Just as before, a big preview box handle appears that we can drag to a new location.
At right we see that when we accept the edit the label jumps to the new position. It seems that we have just picked a label for editing and have dragged the label to a new position. That is indeed the effect, but what has gone on behind the scenes is that when we dragged the label to a new position, Manifold was also moving the point that defines that label to the new position in the drawing.
All of the above effects are exploited when we create labels using their own drawing. Recall that at the beginning of this topic we read about two procedures to create labels, the first procedure to create labels for an existing drawing and the second procedure to create labels using their own drawing. When we create labels using their own drawing, Manifold automatically creates a blank drawing and associated table for us that the labels can use behind the scenes.
We can drag and drop the new labels layer into a map and we can thereafter work with that labels layer as in the last two illustrations above, moving labels about, editing their text and so on, without ever opening up the drawing or table that powers those labels. We can almost pretend that we are working with a "labels" layer that is its own independent thing without being based on a drawing. That is certainly OK to do as a matter of convenience, but we should remember that every labels layer is based on a drawing somewhere, even if that drawing is normally used in just a support role behind the scenes.
When creating labels for areas, the system will try to position labels at or near the center of the area, but will also move labels about to attempt to resolve conflicts with other labels or to keep labels in view when only part of an area is in view.
The illustration above shows the provinces of France as they were before the consolidation into a fewer number of provinces in 2016. Most provinces show their labels at or near the center of the area representing the province, with four exceptions:
Zooming further in we see how the label for Languedoc-Roussillon has moved to a more central position. Labels for other provinces have moved from their central positions to the edges of the areas, so more of the areas can be labeled.
Zoomed very far in, Manifold will attempt to keep as many labels visible as possible, moving labels for areas to the very edges of the areas.
The illustrations above show labels that are based on points or on areas. Labels can also be based on lines. When a label is based on a line, the label will automatically try to orient itself to the line upon which it is based.
We can add a line to the Cities drawing, as seen above.
In the table we add the text value Loire to the record that was automatically created when we added a line. We know, of course, that the Loire is a river, not a city, but for the sake of this example we will add it to the Cities table anyway.
As soon as we enter a non-NULL text value for the City field for that object, Manifold automatically creates a label using that text. It automatically appears as a label in Cities Labels and also in the Cities Labels layer in the map. Manifold will automatically align to their parent line labels that are based on lines.
The following example shows the process to create the Cities Labels layer used above with step by step illustrations. In real life the procedure is so quick and easy an experienced Manifold user could do it in seconds, with just a few mouse clicks.
We start with a project that has a drawing called Cities which displays data from a table called Cities Table. The drawing shows a selection of towns and cities in France.
Opening the map we see that the Cities drawing, the only layer in the map, shows points. We have used Style to apply a yellow fill color. The diamond shape used for the Point style is simply the square box point style with a Point rotation of 45 applied.
For less clutter in this example, we zoom into the map to show fewer points.
Opening the Cities table we see that each point represents a city in France, with the name of the city given by the Name field. A Geom field provides the geometry data to locate each point.
In the Project pane, right click onto the Cities drawing and choose New Labels.
The New Labels dialog launches with the Cities drawing automatically loaded into the Based on box and a suggested default name of Cities Labels, which we will use. The Text box is loaded with a pull-down menu of all fields in the drawing that contain data types from which labels can be constructed.
We choose the Name field, since that gives the name of each city.
Press the Create Labels button to create a new labels component. Like many Manifold dialogs, there is also an Edit Query button which we could have used to command the system to automatically write the SQL that would be used to create that labels component and then open it in a Command Window. That is a useful way of learning how to use SQL.
When we click the Create Labels button a new labels component appears in the Project pane.
We drag and drop the Cities Labels component into the map. Labels appear using the default format. In the illustration above, we have used the Style pane to change the font to Segoe UI Semilight in 9 point size. With labels displayed we can see we have zoomed into the heart of France's famous valley of the Loire, home to numerous chateaux and Loire valley vineyards.
Two of the Cities points, one for the city of Orleans just to the southeast of Châteaudun (spelled in this US-origin data set without a circumflex â accent over the a), and the second for the town of Bourges just to the west of Avord, do not have labels. Why not? The labeling engine for Manifold by default has clipped those labels, that is, has hidden them, to prevent them from being too close or overlapping adjacent labels.
If we zoom into the region near Avord so there is more distance between labels we see that the label for Bourges automatically appears.
Clicking off the Cities layer allows us to better see the labels. For examples of different formatting that can be used to style labels, see the Style: Labels topic.
We can offset labels created from points. Labels created from lines and areas are automatically positioned and cannot be offset. Using the Style pane we can drill down into the total Style button, and in the Position tab set an Offset of 5 with an Angle of 0. The angle specification means due North of the host point, and the number five means five points. See examples in the Style: Label Placement topic.
The result is that the labels are positioned five points directly above their host points.
Creating labels as shown above in this topic automatically creates labels all at once for an entire drawing, automatically taking the text for the label from some designated field. That is tremendously convenient, of course, but sometimes we would like to create labels individually, clicking at a spot in the map where we would like a label and entering the text for that label.
Creating any labels layer means using a drawing somewhere. The position of a label is taken from an object in a drawing, such as a point, and the text of the label is taken from a field for that object in the drawing's table. If we want to create labels at a few designated locations in a map, one way or another we will end up creating a drawing with objects where we want the labels to be and a labels component that automatically shows labels for those objects.
Creating a new labels layer with a drawing to serve it is such a frequent task that Manifold can do that automatically for us. We create a new Labels component and choose <new drawing> in the New Labels dialog, and Manifold will automatically create a drawing with a text field in that drawing's table to use for the label's text. The New Labels dialog thus creates three new components for us in the project: the drawing's table, the drawing, and a labels component that automatically takes the position and content of labels from the drawing and the drawing's table.
All three components start out blank, with no records, objects or labels in them. If we add an object to the drawing a label for that will be created automatically. Manifold also allows us to add a label to the labels component and have an object created for that label automatically as well.
We can create labels individually in a casual way wherever we like using two different styles of workflow: by adding objects to the drawing at the desired positions and letting the labels layer automatically create labels for them, or by using the labels layer as the interface and having the system automatically create an object in the drawing at spots where we place a label. The two different styles are just a matter of workflow to the same end, whether we want to mark locations for labels using a drawing layer or whether we want to do so using a labels layer.
Drawing layer as the interface - We add both the drawing layer and the labels layer to our map. With the drawing layer active, we add a point to the drawing wherever we want a label, entering the label text using the Info pane as we create the point. The label automatically appears as we create the point. When the labels are done and we don't want to see the drawing objects anymore, we turn off the drawing layer or remove it from the map.
Labels layer as the interface - We add the labels layer to our map. We can then add new labels to the Labels layer at whatever locations we want using the Create tools, specifying the text for those labels as we create them in the Info pane. As we add labels the objects for them are automatically created in the drawing for the labels component. If we want to see that in action we can add the drawing layer to the map as well.
In both of the above two workflow styles we end up creating objects in a drawing from which labels are created. Which of the two workflows we prefer depends on our taste and the specifics of our task. For example, if we want to create individual labels at locations closely tied to existing objects we might prefer using the drawing as an interface. If we casually create labels based purely on visual appearance we might prefer to use the labels layer as the interface. Both ways work and the workflow from both ways can be mingled as one way or the other is more convenient.
We can create a new labels component using a new, blank drawing as follows:
We begin by right-clicking into a blank location in the Project pane and choosing New Labels.
Since we did not right-click onto an existing drawing, the New Labels dialog opens with a default name for a labels component to be Based on a <new drawing>. We choose an existing drawing in the pull-down menu if we wanted, but we will keep the <new drawing> choice. By default, the dialog will also create a new table for the new drawing with an nvarchar field (Unicode, variable length text field) called Text for the text to use in the labels. We can change the coordinate system from the default if we like. We will leave it as is.
We change the Name of the new labels component to be Notes and then we press the Create Labels button.
Three new components appear in the Project pane: a Notes Drawing, the drawing's table called Notes Table, and a Notes labels component.
Clicking open the table we see it is empty.
Dragging and dropping the Notes Drawing and the Notes labels layers into the map, we see those (of course) are empty as well.
We click on the Notes layer to move the focus there.
Using Style we style the Notes labels layer to use an all caps font, brown color and larger, 16 point, font size. That will provide a visually distinctive look to any labels we create in the layer.
We now have the infrastructure we want to add labels individually wherever we want. We will show the step-by-step procedure for both approaches, either using a drawing layer as the interface or using a labels layer as the interface.
We click on the Notes Drawing tab to make it the active layer.
Labels are created based on the type of object to which they are bound. If we want to create labels for point locations we use a "create point" tool.
In the main toolbar we chose the Create Point tool from the drop-down menu for the mode button, and then we click on a location in the map, approximately between Le Mans and Tours, to create a point where we want a label to appear.
A small blue square appears at the clicked location. The blue preview color of the square indicates this is where the proposed point will go.
When we click to add a new point to a drawing using the Create Point tool the system automatically switches to the Info pane. In the Values tab, we enter the text we want for the new label, Beauce, the traditional name of that natural region in France, famous for agriculture, in the triangle between Le Mans, Tours and Orleans. We press the Add Record button to create the point at that location with the attributes specified in the Values tab.
A point appears in the Notes Drawing at the location previewed, and a new label corresponding to that new point also appears, using the specified text, in the Notes labels layer.
We add another label by adding another point to the controlling drawing. With the Notes Drawing layer tab to make it the active layer and still using the Create Point tool, we click into the Notes Drawing layer to add another point, to the west of Tours. The proposed new point appears as a small square icon using blue preview color.
In the Info pane's Value tab, we add the text Loire to the Text cell for that point. The Loire region is the valley of the Loire, famous for chateaux and fine wine. We press the Add Record button to create the point.
As we do, automatically the new point appears in the Notes Drawing layer, and a corresponding new label appears in the Notes labels layer.
We can click off the Notes Drawing layer to clean up the display. We have added labels to our map showing the names of natural regions as locals might use.
Opening the Notes Table, we can see we have added two records to the table, one for each point. The records contain the geom value that specifies where the point is located, and the value of the text.
In the workflow above we specified the text for each new label by entering the text into the values tab of the Info pane as we created the point. We could have done it slightly differently, by first creating the points and then quickly entering the text into the table. Manifold is happy to leave the table window open, and Manifold will dynamically update all windows as we change text in the table.
A very quick way of creating several labels at different locations is to rapidly click, click, click to create those points and then to rapidly edit the text values in the table. Using fast techniques shown in the Editing Tables topic we can edit one Text cell in a table, press the down arrow key to move to the next one down, edit that and so on very rapidly. Manifold automatically updates the labels for us.
The above process is slightly different than that used in various GIS packages but it is just as easy. Many GIS packages will allow adding a label at a clicked location and will pop open a dialog allowing the text for that label to be entered. In the above case we clicked a point location and used the already-open Info pane to enter the desired text for the label.
If we prefer to add individual labels using a process more similar to classic GIS, where we just add labels to a labels layer, we can do that in Manifold as well. We will take the process from the very beginning, creating a new labels layer.
Right-click into an empty portion of the Project pane and choose New Labels. Give the new layer a name of Wines and confirm it is based on a <new drawing>. Press Create Labels.
A new ensemble of a table, a drawing and a labels component appears in the project.
We drag and drop the Wines labels component into the map, as the uppermost layer. To clean up the display we have right-clicked onto tabs for unused layers and have deleted them from the map. We have also zoomed closer into the region around Tours and Romorantin. Finally, we have used style overrides to position the Orleans label below the host point, so it appears without being clipped by the label for Chateaudun.
With the focus on the Wines labels layer in the map, we click on the Style pane. We would like the labels we create to be visually different from other labels, so we take a moment to set the main color to a dark red color, we change the font to an italic, all-caps font, and we set the font size to 12 points.
With the focus still on the Wines labels layer in the map, we choose the Create Point tool from the drop-down menu for the mode button.
Back in the map, in the Wines layer we click a spot just to the east of Tours to mark the location where we would like to create a new label. A blue preview color square appears to show the point location that will be used as the anchor point for the new label.
The Info pane automatically appears, open to the Values tab. We Double-click into the Text value for the label.
We enter the text desired for the label. We enter Vouvray, the name of a fine, white wine created near Tours, and then press Enter.
We press Add Record to create the label. If we change our mind, before pressing Add Record we can right-click into the map window and choose Undo Changes to abandon adding a label.
A new label appears in the map at the location we clicked with the Create Point tool, using the Style properties such as color and font specified.
What is going on behind the scenes is that we created a point in the associated drawing, and the label that has just appeared takes its geometry and text information from that point. As a matter of convenient workflow, Manifold allows us to use the labels layer as the interface, with Manifold behind the scenes automatically creating the point object for the label in the drawing.
Since the Create Point tool is active until we click back onto the default cursor tool, we can click on another location where we would like to place a label. We click at a location slightly to the northwest of the Loire label.
In the Info pane Values tab, for the Text of the label we enter Chinon, the name of another fine, Loire valley wine. We press Add Record to create the label.
A new label appears for Chinon, a superb red wine not well known outside of France. Bordeaux and Burgundy are famous in export markets, but locals will often choose Chinon for the outstanding price/performance it offers.
We can continue on in this way, adding more labels as desired, such as one for Cheverny, and adding some background map layers from web servers, like the OpenStreetMap Terrain view used in the illustration above. We might want to turn on per-record formatting, so each of the new labels could be individually styled to use a different color. We could then use red color for red wines like Chinon and a lighter color for white wines like Vouvray and (usually) Cheverny.
If the text in the field used by the label for text contains multiple lines, the label will also contain multiple lines.
See the Example: Add Labels to a Map topic for an example.
We can select labels just as we might objects in drawings, either using mouse selection or using the Select pane. The Select pane can select labels based on the fields in the drawing on which the labels are based.
Consider a map with a labels layer as seen above. The Cities Labels layer is based on the same Cities drawing and Cities Table used in prior examples in this topic. The text for each label is taken from a City field in the table.
With the focus on the Map window, in the Select pane we choose the Cities Labels layer and the City field. We double-click the Search template.
In the Search template, we choose starts with as the Condition, and we enter the text Ch as the Value, to find all labels for which the label text starts with Ch. Press Preview. Three labels are previewed in the window above.
Previews for labels show the anchor points (or lines or areas) from which the labels are created in blue preview color. A blue preview caption bar appears at the top of the window giving the name of the select template being previewed.
We press Select.
Immediately, the desired labels are selected, and are shown in red selection color. Once labels are selected we can do further operations, for example, copying or deleting the selected labels.
The Transform pane also operates on labels, applying to whatever fields we want in the drawing upon which the labels are based. We will use the Transform pane to vandalize the names of cities in and near the valley of the Loire river in France.
We begin by showing how to apply the transform only to selected labels.
In the illustration below we have selected two labels by Ctrl-clicking them with the mouse.
English speakers might not know if the Ch characters at the beginning of a French name should be pronounced with sound like the beginning of the word "Charles" or a sound like the beginning of "should." We will assist them by replacing the Ch at the beginning of Châteaudun and Chateauroux with Sh.
We can transform the text of labels either by using the Transform pane with the labels layer in the map window, or by using the Transform pane with the table from which the labels are generated. If we would like to check our editing with a preview, we should work with the table, since a preview can be shown for changes in the labels text in the table, but not in the labels layer in the map.
We pop open the Cities Table, from which the Cities Labels layer is generated. In the illustration above, we have scrolled the table down to where city names beginning with Ch have been selected.
With the focus on the open table window, in the Transform pane we choose the Cities Labels layer and the City field within that layer. We double-click the Replace template to launch it.
In the Replace template we enter Ch as the Search for text and Sh as the Replace with text. We check the Transform selection only box to apply the transform only to selected labels.
To see a preview we click Preview.
A blue preview column appears, with the name of the transform template being previewed in the column head caption, showing the changes that will be made. A dot icon appears in the City field to indicate that will be the target of the changes being previewed. Since we have checked the Transform selection only box, only those records that are selected will be altered.
If we like what we see, we press Transform to apply the change.
The selected records in the table are immediately updated.
The labels in the map window are also immediately updated.
In the map window, we de-select the two labels, and then we select the label for the next city name we would like to change. Nevers sounds a bit negative, so we will replace that value in the City field with something more positive.
With the focus on the map window, in the Transform pane we choose the Cities Labels layer, and we choose the City field. We double-click the Replace : text in the top, most recently used row to launch that template.
In the Replace template, we enter Never in the Search for box and Alway in the Replace with box. The Transform selection only box is still checked, so that the change will apply only to the selected city.
We press Transform to rename the city of Nevers to the more positive Always.
The city immediately changes its name. The Transform pane operated on the label text even though we did not have the table open.
In the illustrations below we have continued to vandalize the ancient names of cities in the region.
Anger seems negative so we have changed it to Happy, to rename the ancient city of Angers to Happys. Man has political issues in modern times so the city of Le Mans has now become Le Womans.
Setting aside the feeble humor of the above, the ability to apply Transform templates to labels makes it easy to make sweeping changes that are useful in cartography. Changes can be accomplished in a highly dynamic workflow when combined with selections of labels in a map window and transform previews in tables.
In the following we have both the map window and the table window for the labels open on our desktop.
Consider the illustration below. Our task is to assign some cities in the region to our company's regional sales district number 28. We will use the map window to select labels to adjust, and then in the table window we will use the Transform pane's Concatenate template, with Transform selection only checked, to add the number 28 to the end of the name of each label that we have selected.
We can dynamically select and de-select labels in the map and then when we update a preview in the transform pane operating on the table, automatically the names which are updated to have 28 appended will change as well.
With the focus on the labels layer in the map window, we have Ctrl-clicked five labels to select them.
Immediately, in the table for the drawing from which the labels were created, the corresponding five records are selected. In the illustration above we have used the Selected filter to show only selected records.
With the focus on the table, in the Transform pane we choose the City field and then we double-click the Concatenate transform to launch it.
In the Concatenate template, we have chosen end as the Add at option, with a Value of 28 to be added, and separated from the preceding text using a Separator consisting of a space character, a hyphen - character, and a space character. The space characters are not visible in the Separator box illustrated above, but they are there.
Press Preview to see a preview. A blue preview column appears in the table window, with Concatenate, the name of the template being previewed, as the name of the column. We can drag the preview column next to the City column to make comparison easy. The City column head has a dot icon in the preview, indicating the City column will be changed by to match what is in the preview column.
If we decide to make some changes in what we have selected, we can do that before pressing Transform to apply the template.
In the map window, with the focus still on the Cities Labels layer, we Shift-Ctrl-click onto Poitiers to de-select that lable and we Ctrl-click onto Le Mans and Châteaudun to select them.
We click the table window's title bar to move the focus onto the table window, and then we press the Filter button in the main toolbar to update the table to show only the currently selected records.
The preview is still active, so when we press the Filter button to refresh the display the preview also refreshes. When we press the Filter button, instantly the blue preview provided by the Transform pane shifts to show additions of 28 to the newly-selected cities and not to the de-selected Poitiers.
If we like the preview, we press the Transform button to apply the changes. The preview disappears and the table updates.
The map window also immediately updates, showing the changes to the labels.
Almost always, we will use labels as a layer in a map, overlaid on other layers such as drawings or images. We can, if we like, open a labels component in its own window, just like we can open a drawing or an image in its own window. When a labels component is opened in its own window, that labels window also can contain layers just like a drawing or image can. Any layers added to a labels window will be temporary.
We can add images, drawings and labels as layers to a labels window, for temporary viewing. A key difference between layers in a map and layers in a labels window is that hosting layers is the reason to have maps, while adding layers to a labels window is a temporary convenience to allow us to quickly see the labels component in the context of other layers. In general, if we want to use layers we should use a map. It is so easy to add layers to a labels window that it is easy to forget they are temporary.
To save work invested into a nice arrangement of layers added to a labels window, Manifold provides the Edit - Save as Map command.
A labels window always contains the originating labels component as a layer, and the labels window will always use whatever projection the labels component uses. If we change the coordinate system of the labels component, the labels window will automatically use that different coordinate system as well. If any other layer is added to a labels window, the labels window will re-project that layer on the fly into the coordinate system used by the labels component and the labels window.
Open the labels window by double-clicking the labels component in the Project pane.
The labels component will appear as the only layer in the labels window. The labels window will use the projection of the labels component.
Drag and drop any additional desired layers from the Project pane into the labels window.
The labels window will automatically re-project on the fly all layers into the coordinate system used by the labels component.
Rearrange layers by dragging their tabs left or right, or by using the Layers pane.
Layers in a labels window are temporary. To save the layer arrangement, use Edit - Save as Map.
There are three key differences between layers in a map and layers in a labels window:
Layers in labels windows are temporary: when we add layers to a labels window and then arrange those layers in order, if we close the labels window and then open it again those layers will be gone. To save the layer structure added to a labels window, choose Edit - Save as Map and save the window, together with the layers as specified, as a map.
Maps take zero space since they do not store any data: they are simply references to other components that are the constituent layers of the map. Therefore, we should not hesitate to ever use Edit - Save as Map to save any interesting or useful collection of layers we have added to a labels window.
Measurements - We can measure distances and bearings in labels layers using the Tracker tool.
Create points, lines or areas to make labels? - In the workflow shown above to add a label to a labels component we used the Create Point tool. Why are there also Create Line and Create Area tools in the toolbar for a labels layer? That is to allow us to create labels that are based on lines or areas. See the visual demonstration of how that works in the Manifold 9 - New Labels Features in 9 video in the Gallery page on the Manifold website.
Deletions are Confirmed - Deleting labels displays a confirmation dialog. The default button in the confirmation dialog is set to Cancel. If we do not want to see the confirmation dialog, we can check the Never show this again box. That will remove the confirmation dialog for deleting frames in layouts, for deleting objects in drawing layers, for deleting labels, and for deleting records in tables. Another way to eliminate the confirmation dialog is to uncheck the Confirm deleting records box in the Tools - Options dialog. Labels are records in the associated drawing's table, hence the "records" terminology.
Unicode is OK - Manifold can handle Unicode within labels, as seen above and as illustrated in the Example: Format the Size of City Points by Population topic. (The Chinese characters used in the illustration above are placeholders, and are not translations of the city names from French into Chinese.) A variety of formatting tricks have been applied to create a more appealing display.
Romorantin, Cour-Cheverny and François - By happenstance our choice of zoomed views in the example centers on the town of Romorantin, also seen in the view above with background terrain layer and river layers added, the home of Romorantin grapes used in Cour-Cheverny wine.
The great king François I, good friend, patron and protector of Leonardo da Vinci in his old age, planted the first large vineyard of Romorantin in 1517 near his mother's chateau at Romorantin. The original stone wall bordering the vineyard planted by François I still stands, seen in a French government survey photo from the 1930's at right.
Cour-Cheverny is the fabulous white wine produced of 100% Romorantin grapes, by local mythology all said to be descendents of the vines of François I, and harvested exclusively from the region around Romorantin. Whatever the true origin of the Romorantin vines, they produce an outstanding, dry white wine that is rarely exported, it is so valued by locals.
The neighboring town of Cheverny, also known for a famous chateau that is still owned by the same family, as it has been for six centuries, is home to a related, crisp white wine made primarily of Sauvignon Blanc, along with Chardonnay, Menu PIneau and Chenin Blanc.
François considered building a new chateau at Romorantin to plans drawn up by Leonardo but instead built the largest chateau of all, seen below, at Chambord not far away. Leonardo designed the immense double-helix stone staircase at the center of the chateau. Leonardo is buried at the royal fortress of Amboise, almost exactly in the center of the map above just to the East of Tours. See the notes at the end of the Example: Change the Contrast of an Image topic for notes on Leonardo in France.
Even small towns can have a chateau - Many tourists visit the famous chateaux of the valley of the Loire, but even smaller towns in the region often have historically important chateaux. Seen below is a view of the chateau at Châteaudun, built from 1170 AD to the early 1500s.
Set on a promontory that commands the valley of the Loir river, a tributary of the famous and larger Loire, the fortress at Châteaudun has existed since Celtic times and was a major fortress of the Romans. The medieval tower, with walls several meters thick, was built in the late 1100s after Viking attacks leveled the predecessor fortification.
The Gothic fortress behind the great tower was converted from a fighting fortress into a residential chateau by Jean de Dunois, the illegitimate son of Louis I. Jean Dunois was a companion of Joan of Arc, leading the French forces at Orleans to relieve the English siege in the Hundred Years War, a battle memorably brought to life in the film The Messenger, in which Jean Dunois is portrayed by Tchéky Karyo. Seen at left, Karyo resembles Dunois as seen in the portrait at right.
Dunois led the Orleans branch of the royal family for many years, the only adult male in the family left alive in France after his half-brother Charles was taken prisoner at Agincourt.
Jean handled affairs so well he was able finally to ransom Charles from twenty five years captivity by the English. When Charles became Charles VII, King of France, in gratitude he gave Jean the castle in Châteaudun and the surrounding territory. Jean continued to fight in the Hundred Years War, eventually playing a key role in the conquest of Normandy.
The descendents of Jean Dunois continued expanding the chateau, adding a new wing in Renaissance style. Today, we may tour the great chateau in person, or take a walk through the chateau using Google maps. Zoom into the chateau in Châteaudun, drop the Google Street View man into the chateau and Street View allows a walk through the interior. The Google Cultural Institute page provides remarkably detailed information, with online tours, about the chateau.
Poitiers and Tours - Also in the example drawing of Cities we see both Poitiers and Tours, somewhere between which on 10 October 732 was fought the famous battle between allied Frankish and Burgundian forces led by Charles Martel against the Umayyad Caliphate army led by Abdul Rahman Al Ghafiqi, the great general and governor of the Caliphate's Andalusian territory. Al Ghafiqi was killed in the battle while in person rallying his men against the onslaught of Frankish infantry.
Significantly outnumbered by the Muslim army, Martel had chosen the site of the battle well, seeking to use terrain and trees to weaken the advantage of Al Ghafiqi's calvary against Martel's exclusively infantry forces. For seven days the armies skirmished until on the seventh day Muslim heavy cavalry charged the Franks, launching a brutal, day-long battle. Martel's seasoned infantry fought off charge after charge, keeping their nerve in a defensive square before counter-attacking on foot to kill Al Ghafiqi, winning a decisive victory.
Already in control of much of the Iberian peninsula and Southern France, the advance by Al Ghafiqi so far into central France marked the greatest advance of Muslim armies into Western Europe. The victory by Charles earned him his nickname of "Martellus," Latin for "The Hammer," cemented the power of the Franks and led to the development of Western Europe over the next twelve centuries as a primarily Christian culture.
Six centuries later, Edward, the Black Prince, of England on 19 September 1356 won a stunning victory at Poitiers against King John II of France, capturing the king, his son and many French nobles. Poitiers was the second of three epic English victories in the Hundred Years' War, coming ten years after the battle of Crécy and almost 60 years before Agincourt in 1415.
Who knew there was so much history in one small illustration?
Manifold 9 - Select Labels and Dynamically Transform - In this quick and easy video we show how to select labels and then dynamically transform the field behind the label using the Transform pane.
Manifold 9 - New Labels Features in 9 - Take a look at new Labels features in Release 9 that can be used in the latest, free Manifold Viewer Edge as well. With two clicks we add labels to a map where each label automatically takes its text from fields in a drawing layer. Next we use a single click to create a labels layer that allows us to interactively add a label wherever we want, as a point label or along a line we draw. We see how to turn on per-label formatting so each label can be styled differently.
Custom Area Labels - Manifold can automatically label objects in maps. In the case of areas, Manifold can automatically label areas and will also dynamically move those labels as we pan and zoom in a map to keep as many areas labeled as possible. But what if we want fixed labels that stay in positions we specify, but which automatically take their text from attributes for areas? That is easy to do, as this video shows. Works with the free Viewer, too!
File - Create - New Labels
Style: Bitmap Symbols
Style: Label Placement
Style: Label Icon Placement
Example: Add Labels to a Map - How to manually add labels to a map.
Example: Format the Size of City Points by Population - A common GIS task is to format the size of points in a drawing based on some value. For example, the size of points that represent cities might be formatted based on the value of the city's population, with cities that have larger populations being marked by larger point icons. This is an example of thematic formatting and is easy to do using the Style pane.
Example: Formatting Tricks - The visualization capabilities of Manifold using Style can be exploited to provide endless visual effects. This topic provides some examples of how to use Style in unexpected ways to create a range of more elaborate effects.
Example: Style Overrides - Working with style overrides to individually style areas, to use or not use style overrides, to find all records using style overrides and to clear style overrides.