USGS DEM
The USGS DEM standard is a geospatial file format developed by the United States Geological Survey for storing a raster-based digital elevation model. It is an open standard, and is used throughout the world. It has been superseded by the USGS's own SDTS format but the format remains popular due to large numbers of legacy files, self-containment, relatively simple field structure and broad, mature software support.
DEM Level
A USGS DEM can be classified into one of four levels of quality. This is due to the multiple methods of data collection, and certainty in the data.DEM level | DEM series | Production process | Comments |
Level 1 | 7.5-minute 30-minute | Created by autocorrelation or manual profiling from aerial photographs | May be derived from a wide variety of sources using any of a number of USGS approved techniques and instrumentation |
Level 2 | All series | Created from digital line graph contours or equivalent, from any USGS map series up to 1:100000 scale | The accuracy and data spacing are intended to support computer applications that analyze hypsographic features to a level of detail similar to manual interpolations of information from printed source maps |
Level 3 | 7.5-minute | Created from DLG that have vertically integrated with all categories of hypsography, hydrography, ridge line, break line, drain files, and all vertical and horizontal control network | Requires a system of logic to interpret the data |
Level 4 | All series | Created from electronic imaging sensor systems, either active or passive | The process includes all additional post-processing required to bring the DEM grid to its final form |
Format Structure
The USGS DEM format is a self-contained set of ASCII-encoded 1024-byte blocks that fall into three record categories called A, B, and C. There is no cross-platform ambiguity since line ending control codes are not used, and all data including numbers is represented in readable text form. There is no known binary analogue of the format, although it is common practice to compress the files with gzip.Floating-point numbers are encoded using Fortran scientific notation, so C/C++ programs need to swap the "D" exponent-indicating character with "E" when parsing.
A record fields hold the origin, type, summary statistics and the measurement systems used by the profiles. The A record appears once as the file's header, the C record also appears once as the trailer, and multiple B records comprise the elevation data. A and C records each fit within one block, but a single B record typically requires multiple blocks. When such block-spanning occurs, data are shifted to start cleanly on each block boundary. A records also come in "old" and "new" flavors, because the USGS added several fields to the A record. One of the key items is the quadrangle, which is a set of four terrestrial coordinates describing the four-sided polygon enclosing the area of interest.
Starting Col | Ending Col | Description |
0 | 134 | Descriptive Name of the represented area |
150 | 155 | ? |
156 | 161 | ? |
162 | 167 | UTM Zone number |
529 | 534 | Unit of resolution of ground grid |
535 | 540 | Unit of resolution Elevation |
546 | 569 | Easting of the South West corner |
570 | 593 | Northing of the South West corner |
594 | 617 | Easting of the North West corner |
618 | 641 | Northing of the North West corner |
642 | 665 | Easting of the North East corner |
666 | 689 | Northing of the North East corner |
690 | 713 | Easting of the South East corner |
714 | 737 | Northing of the South East corner |
738 | 761 | Minimum elevation found in this file |
762 | 786 | Maximum elevation found in this file |
816 | 827 | Resolution per grid cell East – West |
828 | 839 | Resolution per grid cell North – South |
858 | 863 | Number of columns |
B records are a variable-length longitudinal column of raster elevations that start at a specified location. They are some multiple of 1024 bytes long and contain a small header summarizing the profile. The elevations are contiguous; breaks or other discontinuities are expressed using "void" elevations of value -32767. Each elevation is described as a six-character readable integer occupying a fixed location in a block. The profile header only appears in the first block, so subsequent blocks hold more elevation values. When reading the DEM file from first byte to last, one reads the profiles as columns from west to east. The elevations within a profile run from south to north. The variable-location and variable-length nature of profiles stems mainly from the use of the UTM ground reference system. Since measurements within UTM employ fixed distances, the quadrangle must slightly distort to map such locations onto the spherical Earth. This distortion usually manifests as a rotated square, hence the elevation columns near the east and west edges start more northward and contain fewer samples.
C records contain root-mean squared error quality control data, using ten six-character integer fields.