Jeffery S. Nighbert


Using ArcInfo to Create Publication Quality Maps for the Interior Columbia Basin Ecosystem Management Project: Detailed Responses to Frequently Asked Questions about the 1995 Esri "Best Cartographic Publication" Map

ArcInfo is a great tool for creating publication quality maps. The Interior Columbia Basin Ecosystem Management Project Terrain Map demonstrates just how good. The spectacular color relief map displayed at the 1995 Esri user conference and presented on the cover of the 1996 Esri Map Book drew and overwhelming response, including "Best Cartographic Publication" at the 1995 conference poster session. Even after answering hundreds of inquiries over the past two years, we still get questions about the techniques used in creating this map. In particular, public interest centers around four questions: What were the requirements for this map and how were they translated into map features? How was the colorful terrain backdrop created for the map? What were the sources of the data for the map? Are the Arc Macro Language (AML) programs used to create this map available to the public? This presentation provides detailed responses to these frequently asked questions.


INTRODUCTION

As part of his July 1993 direction for management of Pacific Northwest Federal Forests, President Clinton directed development of a scientifically sound, ecosystems based strategy for Federal Forests east of the Cascade Mountain Range. In January 1994, the Director of the Bureau of Land Management (BLM) and the Chief of the Forest Service (FS) outlined their expectations for implementing this strategy in the charter for the Interior Columbia Basin Ecosystem Management Project (ICBEMP). The project, headquartered in Walla Walla, Washington, encompasses the geographic area of eastern Oregon and Washington, all of Idaho, western Montana and Wyoming, and northern Utah and Nevada. It covers approximately 144 million acres of which, about 75 million are managed by the two agencies.

To support the ICBEMP effort the Bureau of Land Management Oregon State Office was given the task of developing a high quality general location map for the project. To answer this fundamental requirement, the ICBEMP terrain map was created. Since then, the map has not only fulfilled its original mission but it appears to have taken on "a life of its own" well beyond the bounds of the ICBEMP project. A reduction of the orignal map has been produced in digital form and shown below:

The Interior

Columbia Basin Ecosystem Management Project terrain map


WHAT WERE THE REQUIREMENTS FOR THIS MAP?

Mapmakers create their work to meet the needs of their customers. These "needs" or requirements define everything about a map: how the map will be created, what features will be shown, even what techniques will be used. The ICBEMP terrain map was no exception. The first and most important step in creation of a suitable location map for the ICBEMP was an assessment of the requirements considering needs on a number of levels. Apart from the primary requirement provided by the ICBEMP team, consideration was given to the map user audience, integration with other ICBEMP mapping activities, the existing mapmaking environment and standards, and new hardware and software capabilities. Thought was also spent on academic and professional expectations. Countless meetings and phone conversations were held with the project team, regional GIS specialists and other concerned parties to refine and analyze these requirements.

Primary mapping requirements

The primary purpose of the ICBEMP location map was to provide a quick reference to the geographical features of the Columbia Basin. The map needed to show in a single glance a "landscape view" of the Columbia River basin and vicinity, yet at the same time provide enough detail upon closer inspection for users to locate administrative, political, cultural, hydrologic, and transportation features as well as a plethora of small towns, villages and other important places of interest. Secondarily, the map had to be highly adequate to serve as a reference map in public meetings, media briefings, court hearings, and publication in the Environmental Impact Statement document.

The map user audience

The user's audience is a major consideration when developing requirements for a map. A project the size and breadth of the ICBEMP brought together a big variety of map users, each with a different reason for scrutinizing a map and each with a different ability to read a map. Once a map is created and put into use, it is difficult to tell exactly who is actually using it. The ICBEMP terrain map has been used by a wide range of individuals and groups including residents of small towns and ranches, urban dwellers, environmental and industry special interest groups; local, state and federal government agency personnel and possibly even members of Congress and the President of the United States.

The primary audience for the ICBEMP map was the ICBEMP project team composed of some of the northwest's leading ecological scientists, land use planners and land managers. This map provided an excellent locational frame of reference for the many thematic overlays which the ICBEMP project team used to formulate options and alternatives. With the rich content of detailed information on the ICBEMP map, team members could easily determine how different actions would impact existing activities on the landscape.

Beyond reference and analytical uses by the ICBEMP project team, the map was intended as a communication tool with the public at large. The ICBEMP needed to be able to convey effectively how the plan would benefit different areas of the Columbia Basin. The ICBEMP terrain map proved to be an effective tool for facilitating that dialog.

Integration with other project mapping activities

The ICBEMP terrain map development was only one part of the Project's extensive GIS activities. The project basemap needed to compliment the other GIS data and programming created by the project team. For that reason, manual cartographic methods or stand alone incompatible drafting systems were not considered.

The analytical and GIS activities for the ICBEMP project took place at many Forest Service and BLM offices in Portland, Boise, Missoula, and Walla Walla, so extra efforts were taken for the project to effectively manage data and processes to avoid duplication and maintain continuity. This allowed the work to be accomplished simultaneously at many locations. The building of the ICBEMP terrain map database and AML programming were integrated with these ongoing GIS activities, so that the ICBEMP team in different locations had access to the map in digital form.

The ICBEMP location map served as a basemap upon which numerous overlays were developed and displayed in public meetings. This was the key to the creation of published maps for the project and to further integrate the ICBEMP terrain map into the ongoing GIS work of the project. As each of the different analysis teams complete their work, new thematic data were developed and refined into a publishable form for the Environmental Impact Statement (EIS) documents, public display and other uses. This allowed cartographic products to be produced and used throughout the entire process, rather than just in the publication process.

The existing mapmaking environment

The existing mapmaking environment contributes heavily to the requirements list for a given map. The customer usually provides the primary statement of need, but is unaware that there is a "standing set" of requirements or "standards" mapmakers must meet. This "standing set" of requirements may include items such as map accuracy, agency citation and logo, map formats, data symbology, scale bars, meta data, and disclaimers. The ICBEMP terrain map requirements took into account the existing mapping practices of the agencies participating in the project as much as possible. But since the terrain map was an entirely digital product and most agency standards are written for manual cartography, certain adaptations had to be made.

The hardware and software capabilities

Hardware and software capabilities had a direct influence on some of the mapping requirements for ICBEMP terrain map. Part of the requirements definition process for a map is to assess the feasibility and methods for meeting user needs. In digital cartography, the mapmaker is always working within the limitations of the hardware and software. For example, the ICBEMP terrain map had to be less than 36 inches the Y direction because the maximum plotter size available to the project was 36 inches. On the positive side Arcplot allows raster and vector data in the same plot meta file, so a terrain backdrop could be added to the map image. Throughout the creation of the ICBEMP terrain map, the hardware and software capabilities and limitations were always in a state of inter-play between limitations and capabilities. As new hardware and software capabilities became available or known, they were taken into account in the ICBEMP mapping process.

Academic and professional expectations

The last of the requirements given consideration were the unwritten expectations of academic and professional geographers, cartographers, and other scientists of the ICBEMP team. The mapmakers who created the ICBEMP terrain map interjected their own requirement. The ICBEMP terrain map must be of "professional" quality meeting or exceeding current academic and professional standards. By adding this requirement, the ICBEMP terrain map team assured the project office they would receive an excellent product at their disposal.


HOW WERE REQUIREMENTS TRANSLATED TO MAP FEATURES?

Unfortunately, beautiful maps do not spring spontaneously from the computer whenever the button is pushed, nor does a detailed list of requirements cause that to happen either. The creation of the ICBEMP terrain map is the result of months of work. Mapmakers must translate many user needs into a single visual system where many disparate tidbits of information live together harmoniously upon the page.

A good deal of thought went into planning the conceptual makeup of the map. Several weeks were spent analyzing other beautiful location maps. These maps included products published in the yearly Esri Map Book, National Geographic Maps, maps in a number of atlases, and maps created by the BLM and Forest Service. Lengthy discussions were held to discuss the positive and negative features of these maps and to determine what features were appropriate for the ICBEMP terrain map. The process of interpreting user needs against program capabilities and limitations, existing standards, project continuty concerns and professional practices is complex and often happens inside the mind of the mapmaker. These discussions led to the singular conceptual vision of the ICBEMP terrain map and list of features it should have. This list is discussed below:

Traditional equilateral design

This overall format was selected because it provides universal appeal and look to the product. This is characterized by formal borders, neatline and balanced symmetry and is based on an equilateral triangle inscribed in a rectangle. The title resides at the apex of the triangle with the logo, citation, legend, scale bar, locator map along the base of the triangle. This style includes using the Albers Equal Area map projection, which reinforces the triangular design. This map would be presented as a "wall map" since its primary purpose was to be a display and reference map.

ICBEMP terrain map themes

The ICBEMP team did not specify any particular themes for the project reference map other than the Columbia River and the ICBEMP study area boundary. In the analysis of other reference maps and user requirements, the following themes were identified for inclusion on the map: Elevation, major water bodies including oceans, bays, major rivers and lakes, major transportation routes including federal state and local categories, urban areas, cities and towns, political boundaries such as county, state and international boundaries. The ICBEMP boundary was also included in the map.

Elevation based "Painted relief"

Because of the emphasis on ecosystems and landscape management, special attention was given to establishing a tinted shaded relief theme, rather than portraying elevations as contours, or spot elevations. Many traditional atlases use "painted relief" to show elevation and terrain together to portray landscapes. Painted relief makes understanding complex geography easier for novice map users. This was deemed appropriate for the ICBEMP terrain map since mapreading is an onerous task for the public.

Extensive text entries with all text "parallel with the parallels"

It is important to provide place names for all important geographic features. The extent and effect management plans are communicated more effectively when map users can find features on the map they know, such as their home town, a mountain range or their favorite fishing lake. Then a connection is made between the proposed action and the cognitive mind of the map user. All of the text entries on the map were rotated to be parallel with lines of latitude to enhance their look and readability. Rotated text also reinforces subtly the equilateral design and compatibility with the albers map projection and latitude and longitude grid. Features annotated included cities and towns, counties, states, countries, rivers, lakes, and highways.

Double bar scale showing English and metric units

Both English and Metric bar scales are provided to satisfy BLM and Forest standards and as a convenience to domestic and interational map users. Map projection information is also provided to satisfy traditional map meta data concerns.

Latitude longitude reference grid

A latitude/longitude grid provides universal locational information as well as a traditional cartographic look to the map.

Agency logos, citation and disclaimer

These are important cartographic additions which provide information about who is responsible for the product. A locator map is also provided to show on a national basis the location of ICBEMP. These cartographic decorations are specified in BLM and Forest Service mapping standards and also appear on most traditional maps.


HOW WAS THE COLORFUL TERRAIN BACKDROP CREATED?

Of all the inquiries made concerning the ICBEMP terrain map, this is the most asked question. People are impressed by the beautiful landscape portrayal of the Columbia River Basin and want to know how it was achieved.

In the world of computers and geographic information systems (GIS), creation tinted or "painted" relief is not as direct a process as it once was. In the past, relief maps were created by cartographers used artistic implements such as pen and pad, water colors, etching tools, or air brush and ink to directly apply terrain information to the page. Todays map makers must create "painted relief" by manipulating digital data with computer programs which in turn command mechanical devices to paint the screen or paper. Fortunately, ArcInfo provides an abundance of software tools which can be used for this purpose. There are ample digital elevation data available so that "painted relief" could be created for nearly anywhere on Earth.

Color behavior Formula for creating Painted Relief

Creating the colorful terrain backdrop for ICBEMP terrain map was easy, once the basic relationship between color and shadow was understood. Color behavior on the landscape appears to be a function of the sun's relationship to the shape of the land. Changes in a color's value exhibits a linear relationship to the distribution of highlights and shadows as they drape across the lands many folds and undulations. This hypothesis agrees with common sense: a color's values diminishes as shadows darken (green is green in full light but becomes darker green in less light and black in no light). This phenomena is the essential kernal in the processing model for creating "painted relief." A simple relationship model which resembles these principles is expressed by the simple formula:

P = A * I

where
P is the shaded color value
A is the color
I is the landscape illumination value

The RGB Color Model

Unlike an artist who can buy paint in the desired color, computers create color through numerical representations of color, and you must specify those numbers to obtain the desired color. Computer programs utilize color "models" to organize this process. Three popular color models in wide use are the RGB (red, green, and blue) model, the HSV (hue, saturation, and value) model, and the CMY(cyan, magenta, and yellow) model. There is no particular advantage of one over another. The color model one chooses to use is based on experiences with software, hardware, and other intangibles. The ICBEMP terrain backdrop was created using the RGB color model. In this model any given color is composed of red, green, and blue values each with a numerical range of 0 to 255. This model provides a palette of more than sixteen million colors to choose from, although the number of simultaneous colors you can display depends on the color capabilities of the device you are using.

The assignment of color to elevation values

The first step in creating painted relief for ICBEMP terrain map was to create a new dataset based on assignment of values from a look-up table which classified elevations by 500 foot increments. The first three classes are the exception to this: -10000 to 0 represent water, and 0 to 250 and 250 to 500 lowlands which needed extra definition. This assignment was performed in the Arc/Grid system using the RECLASS function and a lookup table. This elevation look-up table has a file name of elev.lut and is shown below:

/* file name: elev.lut
/* elevation range :reclass value
-10000 0000 : 1
0000 0250 : 2
0250 0500 : 3
0500 1000 : 4
1000 1500 : 5
1500 2000 : 6
2000 2500 : 7
2500 3000 : 8
3000 3500 : 9
3500 4000 : 10
4000 4500 : 11
4500 5000 : 12
5000 5500 : 13
5500 6000 : 14
6000 6500 : 15
6500 7000 : 16
7000 7500 : 17
7500 8000 : 18
8000 8500 : 19
8500 9000 : 20
9000 9500 : 21
9500 10000 : 22
10000 20000 : 23

To assign color to the newly classified data set another lookup table is used to relate the reclass value shown above to the RGB value for the desired color. These values are stored in a file called color.lut. That file is shown below:

/* file name: color.lut
/* reclass value red green blue
1 8 129 242
2 113 153 89
3 117 170 101
4 149 190 113
5 178 214 117
6 202 226 149
7 222 238 161
8 242 238 161
9 238 222 153
10 242 206 133
11 234 182 129
12 218 157 121
13 194 141 125
14 214 157 145
15 226 174 165
16 222 186 182
17 238 198 210
18 255 206 226
19 250 218 234
20 255 222 230
21 255 230 242
22 255 242 255
23 255 255 255


Colors are assigned to each reclass value at the time the dataset is plotted or used in analysis.

The creation of illumination values

The next step in creating the ICBEMP painted relief backdrop was to create a new dataset where the value for each pixel in the map represents the hypothetical illumination for that area on the ground. In traditional cartography, the illusion of terrain was created by artists rendering the shadowed areas of mountains in picture form. In the digital world, sophisticated software and widely available off-the-shelf digital elevation data interact to do this for you. Most major GIS systems have a special function to create shaded relief. This capability is available in the Arc/Grid system through the HILLSHADE function. This function provides a distribution map of hypothetical illumination values. The values of darks and lights across the landscape is a function of the sun's angle and the angles of the face of the land. Based on a user specified sun position, the slope and aspect of the terrain surface, a numerical index of illumation or shade value is assigned to each pixel in the map image. When this map is displayed the illusion of "shaded relief" is created. The ICBEMP terrain backdrop used an azimuth value of 345 degrees and a solar altitude of 65 degrees. The vertical exaggeration was set to 3.28089.

The product of the HILLSHADE function is a new data set with values ranging from 0 to 255. These values utilize an 8-bit gray scale and needed to be converted to "percent illumination" for use bythe "Color behavior Formula" mentioned above. This conversion is performed by dividing values the HILLSHADE dataset by 255. This creates a new dataset where values range from 0 to 1. These values can be thought of in "percent illuminated" terms. Fully illuminated terrain has pixel values of one or 100 percent, half illuminated pixels have a value of .5 or 50 percent illuminated and totally dark areas have a value of zero or zero percent illuminated. Thinking in terms of percent illuminated, is a more natural way of thinking about illumination in relation to color value.

Creating the painted relief backdrop

The final steps in creating the painted relief backdrop is to run the Color behavior Formula for creating painted relief using the classified elevation map and the hillshade illumination map. In the Arc/Grid system there is no way to run the formula using alpha definitions of color such as green or blue, instead the capability to do this is available in the Arc/Grid system through the use of three related commands: color2red, color2green, and color2blue. The color2(X) commands allow new datasets to be created based on red, green and blue value found in the color lookup table. These color2(X) datasets are then multiplied by the hillshade illumination data and the final red, green, and blue data sets are created. The actual painted relief is created by the GRIDCOMSPOSITE RGB command in Arc/Plot where the three final red, green, and blue data sets are displayed simultaneously.

The above process has been captured in an AML program shown below:

/* relief.aml
/* by
/* jeffery s. nighbert
/* bureau of land management
/* 1515sw 5th ave
/* portland oregon 97208
/* phone 503-952-6399
/* email: jnighber@or.blm.gov
/*
/* aml creates "painted relief"
/*
/* assumptions:
/* you're in grid and your window and mapextent are set
/*
/* needs two lookup tables
/* elev.lut - classifies elevation every 500 feet - class 1 is water
/* color.lut - green to brown to white color ramp 23 categories - 1 is
/*
/* to run:
/* &r relief
/*
/* arg definitions
/* elev_map -- an elevation map with Z values in meters
/*
&echo &on
&args elev_map
/* kill off some maps
kill red
kill green
kill blue
kill slice
kill hill
kill illum
/*The assignment of color to elevation values
/* reclassify elevation using elev.lut
slice = reclass(%elev_map% * 3.28089,elev.lut)


/* create a hillshade map then divide by 255
hill = hillshade(%elev_map%,345,65,#,3.28089)
illum = float(hill) / 255

/* use color2(X) commands at the same time use other functions
/* int reduces the size of final grids
/* con(isnull(),255 takes care of nulls in the map and assigns them

red = int(con(isnull(color2red(slice,color.lut,nowrap) ~
* illum),255,(color2red(slice,color.lut,nowrap) ~
* illum)))

green = int(con(isnull(color2green(slice,color.lut,nowrap) ~
* illum),255,(color2green(slice,color.lut,nowrap) ~
* illum)))

blue = int(con(isnull(color2blue(slice,color.lut,nowrap) ~
* illum),255,(color2blue(slice,color.lut,nowrap) ~
* illum)))

/* use "gridcomposite rgb red green blue" to display the results

gridcomposite rgb red green blue

&return


WHAT WERE THE DATA SOURCES FOR THE MAP?

The ICBEMP terrain map was derived entirely from two data sources. The shaded relief backdrop is based on a digital elevation data created was by merging 177 separate 3 arc second digital terrain files available from United State Geological Survey. The elevation data was resampled to 250 meter resolution before the "painted relief" processing occurred.

All other data, except for the project boundary, was derived from the Digital Chart of the World. However, it required extensive update and editing to make the data reflect current geography. All transportation lines were edited to reflect the current and true route and highway type according to several popular sources, including the AAA atlas. All rivers were recoded to reflect two codes. Code one indicated a major drainage and received a heavier blue line than Code two which received a thin blue line. Although important cities were included, their status and location had to be verified and edited. The position of the text labels also had to be edited to avoid overwrites and other conflicts. Yet the use of these data sets save a great deal of time over generating the data from scratch.


ARE THE AML PROGRAMS USED TO CREATE THIS MAP AVAILABLE TO THE PUBLIC?

All of the AML programs used to create the ICBEMP map are available to the public. Some of the have been enclosed in the Appendices. Questions or copies of other related AML programs may be obtained by email to:

jnighber@or.blm.gov


CONCLUSIONS

The notariety and success of the ICBEMP terrain map can be attributed to the careful adherance to user requirements, traditional design, a painted relief backdrop and extensive text entries. This map will serve as a model for future mapmakers and an reminder that professional mapmaking can be done with computers as long as the basic principles of cartography are followed.


ACKNOWLEGEMENTS:

Mike Moscoe for help in editing this presentation.


APPEDIX 1


/* relief.aml
/* by
/* jeffery s. nighbert
/* bureau of land management
/* 1515sw 5th ave
/* portland oregon 97208
/* phone 503-952-6399
/*
/* aml creates "painted relief"
/*
/* assumptions:
/* you're in grid and your window and mapextent are set
/*
/* needs two lookup tables
/* elev.lut - classifies elevation every 500 feet - class 1 is water
/* color.lut - green to brown to white color ramp 23 categories - 1 is
/* very blue
/*
/* to run:
/* &r relief
/*
/* arg definitions
/* elev_map -- an elevation map with Z values in meters
/*
&echo &on
&args elev_map
kill red
kill green
kill blue
kill slice
kill hill
kill illum
slice = reclass(%elev_map% * 3.28089,elev.lut)

/* you may wish to adjust the altitude and ve on this one
hill = hillshade(%elev_map%,345,45,#,1.2)
illum = float(hill) / 255

red = int(con(isnull(color2red(slice,color.lut,nowrap) * ~
illum),255,(color2red(slice,color.lut,nowrap) ~
* illum)))

green = int(con(isnull(color2green(slice,color.lut,nowrap) * ~
illum),255,(color2green(slice,color.lut,nowrap) ~
* illum)))

blue = int(con(isnull(color2blue(slice,color.lut,nowrap) * ~
illum),255,(color2blue(slice,color.lut,nowrap) ~
* illum)))

/* use "gridcomposite rgb red green blue" to display the results

&return

elev.lut
-10000 0000 : 1
0000 0250 : 2
0250 0500 : 3
0500 1000 : 4
1000 1500 : 5
1500 2000 : 6
2000 2500 : 7
2500 3000 : 8
3000 3500 : 9
3500 4000 : 10
4000 4500 : 11
4500 5000 : 12
5000 5500 : 13
5500 6000 : 14
6000 6500 : 15
6500 7000 : 16
7000 7500 : 17
7500 8000 : 18
8000 8500 : 19
8500 9000 : 20
9000 9500 : 21
9500 10000 : 22
10000 20000 : 23
color.lut
1 8 129 242
2 113 153 89
3 117 170 101
4 149 190 113
5 178 214 117
6 202 226 149
7 222 238 161
8 242 238 161
9 238 222 153
10 242 206 133
11 234 182 129
12 218 157 121
13 194 141 125
14 214 157 145
15 226 174 165
16 222 186 182
17 238 198 210
18 255 206 226
19 250 218 234
20 255 222 230
21 255 230 242
22 255 242 255
23 255 255 255


APPENDIX 2


/* by jeffery s. nighbert
/* united states dept of interior
/* bureau of land management
/* 1515 sw 5th ave
/* portland, oregon 97201
/* phone 503-952-6399
/* fax 503-952-6419
/* main aml program for interior columbia basin terrain map
/* executed from the arc prompt with map output scale as an arg
&args scale
&echo &on
&watch terrain.watch
&amlpath /nfs/pdtk/arc/aml
ap
display 1040
eemp_terrain
pageunits inches
pagesize 60 36
mapprojection off
weeddraw off
/* check mape based on actual min/max of cover or grid
&s cover := ../raster/hill_250
&describe %cover%
&if [exists %cover% -grid ] &then
&do
&s xmin := %grd$xmin%
&s ymin := %grd$ymin%
&s xmax := %grd$xmax%
&s ymax := %grd$ymax%
&end
&else
&if [exists %cover% -cover ] &then
&do
&s xmin := %dsc$xmin%
&s ymin := %dsc$ymin%
&s xmax := %dsc$xmax%
&s ymax := %dsc$ymax%
&end
&else
&return &warning Cover or Grid does not exist...

mape %xmin% %ymin% %xmax% %ymax%


mapunits meters
&s scale := %scale%
mapscale %scale%
maplimits [show convert map %xmin% %ymin% page ],~
[show convert map %xmax% %ymax% page ]



/* painted relief
gridcomposite rgb ../raster/red_250 ../raster/green_250 ../raster/blue_250
/* contours if you want them or planimetric map
/* lineset blmoso1.lin
/* linesymbol 101
/* linecolor goldenrod
/* reselect contours line hylnval = 1000 or hylnval = 3000 or hylnval =
/* 5000 or hylnval = 7000 or hylnval = 9000 or hylnval = 11000 or hylnval
/* = 13000
/*
/* arcs contours
/*
/*
/* water features
/*
shadeset colornames.shd
lineset blmoso1.lin
/* the ocean - used if planimetric map
/* reselect ocean polys popytype = 2
/* polygonshade ocean 52
/*
/* lakes
shadeset colornames.shd
shadecolor rgb 8 129 242
shadeput 45
/*
/* perennial lakes or open water
reselect lakes poly dnpytype eq 1
polygonshade lakes 45
clearselect
/*
/* dry lakes
reselect lakes poly dnpytype eq 2
polygonshade lakes 47
clearselect
/*
/* legend for lakes and water
shadeset colornames.shd
textset font.txt
/*
/* legend dry lake
/*
shadesymbol 47
patch 8 1.0 8.3 1.1
lineset blmoso1.lin
linesymbol 1
box 8 1.0 8.3 1.1
move 8.4 1.0
textsymbol 24
textsize .1
textquality kern
text 'Dry Lake' ll
/*
/* legend oepn water
/*
shadecolor rgb 8 129 242
shadeput 45
patch 8 .8 8.3 .9
box 8 .8 8.3 .9
move 8.4 .8
textsymbol 24
textsize .1
textquality kern
text 'Open Water' ll
/*
/* Urban Area
/*
reselect eemp_pppoly poly area gt 7500000
polygonshade eemp_pppoly 84
linecolor firebrick
textsymbol 24
linesymbol 101
linecolor firebrick
polys eemp_pppoly
shadesymbol 84
patch 11.5 .8 11.8 .9
box 11.5 .8 11.8 .9
move 11.9 .8
textsize .1
text 'Urban Area' ll
/*
/* streams
/*
lineset blmoso1.lin
textset font.txt
textsymbol 24
textsize .1
textquality kern
linesymbol 5
linecolor rgb 0 102 255
clearselect
reselect eemp_str line dnlntype lt 3
reselect eemp_str line linetype = 1
linesize .015
arcs eemp_str
clearselect
line 8 1.2 8.3 1.2
move 8.4 1.2
text 'Major River' ll
clearselect
/*
/* dry lakes
/*
reselect eemp_str line dnlntype lt 3
reselect eemp_str line linetype = 2 or linetype = 0
linesymbol 5
linecolor rgb 0 102 255
arcs eemp_str
clearselect
line 8 1.4 8.3 1.4
move 8.4 1.4
text 'River' ll
/*
/* reselect oceans
/*
/*
/* polys ocean
/*
/*
/* clearselect
/*
/*
/* water feature labels
/*
textset font.txt
annotext eemp_str all
/*
/* Interior Columbia Basin Project Area
/*
lineset carto.lin
linesymbol 104
polys crba
clearselect
line 9.5 .825 9.8 .825
textset font.txt
textsymbol 24
textsize .1
textquality kern
move 9.9 .8
text 'Assessment Boundary' ll
/*
/* administrative features
/*
lineset carto.lin
textset font.txt
arclines cnty lsym
annotext cnty c_name
/*
/* state names
/*
annotext eemp_ponet state
/*
/* legend for lines
/*
linesymbol 133
line 9.5 1.4 9.8 1.4
move 9.9 1.4
text 'County Line' ll
linesymbol 122
line 9.5 1.2 9.8 1.2
move 9.9 1.2
text 'State Line' ll
linesymbol 143
line 9.5 1 9.6 1
line 9.65 1 9.7 1
line 9.75 1 9.8 1
move 9.9 1
text 'International Boundary' ll
/*
/* transportation
/*
weeddraw off
lineset blmoso1.lin
textsymbol 24
textsize .1
textquality kern
/*
/* 5 other road - solid red tiny
/*
reselect eemp_rdline arcs linetype = 5
linesym 2
linetype wide
linesize .006
/*
/* linehollow .02
/*
linepen .005 butt miter
arcs eemp_rdline
line 6 1.4 6.3 1.4
move 6.4 1.4
text 'Major Road' ll
clearsel
/*
/* 4 - Principal Through Highways - clear red
/*
reselect eemp_rdline arcs linetype = 4
linesym 1
linetype wide
linesize .02
linehollow .02
linepen .005 butt miter
linecolor red
arcs eemp_rdline
line 6 1.2 6.3 1.2
move 6.4 1.2
text 'Principle Through Highway' ll
clearsel
/*
/* 3 - Other Divided Highways - solid black
/*
reselect eemp_rdline arcs linetype = 3
linesymbol 102
linetype wide
arcs eemp_rdline
line 6 1.0 6.3 1.0
move 6.4 1.0
text 'Divided Highway' ll
clearsel
/*
/* 2 - Other Divided Highways - solid red
/*
reselect eemp_rdline arcs linetype = 2
linesymbol 102
linetype wide
linecolor red
linesize .03
arcs eemp_rdline
clearsel
/*
/* 1 - Controlled Access Highways - fat red
/*
reselect eemp_rdline arcs linetype = 1
linesymbol 302
linesize .03
line 6 .825 6.3 .825
arcs eemp_rdline
linesym 1
linetype wide
linesize .035
linehollow .035
linepen .003 butt miter
arcs eemp_rdline
line 6 .825 6.3 .825
move 6.4 .8
text 'Controlled Access Highway' ll
lineset blmoso1.lin
linesymbol 1
arcs eemp_rdline
line 6 .825 6.3 .825
/*
/* highway symbols
/*
markerset blmoso1.mrk
markersym 1
markersize .1
reselect roadsym points symtype = '1'
/*
/* points roadsym
/*
textset font.txt
textsym 1
textsize .08
textcolor white
/*
/* pointtext roadsym hwy # cc
/*
&r markerangle
clearsel
markerset blmoso1.mrk
markersym 2
markersize .1
reselect roadsym points symtype = '2' and hwy lt 100
/*
/* points roadsym
/*
textset font.txt
textsym 1
textsize .08
textcolor black
/*
/* pointtext roadsym hwy # cc
/*
&r markerangle
clearsel
reselect roadsym points symtype = '2' and hwy gt 100
/*
/* points roadsym
/*
textset font.txt
textsym 1
textsize .08 .05
textcolor black
/*
/* pointtext roadsym hwy # cc
/*
&r markerangle
clearsel
markerset blmoso1.mrk
markersym 3
markersize .08
reselect roadsym points symtype = '3' and hwy lt 100
/*
/* points roadsym
/*
textset font.txt
textsym 1
textsize .08
textcolor black
/*
/* pointtext roadsym hwy # cc
/*
&r markerangle
clearsel
reselect roadsym points symtype = '3' and hwy gt 100
/*
/* points roadsym
/*
textset font.txt
textsym 1
textsize .08 .05
textcolor black
/*
/* pointtext roadsym hwy # cc
/*
&r markerangle
clearselect
/*
/* populated places points and text
/*
textset font.txt
textangle 0
units page
textsymbol 24
textoffset 0 0
markerset water.mrk
markersymbol 109
linesymbol 1
markersize .05
linesymbol 1
pensize .001
clearselect
points cities
annotext cities cities
lineset carto.lin
linesymbol 101
textsize .1
/*
/* collar info
/*
&s thinx := [calc 1.4 + [extract 1 ~
[show convert map %xmax% %ymax% page ]
&s thiny := [calc 1.4 + [extract 2 ~
[show convert map %xmax% %ymax% page ]
&s thickx := [calc 1.5 + [extract 1 ~
[show convert map %xmax% %ymax% page ]
&s thicky := [calc 1.5 + [extract 2 ~
[show convert map %xmax% %ymax% page ]
box .6 .6 %thinx% %thiny%
linesymbol 104
box .5 .5 %thickx% %thicky%
linesymbol 101
&s xmid := [calc [ calc %thickx% / 2 ] + .25 ]
&s ymid := [calc [ calc %thicky% / 2 ] + .25 ]
&s titley := [calc %thicky% - .75 ]
/*
/* inset map
/*
&s xinsetmin := [calc %thickx% - 2.1 ]
&s yinsetmin := .8
&s xinsetmax := [calc %thickx% - .5 ]
&s yinsetmax := 1.8
plot /usr4/eemp/inset/crba_inset box %xinsetmin% .7 %xinsetmax% 2
/*
/* projection information
/*
move %xmid% .82
textsymbol 24
textsize .12
text 'Albers Equal Area Projection centered on 117 Degrees West' lc
move %xmid% .7
text 'Standard Parallels: 43 and 48 Degrees North, Origin: 41 Degrees
North, NAD 1927' lc
/*
/* originator
/*
textsize .08
move .5 .4
text 'February, 1995 - BLM - OR955.2 - JSNIGHBERT' ll
move %xmid% .3
textsize .12
textcolor red
text 'D R A F T' lc
move %xmid% %titley%
textset font.txt
textsymbol 23
textsize .75
textspacing 2
textangle 0
text 'Interior Columbia Basin Ecosystem Management Project' cc
textspacing 1
textsymbol 24
textquality kern
/*
/* barscale aml program by dave mandel
/*
&r mk2barscale2 %xmid% 1.25 %scale% 5 miles/km
plot eemp_logo1.gra box .7 .7 2 2
/*
/* agency citation
/*
textset font.txt
textsymbol 23
textsize .14
textquality kern
move 2.0 1.65
text 'Interior Columbia Basin' ll
move 2.0 1.5
text 'Ecosystem Management Project' ll
textsymbol 24
textsize .12
move 2.0 1.35
text '112 East Poplar Street' ll
move 2.0 1.23
text 'Walla Walla, WA 99362' ll
move 2.0 1.10
text 'PH: (509)522-4030 FAX: (509)522-4025' ll
move 2.0 .95
/*
/* disclaimer textfile
/*
textsymbol 23
textsize .08
textfile disclaimer
/*
/* statement of scale
/*
move %xmid% 1.8
textsymbol 24
textsize .12
text 1:%scale% uc
linesymbol 1
textsize .1
/*
/* latlong grid program by dave mandel
/*
&r mkgeogrid1 1 mapextent mkgeogrid1.prj 1 0 1 0 -1 +1 1 0 1 0 -3 +3
&echo &on
/*
/* north arrow program by jsnighbert
/*
units page
shadeset colornames.shd
markerset north.mrk
markersymbol 12
markersize .5
markercolor black
p&r northangle -125 41
mapprojection off
units page
/*
/* neatline
/*
box [ show convert map %xmin% %ymin% page],~
[ show convert map %xmax% %ymax% page ]
box .01 .01 .015 .015
/* done with plotting - on to postscript and alchemy
quit
rm /usr6/tmp/eemp_terrain.eps
rm /usr6/tmp/eemp_terrain.rtl
postscript eemp_terrain.gra /usr6/tmp/eemp_terrain.eps 1 normal.prm
alchemy /usr6/tmp/eemp_terrain.eps --r -Zm2 -Ze1 -Zr90 -ds3
/usr6/tmp/eemp_terrain.rtl
lp -d hpplot /usr6/tmp/eemp_terrain.rtl
&watch &off
&RETURN


APPENDIX 3

/* textangle.aml
/* by
/* jeffery s. nighbert
/* bureau of land management
/* 1515 sw 5th ave
/* portland, oregon 97208
/* phone 503-952-6399
/*
/* this aml will rotate text to the angle of latitude
/*
/* assumes running from arcplot
/*
/* needs two projection parameter files
/* current_projection to geographic (sample file: eemp_geo.prj)
/* geographic to current_projection (sample file: geo_eemp.prj)
/*
/* to run:
/* textangle
/*
/* arg definitions
/*
/* map -- a point coverage
/* textitem -- a field in the point coverage.pat file
/* current2geo -- current projection to geographic projection file
/* geo2current -- geographic projection to current projection file
/*
&args map textitem current2geo geo2current
&echo &off
/* find out how many are selected
&s selected := [extract 1 [show select %map% point ]]
/* if no points are selected end
&if %selected% lt 1 &then &goto no_select
&else
/* do loop for the number selected
&s index := 1
&do &while %index% le %selected%
/* set text and label vars
&s text := [show select %map% point %index% item %textitem%]
&s label := [quote %text%]
/* set xy of point
&s x1 := [extract 1 [show select %map% point %index% XY ]]
&s y1 := [extract 2 [show select %map% point %index% XY ]]
/* project xy to geo and add half a degree
mapprojection %current2geo%
&s geox := [calc [extract 1 [show projected %x1% %y1%]] + .5 ]
&s geoy := [extract 2 [show projected %x1% %y1%]]
/* project xy2 back to current
mapprojection %geo2current%
&s x2 := [extract 1 [show projected %geox% %geoy% ]]
&s y2 := [extract 2 [show projected %geox% %geoy% ]]
/* map projection off
/* calculate slope of line and set textangle
mapprojection off
&s x := [calc %x2% - %x1%]
&s y := [calc %y2% - %y1%]
&s q := [calc %y% / %x% ]
&s t := [radang [atan %q%]]
units projectedmap
/* place point
move %x1% %y1%
&echo &on
textangle %t%
text %label% ll
/* user message
&type processing %index% of %selected%...
&echo &off
&s index := %index% + 1
&end
/* end of loop
&return
&label no_select
&type no items selected...

/* sample projection files
/* eemp_geo.prj
INPUT
PROJECTION ALBERS
UNITS METERS
PARAMETERS
43 0 0
48 0 0
-117 00 00
41 0 0
700000
0
OUTPUT
projection geographic
units dd
parameters
END

/* geo_eemp.prj
INPUT
projection geographic
units dd
parameters
OUTPUT
PROJECTION ALBERS
UNITS METERS
PARAMETERS
43 0 0
48 0 0
-117 00 00
41 0 0
700000
0
END

APPENDIX 4

/* markerangle.aml
/* by
/* jeffery s. nighbert
/* bureau of land management
/* 1515 sw 5th ave
/* portland, oregon 97208
/* phone 503-952-6399
/*
/* this aml will rotate marker text to the angle of latitude
/*
/* assumes window set, points have been selected i.e.,
/* reselect,aselect,etc
/*
/* needs two projection parameter files
/* current_projection to geographic (sample file: eemp_geo.prj)
/* geographic to current_projection (sample file: geo_eemp.prj)
/* to run:
/* &r markerangle
/*
&echo &off
&args map textitem current2geo geo2current
&s align_orig := [show textjustification ]
textjustification cc
textoffset 0 0
/* find out how many are selected
&s selected := [extract 1 [show select %map% point ]]
/* if no points are selected end
&if %selected% lt 1 &then &goto no_select
&else
/* do loop for the number selected
&s index := 1
&do &while %index% le %selected%
/* set text and label vars
&s text := [show select %cover% point %index% item %textitem% ]
&s label := [quote %text%]
/* set xy of point
&s x1 := [extract 1 [show select %cover% point %index% XY ]]
&s y1 := [extract 2 [show select %cover% point %index% XY ]]
/* project xy to geo and add half a degree
mapprojection %current2geo%
&s geox := [calc [extract 1 [show projected %x1% %y1%]] + .5 ]
&s geoy := [extract 2 [show projected %x1% %y1%]]
/* project xy2 back to current
mapprojection %geo2current%
&s x2 := [extract 1 [show projected %geox% %geoy% ]]
&s y2 := [extract 2 [show projected %geox% %geoy% ]]
/* map projection off
/* calculate slope of line and set textangle
mapprojection off
&s x := [calc %x2% - %x1%]
&s y := [calc %y2% - %y1%]
&s q := [calc %y% / %x% ]
&s t := [radang [atan %q%]]
units projectedmap
/* place marker and text
&echo &on
markerangle %t%
marker %x1% %y1%
move %x1% %y1%
textangle %t%
text %label% cc
/* user message
&type processing %index% of %selected%...
&echo &off
&s index := %index% + 1
textjustification %align_orig%
markerangle 0
&end
/* end of loop
/* this aml is slow - we open an annocoverage and run it once.
&return
&label no_select
&type no items selected...

/* sample projection files
/* eemp_geo.prj
INPUT
PROJECTION ALBERS
UNITS METERS
PARAMETERS
43 0 0
48 0 0
-117 00 00
41 0 0
700000
0
OUTPUT
projection geographic
units dd
parameters
END

/* geo_eemp.prj
INPUT
projection geographic
units dd
parameters
OUTPUT
PROJECTION ALBERS
UNITS METERS
PARAMETERS
43 0 0
48 0 0
-117 00 00
41 0 0
700000
0
END


Author Information:

Jeffery S. Nighbert
Bureau of Land Management
Oregon State Office 955.2
1515 SW 5th Avenue Portland, Oregon 97201
Phone:(503) 952-6399 Fax: (503) 952-6419
Email: jnighber@or.blm.gov

Bios:

Jeffery S. Nighbert has been a geographer with the Bureau of Land Management for over 15 years and is currently the Senior Technical Specialist for Geographic Information Systems (GIS) at the Oregon State Office, located in Portland, Oregon. He has extensive experience in GIS and holds a M.A. in Geography from University of New Mexico.

Other members of the ICBEMP terrain mapping team: Steve Salas - GIS Analyst - Pacer Infotec Incorporated
Carolyn McCarthy - GIS Analyst - Pacer Infotec Incorporated
Tuyen Ta - GIS Analyst - Pacer Infotec Incorporated
David Mandel - Senior Software Engineer - Pacer Infotec Incorporated
Note: Pacer Infotec Incorporated is a private firm under contract tot the Bureau of Land Management to provide GIS and other Information Services.


Other Items of Interest:

Hardware used:

Computer: IBM RS6000 model 250 workstations
Plotter: Hewlett-Packard model 650c GIS

Software:

GIS Software: ArcInfo Rev 6.1,ArcInfo Grid
Postscript to HP RTL: Handmade Software/Image AlchemyPS Rev 1.0

Data Source:

USGS 3 Arc Second DTM, Digital Chart of the World

REFERENCES

Pt Harvey,Histroy of Cartographic Mapping: Symbols Pictures and Surveys

Monkhouse and Wilkinson, Maps and Diagrams

Smith,Chris,Pyden,Nancy, and Pam Cole.1995. ERDAS Field Guide,Third Edition.Atlanta:ERDAS Environmenl Reserach Systems Institude,Surface Modelling using Arc Grid

Woodward,David,Five Centuries of Map Printing