Pseudocylindrical Projections
A cylindrical projection has parallel parallels and parallel meridians. A pseudocylindrical projection has parallel parallels but the meridians are not parallel. An example of a pseudocylindrical projection is the sinusoidal.
> print(`Maps/Sinusoidal`);
> coordplot(Sinusoidal,scaling=constrained);
> changecoords(world[1866],Sinusoidal);
A projection developed by J.E.E. Craster is similar to the sinusoidal but uses parabolas for the meridians.
>
mapcoords(Craster,
input = [lambda,phi],
coords = [[sqrt(3/Pi)*r*lambda*(2*cos(2*phi/3)-1),sqrt(3*Pi)*r*sin(phi/3)]],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-90..90]);
> coordplot(Craster,scaling=constrained);
> changecoords(world[50],Craster);
>
mapcoords(Parabolic,
input = [lambda,phi],
coords = [[r*1.53499*lambda*(2*cos(2*phi/3)-1),3.06998*r*sin(phi)/3]],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-90..90]);
The Mollweide Projection is an equal area pseudocylindrical with meridians as semi-ellipses.
> `Mollweide/x` := 2*sqrt(2)/Pi*r*lambda*cos(theta);
> `Mollweide/y`:=sqrt(2)*r*sin(theta);
where
is obtained by solving
> `Mollweide/theta`:=2*theta+sin(2*theta) = Pi*sin(phi): `Mollweide/theta`;
>
mapcoords(Mollweide,
input = [lambda,phi],
coords = [[`Mollweide/theta`, theta = 0],
[`Mollweide/x`,`Mollweide/y`]],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-90..90]):
As before, the keyword
coords
is the list of operations used to create the new coordinates. The last two equations represent the final conversion, any intermediate calculations are given by the preceding statements. In this example
mapcoords
notes the list that contains the equation to determine theta and invokes Newton's method (a procedure for which is included in the Maps package) to compute this angle. The equation
specifies the initial value of
used in the iteration.
> coordplot(Mollweide,scaling=constrained);
The Mollweide projection is one of the more time consuming projections, requiring 1110 seconds on a 233 MHz Pentium PC for the complete map of the world.
> changecoords(world[1866],Mollweide);
There are many other pseudocylindrical projections that have been proposed. Max Eckert devised half a dozen new projections. Some of them have straight meridians, the first is shown below.
> coordplot(`Eckert I`,scaling=constrained);
The Eckert IV projection has often been used by the National Geographic Society (NGS) as an inset map. It is given by the following equations:
> `Eckert IV/x`:=2*r*lambda*(1+cos(theta))/sqrt(4*Pi+Pi^2);
> `Eckert IV/y`:=2*sqrt(Pi)*r*sin(theta)/sqrt(4+Pi);
> `Eckert IV/theta`:=theta + sin(theta)* cos(theta) + 2 * sin(theta) = (4 + Pi) * sin(phi) /2: `Eckert IV/theta`;
> coordplot(`Eckert IV`,scaling=constrained);
> changecoords(world[1866],`Eckert IV`);
The Eckert IV projection required 750 seconds on a 233 MHz PC to transform the complete world map. The Eckert V shown below in coordinate form is an example of a flat-polar projection.
> coordplot(`Eckert V`,scaling=constrained);
> coordplot(`Eckert VI`,scaling=constrained);
McBryde and Thomas devised a number of pseudocylindrical projections, this is their fourth.
> changecoords(world[1866],`McBryde Thomas 4`);
Russian cartographers have devised many projections; some are named after the institute where many were developed. Here is one of them.
>
mapcoords(`TsNIIGAiK pseudocylindrical`,
input = [lambda,phi],
coords = [t=sin(lambda),
[r*(1-phi^2/6.16)*(0.87*lambda-'sign'(lambda)*lambda^4/1049.95),r*(phi+phi^3/12)]],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-90..90]);
> print(`Maps/TsNIIGAiK pseudocylindrical`);
> changecoords(world[50],`TsNIIGAiK pseudocylindrical`);