Knight Piésold has written a software package called MAPComposer that takes care of many problem situations faced by Arcplot users. MAPComposer combines AML and Arcplot map compositions in a unique package that saves map production time, programming, and disk space. This paper describes how MAPComposer works, how to use it, and how it solves some common mapping problems. Here are five common situations faced by GIS analysts in charge of producing maps. These are problems that take a lot of time to solve using regular Arcplot methods.
You are assigned to produce a series of maps of the same area, showing different themes on each map. Most of the map contents will stay the same - you only need to change a few things on each map. You only want to rerun the parts that are different, not the entire map each time.
You have generated a complex map showing topographic contours, hydrology, transportation, settlements, land use, and sites where surface water samples have been taken and laboratory tests have been run on the samples. You need to perform a quality-control check on just the hydrology and sample sites layers to make sure all of the water sample sites actually show at or next to a stream. You don't want to have to plot out the entire map, or even just look at the plot on screen, because the other features interfere with your review. Also, you want to have to change only the sample sites layer if there is any error, and just rerun that part of the map, not the whole map.
The project manager comes to you and wants a map of a particular country for a proposal. She also wants to show some particular mine sites in the region, whose locations are based on a hand-drawn map someone gave her. The hand-drawn map has no printed coordinates, but has some identifiable topographic features. The mine sites also have to be labeled with their names. The map has to be 8.5x11 in., in color, and it has to be done by the end of the day.
You have created a map containing many complex elements and have written complicated AMLs to produce the map. Now you find that two text labels overlap and have to be corrected, but they come from two different coverages and are placed using Arcplot text commands, not by plotting annotation. To move the text labels you would have to move the actual locations of the points, and that would be wrong. You see no easy way to resolve this conflict, so you leave the map as is and hope nobody notices.
A project you worked on three years ago is suddenly being resurrected. The project manager dug out your fine-looking site location map and wants you to reprint it, but the title and date have to be changed. You never saved the .GRA file or any other type of plot file for the map. You now not only have to reload the AMLs that produce the map but all of the coverages that comprise the map as well. When you recover the coverages you discover that they no longer look the same as they did when the map was produced. The project manager needs a copy by tomorrow to show to the client.
Do these situations sound familiar? They are all taken from real life experience, and they used to cause so many problems that we had to come up with a better way to handle them. MAPComposer is our solution to these problems.
MAPComposer is software written in AML that separates the map-making process into independent modules by combining Arcplot's map composition functionality with AML programming. It provides a framework from which the user manages drawings (maps) in somewhat the same manner as CAD drawings; that is, as independent layers. Each layer is created using a combination of AML programs and/or interactive Arcplot placement of text, markers, lines, patches, or other graphic entities. A master "drawing.aml" is used to set up global variables to point to whatever workspaces are needed, and to set up map parameters such as page size, map limits, and map scale. MAPComposer also provides an easy way to insert maps within maps, such as inset location maps. There are two options for output format of map plots: the .GRA file, and Postscript. All MAPComposer functions are started from a single control menu.
MAPComposer's design, combining AML and map compositions, results in several important benefits for users. First, it is very easy to copy layers between or within drawings with just one button operation. This means that you can share AML code and existing map compositions to quickly copy those parts of maps that need to be duplicated into other maps.
Second, MAPComposer allows you to work on one part of a drawing independent of all other parts since the drawing is organized as separate layers. It is much quicker to edit and rerun a small part of a map than to have to rerun an entire map when only one portion needs to change. Editing and rerunning layers happens through button operations in MAPComposer, and you view the layers graphically as you "run" them. You can choose to "freeze" certain layers so they won't redraw, if you like. Being able to edit, rerun, and view individual layers quickly and independently makes quality control a much faster process since you have the flexibility to easily view any combination of layers simultaneously for cross-checking purposes.
Also, entire drawings are easily archived. MAPComposer provides the option of compressing a drawing if desired, and drawings can be stored and retrieved completely separately from the database (coverages) from which they were created. Archived drawings can be easily brought back on-line and reprinted at any time, without having to reload the database.
MAPComposer provides the ability to create what are called "interactive" layers. Any layer can be designated as "interactive," which means that you are able to run the types of Arcplot commands that involve interactive placement of entities directly on the screen. These entities are stored as map compositions, and they are able to be individually edited independently from each other, even on the same layer.
MAPComposer also provides an easy way to include insert maps in a drawing. These "maps within a map" can be drawn at a different map scale and use a different coordinate system than the main drawing. When you choose to create an insert map, you specify global parameters and edit individual layers as on the main drawing, but the results are packaged into the one insert map that is saved as a layer in the main drawing.
It should be clear by now that MAPComposer is not a toolbox for beginners. It is designed for moderate to "power" ArcInfo and Arcplot users with good AML experience. Those who have significant experience with those parts of ArcInfo will benefit most from MAPComposer's capabilities. All of these functions and advantages will be explained with graphics in the sections that follow.
You start MAPComposer from the ArcInfo prompt, which brings up a control menu. All MAPComposer operations are started from this control menu, shown in Figure 1. This menu is called the "Supermenu" because it controls all MAPComposer operations. From here you can choose a drawing from a scrolling list, create a new one from scratch, copy, delete, compress or uncompress a drawing. There is also a scrolling list of the layers which make up a selected drawing, and you can choose to view a layer or the AML which creates it, or copy individual layers between drawings or within one drawing. All of these are point-and-click operations.
The Supermenu shows some additional information. On the right, you see listed the number of layers making up the selected drawing and whether the drawing is compressed or not. Below, once you select a particular layer of a drawing in the scrolling list, the Supermenu reports whether that layer is frozen, interactive, or is an insert map. Once you are completely finished with a session of MAPComposer, you push the "Done" button.
Let's say you want to start a new drawing. Pushing the "Create drawing" button brings up a "vi" screen for you to type an AML. The file you type is called the "drawing.aml," and it controls the structure of the entire drawing. Here you set global parameters that point to data workspaces, name a map library if needed, set the pagesize, mapextent, mapposition, mapscale, and maplimits. All of these are required to start creating the layers, although they can be further modified in the individual layers' AMLs as well. After the drawing.aml is written you can edit this new drawing by selecting it from the scrolling list of drawings on the left side of the menu.
When you select a drawing from the scrolling list the menu changes appearance, as shown in Figure 2. Information specific to that drawing is now displayed, including a list of layers in the drawing. On the right side of the menu you see the number of layers, whether the drawing is compressed or not, and information about any individual layer you have selected. Here you can perform a variety of operations on the drawing or on an individual layer. We choose to edit the drawing selected in the scrolling list, so we push "Edit Drawing."
This operation brings up an Arcplot graphics window plus the MAPComposer Drawing menu, seen in Figure 3. The graphics screen is empty until you push either the "Regenerate drawing" or "Refresh drawing" buttons. If the drawing was previously compressed, you must regenerate it, which means all of the map compositions are repackaged and redrawn. If it wasn't compressed, refreshing the drawing redraws the latest version of your drawing.
The Drawing menu contains many options for working with drawings. There are choices for each layer, indicated by buttons and toggle switches shown to the right of each layer. There are also choices which apply to the entire drawing, shown in buttons below the layers. Along the "layers" row, here are the operations available. "Edit" lets you edit the AML that creates the layer, and "Run" either runs the AML or starts and interactive layer if that toggle is pressed. An "Interactive" layer lets you run Arcplot commands and place text and graphics interactively. "Insert" allows you to create another, separate drawing within the current drawing, such as a location map. "Freeze" lets you "turn off" that layer so that it doesn't draw.
The drawing-related buttons on the bottom of the Drawing menu perform several convenient operations. You can add, delete, or reorder layers of your drawing. "Rerun all layers" will rerun the AMLs of all non-interactive, non-frozen layers, and must be performed whenever you edit the drawing.aml via "Edit drawing parameters," since you are changing the setup for the entire map.
You will often use "Regenerate drawing" and "Refresh drawing." To "regenerate" a drawing means that all of the map compositions comprising the layers are replotted into the master drawing map composition. You must regenerate the drawing whenever you rerun a layer, to store the map compositions in the master drawing properly. To "refresh" a drawing means to simply redraw the latest version of the master drawing, so no new layers will be included unless the drawing has been regenerated first.
Other functions available on this menu allow you to print the global variables in use "Print variables;" save the status of all toggle switches "Save;" and create either or both of .GRA files or Postscript files for plot processing outside MAPComposer. When you are finished working on a drawing, pressing "Done" takes you back to the Supermenu.
Figure 4 shows what
happens when you want to edit a layer, in this case Layer 1. Editing a
layer involves either editing the AML that created it, or placing items
interactively in Arcplot, or both. Pushing the "Edit" button next to
the layer brings up a "vi" editor window so you can edit the AML.
After editing it and quitting vi, you must run the AML by pressing the
"Run" button.
Figure 5
Figure 5 shows the result of running Layer 1, which
creates map borders, title block information, and company logo. (We
have hidden the MAPComposer Drawing menu behind the graphics screen for
clarity). This particular example shows how to solve that troublesome
problem described in Situation #5, of having to change only a title or
figure number on a map without being able to access the original
coverages plotted inside the map. Since the map compositions making up
the master drawing remain intact, you just regenerate the drawing with
the changed titleblock layer and the rest of the original drawing is
retrieved.
You can tell MAPComposer to make any layer interactive by depressing the "Interactive" toggle switch next to the layer. Figure 6 shows menu interactions for an interactive layer. If there is no AML to edit, you simply press "Run." You can choose to run this layer from scratch, or to use graphics which you have previously placed on the map. If you rerun from scratch, all previously placed graphics are deleted. If you do not rerun from scratch, you can still move or delete individual graphics from the screen as you wish, as well as add new ones. One of the strengths of MAPComposer is that it enables users to work with map compositions in a controlled and recorded environment which can be duplicated from one session to the next.
Figure 7 shows two new menus that pop up when you run an interactive layer, whether from scratch or not. One allows you to enter any Arcplot command you wish. The other lets you select, move, or delete an individual graphic. All graphics entered in this interactive mode are saved as single map composition elements, and thus are editable on an individual basis.
In this window we enter the Arcplot "textsymbol" command, to
set up for placing some text interactively. Textset, color, and size
are also set this way. You "move" to the position where you want the
text, click the mouse button to select the position on the map, and
type the "text
Figure 8 shows the placement of a green line interactively, by entering the "line *" command in the dialog box and placing the line on the map with the cursor. Interactive layers can also be employed to solve the problem described in Situation #3, where you have to draw some features from a hand-drawn map with no coordinates: you can draw them interactively with Arcplot commands directly against the base map on the graphics screen. Also, you can draw all text labels such that they are able to be manipulated individually, thus allowing you to resolve text placement conflicts easily.
Another example of editing and running a
layer is shown in Figures 9 and 10. Figure 9 shows the contents of a
layer which draws streams and roads from a library, and you can see
that the AML contains normal Arcplot commands.
Figure 10
Figure 10 shows the result of running just this layer (the Drawing menu
is hidden). Again, MAPComposer's advantage here is that you can quickly
edit and rerun just one layer at a time without having to reconstruct the
entire map.
You can choose to "freeze" layers so that you can rerun just those layers you want to compare. Figure 11 shows the Drawing menu where all layers except "Hydrology and roads" and "Contours" have been frozen. A "frozen" layer will not be redrawn during "regenerate drawing" or "refresh drawing" operations, and will not be rerun during "rerun all layers" operations. The map behind the menu shows the results of drawing just the hydrology and contour layers together: this provides an easy way to check that the hydrology layer is plotting correctly, since it must match the topography.
Finally we are ready to regenerate the entire drawing with all layers active. Figure 12 shows the resulting drawing, this time with shaded relief drawn and text colors changed to yellow for better visibility. This drawing is ready to plot. You can either create a .GRA file for further processing outside of MAPComposer, or you can create a Postscript file directly, by pressing the appropriate button on the Drawing menu.
As you have seen, MAPComposer is a powerful way to organize the process of producing and managing maps. Using MAPComposer saves time because you can more quickly create and edit individual parts of a map, layer by layer. It allows for more thorough quality control because you can check the interaction of a few layers at a time. It allows you to store drawings as entities completely independent of the database from which they were originally created, and it saves disk space when you don't need to store the coverages on line. MAPComposer takes care of all of these problems in creating, editing, and storing maps for us. We estimate that since we have implemented MAPComposer at Knight Piésold we have cut down the time required to make original maps by up to 25%; to update existing maps, by up to 50%; and to create map series, by up to 50%. We expect future enhancements to further improve productivity and functionality, including the incorporation of our slide making application for ArcInfo.