sdts2dlg(1) Convert a USGS SDTS DLG to a DLG in the `optional' format.


sdts2dlg [-L] | [sdts_dlg_file.ddf [output_file_name]]


The U.S. Geological Survey (USGS) provides sites on the Internet with a lot of Digital Line Graph (DLG) data. Depending on the resolution of the data, it may be available in one of at least two different formats: the `optional' DLG format, or the Spatial Data Transfer System (SDTS) format. The 24K DLG data (which are also called 7.5-minute DLG data) are only available for free download in the SDTS format.

The drawmap program can read files in SDTS format; but the SDTS information comes in the form of archives, each of which contains numerous files. It may sometimes be more efficient, and perhaps simpler, to store the data in the `optional' format. Sdts2dlg is a program that converts each SDTS archive into a single optional-format DLG file. Currently sdts2dlg only works with 24K and 100K DLG data.

If you invoke the program with the "-L" argument, it will print some license information and exit. In normal use, the first argument is an SDTS file name.

Each SDTS DLG archive should contain one or more files with names of the form ????LE@@.DDF, where the '?' symbol stands for any single character, and the '@' symbol stands for any single digit. If you provide a single such file as an argument, sdts2dlg will produce an optional-format DLG file, based on the given SDTS file and the other files in the SDTS archive. (When you unpack the SDTS archives, you can change all of the resulting file names to all lower case and/or compress all of the files with the gzip program. If you are going to change to lower case, change all of the files. If you are going to compress the files, compress all of them.)

The USGS takes each 1-degree-square block of latitude and longitude, and divides it into an eight-by-eight grid of 7.5-minute-square `quads'. The rows of this grid are labeled 'a' to 'h' from bottom to top, and the columns are labeled `1' through `8' from right to left. Each quad is then referred to by a name of the form `AABBBCD', where `AA' is the latitude of the southeast corner of the 1-degree block, `BBB' is the longitude of the southeast corner, and `C' and `D' represent the corresponding row and column labels. If you don't specify an output file name, the output file produced by sdts2dlg will have the form `AABBBCD.dlg'. For 100K DLG files, each of which generally covers 16 quads, this naming is also used, with the `C' and `D' code being the same as for the quad with the same southeast corner as the 100K DLG data. If you specify an output file name, then your name will be used instead.


Sdts2dlg attempts to recreate the original DLG-3 file, as it was before conversion to SDTS. Node entries include line lists, but no area lists. Area entries include line lists, no node lists, and no area coordinate lists. Line entries include line coordinate lists. Attributes are included as major-minor pairs.

Try as it might, though, sdts2dlg is going to produce files that differ from the originals. In the Node entries, for example, the line lists have no preferred ordering, and the output from sdts2dlg is unlikely to reproduce the ordering of the original DLG file. In the Area entries, the line lists do have a specified ordering, but there is no rule for choosing which line to start each list with. Thus, the lists are unlikely to be exact duplicates of the original file. Neither of these differences should be a problem. The lists are still valid, even if they are not identical to the originals.

For the universe polygon (which completely surrounds the data coverage area) the Universal Transverse Mercator (UTM) coordinates of its representative point are likely to be different from the originals. The SDTS files do not appear to encode this particular representative point, so sdts2dlg inserts the coordinates of the southwest corner of the map area.

Some floating-point numbers will have a different format from their original USGS versions. The USGS files normally put the first significant digit after the decimal point, while sdts2dlg puts it in front of the decimal point. The actual numeric values are the same, but the format differs.

There are two fields in the header that don't always show up in existing optional-format files, although the specification allows them: the horizontal datum and the vertical datum. These are too useful to leave out, so sdts2dlg includes them.

Finally, there may be data discrepancies due to errors in the program. Errors are a distinct possibility when it comes to attributes. There are many different kinds of possible attributes, and I have not yet found adequate test data for some of them.