- 1 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) NAME drawmap - draw customized maps, using raw USGS data files SYNOPSIS drawmap [-l latitude1,longitude1,latitude2,longitude2] [-L] [-o output_file.sun] [-c contour_interval_in_meters] [-a attribute_file] [-x x_size] [-y y_size] [-d dem_file1 [-d dem_file2 [...]]] [-g gnis_file] [dlg_file1 [dlg_file2 [...]]] VERSION This is the manual page for version 1.7 of drawmap. DESCRIPTION The U.S. Geological Survey supports sites on the Internet with many gigabytes of raw geographic data, mostly for the USA. Drawmap draws maps, using a subset of the available data for the USA. The relevant subset includes: 250K Digital Elevation Model (DEM) files Each file covers a block, one-degree square, with a 1201 by 1201 grid of elevations (in meters). The extra sample in each direction is due to overlap of the DEM files at their edges. (Files for Alaska use smaller grids, with only 401 or 601 samples in the east-west direction.) For Hawaii and the "lower 48," the one-degree square is covered by elevation samples spaced 3 seconds apart. In terms of distance along the ground, the sample spacing varies with latitude. It is generally less than 100 meters. 100K Digital Line Graph (DLG) files (in the 'optional' format) These files come in collections, each of which covers a quarter of the one-degree square covered by a DEM file. The files contain information that allows segmented linear and polygonal features to be drawn on maps, including boundary lines, hydrographic features (streams, lakes, and so on), transportation features (roads, rail lines, pipelines, and so on), public land survey data, and hypsographic lines (the familiar contour lines of a topographic map). The different general classes of data come in separate files. Geographic Names Information System (GNIS) files These files contain lists of place names, complete with their latitude/longitude and other information. Using the data in these files, drawmap can produce various kinds of customized maps, including shaded relief maps (with or without roads, streams, place names, and so on) and topographic maps (again, with or without additional features). The only type of map projection currently supported is a cylindrical (Transverse Mercator) projection, with a rectangular grid of latitudes - 1 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) and longitudes. (By default, the grid is square, in the sense that 1000 pixels in the latitude direction represent the same number of degrees as 1000 pixels in the longitude direction. You can make the grid non-square by playing with the "-x" and "-y" options.) There are two reasons for using this projection. First, it is an intuitive projection for small-area maps, and is often used for topological maps. Second, the USGS DLG data are specified in the Universal Transverse Mercator (UTM) system. In order to find your way around the DLG data, it is useful to know something about the UTM system, which is an international military standard that divides the world into 60 zones (like panels on a beach ball), each of which is 6 degrees of longitude in width, and runs from 80 S to 84 N. A UTM projection (of a given zone) has a central meridian bisecting the map from top to bottom, which serves as a reference from which the locations of other features are derived. (Zone 1 runs from 180W to 174W, with its central meridian at 177W. Successive zones run to the east, with zone 2 beginning at 174W.) In the UTM system, the location of a feature is specified by its distance to the north of the equator in meters, and its distance eastward from the central meridian in meters plus 500,000. In the southern hemisphere, 10,000,000 is added to the distance north from the equator. (The purpose of the 500,000 and 10,000,000 offsets is to avoid having any negative distances.) Drawmap internally converts UTM distances into latitude/longitude coordinates before plotting features on a map. The result of the cylindrical projection is to map each one-degree by one-degree latitude/longitude patch (on the curved surface of the Earth) into a rectangular area (on the map projection). In the process, of course, the projection distorts shapes and areas as it stretches the beach-ball panels into rectangular areas; and these deviations get larger as the distance from the central meridian increases. Distortion may also occur due to the way the latitude lines are projected. In the classical Mercator projection, for example, the latitude lines are spaced farther and farther apart as they near the pole. This gives the map some useful directional properties, but grossly distorts shapes and areas near the poles. (You can approximate this kind of stretching by using the "-x" and "- y" options to vary the number of pixels per longitudinal or latitudinal degree.) It is a fact of life that mapping a sphere onto a flat piece of paper is going to produce distorted results. Various types of map projections are chosen for the ways they preserve one or more valuable features of a globe-shaped map (features like shape, area, distance, and direction). In the Transverse Mercator projection used by drawmap, the distortions are reasonable for points that are within several degrees of the central meridian, and for maps that aren't too near the poles. In fact, a cylindrical projection has the property that it is "conformal," meaning that it preserves angles and shapes - 2 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) within small areas of the resulting map. Since the user can define arbitrary image boundaries, the output map may span any portion of one or more UTM zones, and one or more central meridians may appear at arbitrary positions within the map boundaries. At present, no corrections are made so that the data are plotted relative to a new central meridian at the center of the map. You probably won't notice or care. The output is an image, in SUN rasterfile format, which can be viewed with your favorite image viewer, or converted to other forms for display or hard copy output. (My preferred viewing/converting packages are the "ImageMagick" package and the "xv" package.) At the time this manual page was written (January, 1999), the DEM and DLG files were available for free download from http://edcwww.cr.usgs.gov/doc/edchome/ndcdb/ndcdb.html, and the GNIS files were available from http://mapping.usgs.gov/. The first site provides a convenient graphical interface that lets you locate desired files by clicking on a map. This can be far superior to trying to guess which of hundreds of files contains the data you want. The files are in (gzip-compressed) ASCII text format, and are human readable (when uncompressed) except that they generally don't contain line-feeds to structure them into individual data records. The Web sites provide information on how to add newlines and view the file contents, but drawmap is able to read and use the files in their native state (in gzip format, with a ".gz" suffix on the file name). Drawmap can also process them in uncompressed form, but will not be happy if you add newlines to them. (Be careful. Some download software will uncompress gzip files during a download but still store them in files with a ".gz" suffix. Other downloading software will leave the data compressed, but remove the ".gz" suffix. Drawmap will become confused when this happens. It relies on the suffix to determine the file type.) If you provide all three types of files (DEM, DLG, and GNIS) as input, then drawmap will first produce a shaded relief map (or, when -c is specified, a contour map), and then overlay it with data from the DLG files (with the data from each DLG file, in succession, being overlaid on all previous data), and then overlay everything with place names from the GNIS file. If you omit the DEM data, then the shaded relief (or contouring) is replaced by a simple white background. In general, you can add or remove records to or from a DLG or GNIS file, as long as you don't violate the record structure. For example, I have added newlines to a DLG file, deleted some records, added some records, and then removed all of the newlines to allow drawmap to process the file. If you want to do this sort of thing, then you may also want to get copies of the various guides and standards for the different kinds of files. These documents are available through the Web sites. (The drawmap distribution contains two undocumented - 3 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) programs to add appropriate newlines to DLG files but, beyond that, you are on your own if you want to muck around inside the files.) OPTIONS Drawmap will take whatever information you provide and assemble a map containing just that information. If you provide information that falls outside of your specified map boundaries, it is simply ignored. If you supply any DEM data, and if you don't specify a contour map (via the -c option), and if there is room, a color key will be placed at the bottom of the map to help you interpret the shaded relief. If you specify the -c option, then a message about the contour interval will appear at the bottom of the map, if there is room. Also, if there is room, a title will be placed at the top, containing the lowest and highest values of longitude and latitude for this map, and containing the latitude and longitude of the points on the map of lowest and highest elevation. (Actually, of course, there may be multiple points on the map that attain the lowest or highest elevation, but drawmap shows only the first ones that it finds. Furthermore, for low-resolution output images that have small x and y pixel dimensions relative to the granularity of the available DEM data, drawmap may be a little sloppy about the exact latitude and longitude.) If only one DEM file is supplied, the name of the associated DEM block will be included in the title. Latitude and longitude tick marks will be placed around the map boundaries, with one tick every tenth of a degree. Tick marks at full degrees and half degrees will be larger and will have text next to them that specifies the latitude/longitude. North is always at the top of the map, and east is always at the right. -L Print out the program license information and exit. -o output_file.sun You may provide an output file name. It can be any name that you choose. By convention, SUN rasterfile images have a ".sun" file name extension, but you can omit it if you wish. If you provide no name, then "drawmap.sun" is used. -l latitude_low,longitude_low,latitude_high,longitude_high You usually must provide latitude and longitude coordinates that define two diagonal corners of the image. They must be separated by a comma or other non-space character (as in: -l 34.3,- 109,35.9,-109.713), and they must be in decimal degrees. Note that east longitude is positive and west longitude is negative. Similarly, north latitude is positive and south latitude is negative. If you only provide one "-d dem_file" option, then you can omit the "-l", and the corners of the single DEM file will be used to define the map boundaries. This is useful when you are simply trying to figure out what area a given DEM file covers. -d dem_file You can provide as many DEM files as you want. Since each one - 4 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) covers a one degree block, it can take quite a few to cover the image if you specify a large latitude/longitude range for the image boundaries. (You don't, of course, have to provide enough files to cover the whole map area. Areas not covered by a DEM file will simply have a white background. If you have selected the -c option, there will be anomalous contour lines along the edges of these white areas. Sorry.) The DEM files will be processed into multicolored shaded relief (or contour lines, if you specify the -c option), serving as a background for any other features you add to the map. If you are trying to draw a contour map using hypsographic data from DLG files (as opposed to drawing a contour map using the -c option and the data in the DEM files), then you probably don't want to provide any DEM files, since the DEM data will make the contour lines from the DLG files hard to follow. -c contour_interval_in_meters This option has no effect unless you provide one or more DEM files. The DEM files are normally processed into multicolored shaded relief. If you include the -c option, then the shaded relief is replaced by a set of contour lines that represent elevations separated by the given contour interval (in meters). Note that it is also possible to generate contour lines by using data in hypsographic DLG files, making the -c option seem somewhat redundant. However, at the present time, the area covered by the available DEM files is a large superset of the area covered by hypsographic DLG files. Furthermore, the -c option allows finer control over the spacing of contour lines than is available with hypsographic DLG data. -g gnis_file Only one GNIS file is allowed, which is not really a restriction since you can edit these files with an ordinary text editor, so that they contain whatever place names you want to include. In fact, it is normally necessary to winnow out much of the available GNIS data; otherwise the map would be plastered nearly solid with place names. The GNIS data generally come in separate files, one for each US state. Files can be in one of two different formats: a fixed-field-width format in which fields are padded out with white space, and a tokenized format in which the fields are separated by the delimiter "','". You can mix together records from both formats in your customized GNIS file. The llsearch program (included in the drawmap package) allows you to extract all place names within a certain range of latitudes and longitudes. You can manually edit the resulting extracted data and make further reductions. Each GNIS entry has a field that denotes its type, such as "ppl" for a populated place and "summit" for a mountain top. The place names are added to the image on top of any other features that you choose to include. - 5 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) -a attribute_file There are three high-level types of objects in a DLG file: Nodes (points where lines join), Areas, and Lines. These objects often have attribute codes associated with them. Each attribute code consists of a major code and a minor code. The major code denotes a particular general type of feature, such as 050 for hydrographic features. The minor code denotes a subtype, such as 412 for a stream, or 421 for a lake or pond. You can provide an attribute file to control what DLG information is included in the image. Each line in the file consists of a letter 'N', 'A', or 'L' (for Node, Area, or Line), followed by a pair of numbers to denote the major and minor codes, followed by any comments you choose to add. The fields should be separated by white space. Lines that begin with '#', or white space, are ignored. A negative number for either the major or minor code matches anything. Thus, an attribute specification of "L -1 -1" will draw all lines in the DLG files, whether they have associated attribute codes or not. (Omitting the attribute file, or providing the "L -1 -1" attribute specification, guarantees that every possible line is drawn, except for the "neatlines" that form a rectangle around the boundaries of the data from each DLG file.) If only the minor code is negative, then all lines of a given major type are drawn. (For example, an attribute specification of "L 050 -1" will match all hydrographic features.) Roads and trails show up in red, hydrographic features in blue, hypsographic data in orange, boundaries in gray, and other data in black. At present, drawmap parses Node data from the DLG file, but does nothing at all with it. If no attribute file is given, drawmap will ignore the Area data from the DLG file. If Area attributes are specified in the attribute file, then drawmap will attempt to fill the specified types of areas with the same color as the boundary lines that surround them. The chief use for this is to fill in lakes, reservoirs, and the like. However, because the area-filling algorithm is currently not very robust, and because the area data in the DLG file can be somewhat ambiguous, it is theoretically possible for the outside of an area to be filled in instead of the inside. (I have not had this happen in practice, except when stretching a map in one direction by specifying odd map dimensions with the "-x" and "-y" options. However, I haven't tried drawing maps with all of the billions of bytes of available data.) This potential problem is the reason why areas are not filled in unless you make an explicit request in an attribute - 6 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) file. A more common problem is that sometimes lakes or rivers will be only partially filled in. The reasons for this are beyond the scope of this manual page, but are discussed in detail in comments in the drawmap source code. The distribution for drawmap includes a file, called "attrib_codes," which is pulled from a USGS guide, and describes the various major and minor codes. The distribution also contains a sample attribute file, called "attributes." The sample attribute file contains Area attribute specifications that will cause lakes, ponds, streams, and reservoirs to be filled in. Precious little error checking is done on the data in the attribute file, so be careful. There is a debugging feature associated with the attribute file. If you specify a major code of 10000, and a minor code of your choosing, then the minor code is taken to be a specific node, area, or line identifier. (Within each node, area, or line record in a DLG file, the first integer in the record is an identifier for the node, area, or line. In general the nodes, areas, and lines are numbered sequentially, starting at 1.) Thus, by specifying area or line attributes with major codes set to 10000, you can draw individual areas or lines from a DLG file. This can be useful when you are trying to fine-tune a map or find the source of some problem. When using this feature, it is probably not a good idea to include more than one DLG file in the input arguments. This is because the node, area, and line identifiers are unique within individual files but are re-used from file to file. Thus, if you specify multiple DLG files, you may have a hard time figuring out which file is the source of each area or line on the output map. -x x_size and -y y_size The horizontal and vertical dimensions of the map, in picture elements (pixels), can be specified via the x and y options. You can supply either or both of them. If you don't provide them, they will be selected so that the DEM data can be displayed at one half of full resolution. (Full resolution is 1200 pixels per degree of longitude or latitude). It is generally desirable to specify small x and y values, when you are first trying to fine tune your map, because (at full resolution) even a single one- degree block covers a 1200 by 1200 image, which is larger than many display screens. Note that the x and y values define the boundaries of the actual map area, but do not define the size of the output image. Drawmap also adds a white border around the image, which makes the output image a bit larger than the x and y values would - 7 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) otherwise imply. Note also, that it is best to choose x and y values that are some integer multiple or sub-multiple of "1200 times the width and height of the image in degrees of longitude and latitude." For example, if the image is to cover an area that is 0.1 degree square, then the automatically-chosen value for x and y is 60, and full resolution would require x and y to be set to 120. If you want to specify your own dimensions with "-x" and "-y", then it is best to choose an integer multiple or sub-multiple of the full resolution of 120. Choices, in this case, might include 30, 120, 240, and so on. If you choose strange values for x and y, then the program may produce shaded relief that contains odd- looking linear artifacts. If you aren't providing DEM data, then you don't need to worry about this constraint. Odd-numbered image dimensions are inconvenient when working with SUN rasterfiles. If you give odd-numbered dimensions (such as 137 by 141), drawmap will silently make the dimensions even (as in 138 by 142). dlg_file Any argument that doesn't match any of the above options is assumed to be a DLG file. You can add as many as you like. (There is a hard-coded limit in the program of 400 files, but feel free to increase it.) Note that files are processed in the order given, and each file is overlaid by the ones that come after it. Thus, you generally want to put "transportation" files after "hydrography" files, so that roads will be shown as crossing over streams instead of the other way around. EXAMPLES Generate a simple shaded relief map for a portion of the southern California coast, with the size of the map set to a reduced resolution of 300x300 pixels (the default would be 600x600, and full resolution would be 1200x1200): drawmap -d santa_ana-w.gz -l 33,-117,34,-118 -x 300 -y 300 Extract the upper right quadrant of the above map, and display it at full resolution: drawmap -d santa_ana-w.gz -l 33.5,-117,34,-117.5 -x 600 -y 600 Add in some place names from a GNIS file you have prepared in advance (using llsearch): drawmap -g gnis_santa_ana_west -d santa_ana-w.gz -l 33.5,-117,34,-117.5 -x 600 -y 600 - 8 - Formatted: April 26, 2024 DRAWMAP(1) DRAWMAP(1) Add in some DLG files for hydrography: drawmap -g gnis_santa_ana_west -d santa_ana-w.gz -l 33.5,-117,34,-117.5 -x 600 -y 600 santa_ana-e_CA/hydrography/SN1.HYF03.opt.gz santa_ana-e_CA/hydrography/SN1.HYF04.opt.gz santa_ana-e_CA/hydrography/SN1.HYF07.opt.gz santa_ana-e_CA/hydrography/SN1.HYF08.opt.gz LIMITS As distributed, drawmap is limited to 20 DEM files, 400 DLG files, one GNIS file, and one attribute file. The DEM and DLG file limits are easily changed in the code. As explained above, the GNIS limitation is not really a limitation, since you can concatenate as many GNIS records as you want into a single file. I'm not sure how to implement multiple attribute files, or even what they would be used for. Another limitation arises from the fact that drawmap must be able to read all of the input data into memory. If you want to produce large maps, then you must have large memory. - 9 - Formatted: April 26, 2024