blob: 80e1eebff0d0434e975ddda5d752e3e63396a4ee [file] [log] [blame]
map \- digitized map formats
Files used by
.IR map (7)
are a sequence of structures of the form:
struct {
signed char patchlatitude;
signed char patchlongitude;
short n;
union {
struct {
short latitude;
short longitude;
} point[n];
struct {
short latitude;
short longitude;
struct {
signed char latdiff;
signed char londiff;
} point[\-n];
} highres;
} segment;
.B short
stands for 16-bit integers and there is no padding within or between
.BR structs .
Shorts are stored in little-endian order, low byte first.
To assure portability,
.I map
accesses them bytewise.
.L patchlatitude
.L patchlongitude
tell to what
10-degree by 10-degree
patch of the earth's surface a segment belongs.
Their values range from \-9 to 8 and from \-18 to 17,
respectively, and indicate the coordinates of the
southeast corner of the patch in units of 10 degrees.
Each segment of
.RB | n |
points is connected; consecutive segments
are not necessarily related.
Latitude and longitude
are measured in units of 0.0001 radian.
.B n
is negative, then
differences to the first and succeeding points
are measured in units of 0.00001 radian.
Latitude is counted positive to the north and
longitude positive to the west.
The patches are ordered lexicographically by
.L patchlatitude
.LR patchlongitude .
A printable
index to the first segment of each patch
in a file named
.I data
is kept in an associated file named
.IB data .x\f1.
Each line of an index file contains
.L patchlatitude,
.L patchlongitude
and the byte position
of the patch
in the map file.
Both the map file and the index file are ordered by
patch latitude and longitude.
.IR map (7)
The data comes from the World Data Bank I and II and
U.S. Government sources: the Census Bureau, Geological
Survey, and CIA.