Manual Page Result
0
Command: proj | Section: 3 | Source: UNIX v10 | File: proj.3
PROJ(3X) PROJ(3X)
NAME
orient, normalize - map projections
SYNOPSIS
orient(lat, lon, rot)
double lat, lon, rot;
normalize(p)
struct place *p;
DESCRIPTION
Users of map(7) may skip to the description of `Projection generators'
below.
The functions orient and normalize plus a collection of map projection
generators are loaded by option -lmap of ld(1). Most of them calculate
maps for a spherical earth. Each map projection is available in one
standard form, into which data must be normalized for transverse or
nonpolar projections.
Each standard projection is displayed with the Prime Meridian (longi-
tude 0) being a straight vertical line, along which North is up. The
orientation of nonstandard projections is specified by orient. Imagine
a transparent gridded sphere around the globe. First turn the overlay
about the North Pole so that the Prime Meridian (longitude 0) of the
overlay coincides with meridian lon on the globe. Then tilt the North
Pole of the overlay along its Prime Meridian to latitude lat on the
globe. Finally again turn the overlay about its `North Pole' so that
its Prime Meridian coincides with the previous position of (the over-
lay's) meridian rot. Project the desired map in the standard form ap-
propriate to the overlay, but presenting information from the underly-
ing globe. It is not useful to use orient without using normalize.
Normalize converts latitude-longitude coordinates on the globe to coor-
dinates on the overlaid grid. The coordinates and their sines and
cosines are input to normalize in a place structure. Transformed coor-
dinates and their sines and cosines are returned in the same structure.
struct place {
double radianlat, sinlat, coslat;
double radianlon, sinlon, coslon;
};
The projection generators return a pointer to a function that converts
normalized coordinates to x-y coordinates for the desired map, or 0 if
the required projection is not available. The returned function is ex-
emplified by proj in this example:
struct place pt;
int (*proj)() = mercator();
double x, y;
orient(45.0, 30.0, 180.0); /* set coordinate rotation */
. . . /* fill in the pt structure */
normalize(&pt); /* rotate coordinates */
if((*proj)(&pt, &x, &y) > 0) /* project onto x,y plane */
plot(x, y);
The projection function (*proj)() returns 1 for a good point, 0 for a
point on a wrong sheet (e.g. the back of the world in a perspective
projection), and -1 for a point that is deemed unplottable (e.g. points
near the poles on a Mercator projection).
Scaling may be determined from the x-y coordinates of selected points.
Latitudes and longitudes are measured in degrees for ease of specifica-
tion for orient and the projection generators but in radians for ease
of calculation for normalize and proj. In either case latitude is mea-
sured positive north of the equator, and longitude positive west of
Greenwich. Radian longitude should be limited to the range -pi <= lon
< pi.
Projection generators
Equatorial projections centered on the Prime Meridian (longitude 0).
Parallels are straight horizontal lines.
mercator() equally spaced straight meridians, conformal,
straight compass courses
sinusoidal() equally spaced parallels, equal-area, same as
bonne(0)
cylequalarea(lat0) equally spaced straight meridians, equal-
area, true scale on lat0
cylindrical() central projection on tangent cylinder
rectangular(lat0) equally spaced parallels, equally spaced
straight meridians, true scale on lat0
gall(lat0) parallels spaced stereographically on prime meridian,
equally spaced straight meridians, true scale on lat0
mollweide() (homalographic) equal-area, hemisphere is a circle
Azimuthal projections centered on the North Pole. Parallels are con-
centric circles. Meridians are equally spaced radial lines.
azequidistant() equally spaced parallels, true distances from
pole
azequalarea() equal-area
gnomonic() central projection on tangent plane, straight great
circles
perspective(dist) viewed along earth's axis dist earth radii
from center of earth
orthographic() viewed from infinity
stereographic() conformal, projected from opposite pole
laue() radius = tan(2xcolatitude), used in xray crystallography
fisheye(n) stereographic seen from just inside medium with re-
fractive index n
newyorker(r) radius = log(colatitude/r): extreme `fisheye' view
from pedestal of radius r degrees
Polar conic projections symmetric about the Prime Meridian. Parallels
are segments of concentric circles. Except in the Bonne projection,
meridians are equally spaced radial lines orthogonal to the parallels.
conic(lat0) central projection on cone tangent at lat0
simpleconic(lat0,lat1) equally spaced parallels, true scale on
lat0 and lat1
lambert(lat0,lat1) conformal, true scale on lat0 and lat1
albers(lat0,lat1) equal-area, true scale on lat0 and lat1
bonne(lat0) equally spaced parallels, equal-area, parallel lat0
developed from tangent cone
Projections with bilateral symmetry about the Prime Meridian and the
equator.
polyconic() parallels developed from tangent cones, equally
spaced along Prime Meridian
aitoff() equal-area projection of globe onto 2-to-1 ellipse,
based on azequalarea
lagrange() conformal, maps whole sphere into a circle
bicentric(lon0) points plotted at true azimuth from two centers
on the equator at longitudes +-lon0, great circles are straight
lines (a stretched gnomonic projection)
elliptic(lon0) points are plotted at true distance from two cen-
ters on the equator at longitudes +-lon0
globular() hemisphere is circle, circular arc meridians equally
spaced on equator, circular arc parallels equally spaced on 0-
and 90-degree meridians
vandergrinten() sphere is circle, meridians as in globular, cir-
cular arc parallels resemble mercator
Doubly periodic conformal projections.
guyou() W and E hemispheres are square
square() world is square with Poles at diagonally opposite cor-
ners
tetra() map on tetrahedron with edge tangent to Prime Meridian
at S Pole, unfolded into equilateral triangle
hex() world is hexagon centered on N Pole, N and S hemispheres
are equilateral triangles
Miscellaneous projections.
harrison(dist,angle) oblique perspective from above the North
Pole, dist earth radii from center of earth, looking along the
Date Line angle degrees off vertical
trapezoidal(lat0,lat1) equally spaced parallels, straight merid-
ians equally spaced along parallels, true scale at lat0 and lat1
on Prime Meridian
Retroazimuthal projections. At every point the angle between vertical
and a straight line to `Mecca', latitude lat0 on the prime meridian, is
the true bearing of Mecca.
mecca(lat0) equally spaced vertical meridians
homing(lat0) distances to `Mecca' are true
Maps based on the spheroid. Of geodetic quality, these projections do
not make sense for tilted orientations. For descriptions, see corre-
sponding maps above.
sp_mercator()
sp_albers(lat0,lat1)
SEE ALSO
map(7), map(5), plot(3)
BUGS
Only one projection and one orientation can be active at a time.
The west-longitude-positive convention betrays Yankee chauvinism.
bowell PROJ(3X)