Interrupted Projections
Interrupted projections are those in which the northern and/or southern hemispheres are divided into a number of lobes. This is done in order to minimize the distortion of the major land masses. The projection formulae are essentially the same as for the uninterrupted forms but applied to a restriced range of longitudes. There are four interrupted projections in the Maps package: Boggs, Homolosine, Mollweide, and Sinusoidal. The interrupted sinusoidal projection can be created as shown below:
>
`Maps/coords`[`interrupted Sinusoidal`] :=
input = [theta,phi],
coords = [ s = ''readlib(`Maps/break`)(
[theta,phi], [-40],[-100,-5,80])'',
_theta = ''readlib(`Maps/shiftf`)(theta-s,180)'',
''`Maps/Sinusoidal`(_theta,phi,r)
+ [s*r,0]''],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-90..90]:
>
makeprojections(`interrupted Sinusoidal`):
The end points of each lobe are identified in the line of code that includes the
`Maps/break`
construct. The procedure created by the above command appears next.
>
print(`Maps/interrupted Sinusoidal`);
The coordinates for this projection are shown below.
>
coordplot(`interrupted Sinusoidal`,scaling=constrained);
and the world map (with the 50 largest land/water bodies) appears next.
>
changecoords(world[50],`interrupted Sinusoidal`);
Note that the act of changing the coordinates introduces a number of undesired connections between land/water bodies that appear in two different lobes. We can use removelines to eliminate them.
>
splot:=removelines(changecoords(world[50],`interrupted Sinusoidal`),10): splot;
This is better, but some of the parallels are left hanging, so to speak. To complete the diagram we add new lines that emanate from just slightly to the left and right of each break point.
>
edgeplot:=plot([[-40.1, x, x = 0..90],[-39.9, x, x = 0..90],[-99.9, x, x = 0..-90],[-100.1, x, x = 0..-90],[-5.1, x, x = 0..-90],[-4.9, x, x = 0..-90],
[79.9, x, x = 0..-90], [80.1, x, x = 0..-90]], coords = `interrupted Sinusoidal`, color
= black,scaling=constrained,axes=none): edgeplot;
These edges are located just slightly to either side of the breaks in each hemisphere. We can combine these images/interupt to give the complete map projection.
>
plots[display]({splot,edgeplot});
Interrupted Mollweide
>
print(`Maps/interrupted Mollweide`);
>
display(removelines(changecoords(world[50],`interrupted Mollweide`), 10), plot([[-40.1, x, x = 0..90],[-39.9, x, x = 0..90],[-99.9, x, x = 0..-90],[-100.1, x, x = 0..-90],[-5.1, x, x = 0..-90],[-4.9, x, x = 0..-90], [79.9, x, x = 0..-90], [80.1, x, x = 0..-90]], coords = `interrupted Mollweide`, color
= black));
Interrupted Homolosine
The interrupted form of Goode's homolosine projection is quite complicated. The pole of the eastern lobe in the northern hemisphere is not the center of the lobe and shifts depending on the latitude. The projection is created as follows:
>
`Maps/coords`[`interrupted Homolosine`]:=
input = [theta, phi],
coords = [s ='' readlib(`Maps/break`)(
[theta,phi],[-30],[-120, -15, 75],
[DEFAULT,30],
[-165, DEFAULT, 30, 150])'',
_theta = ''readlib(`Maps/shiftf`)(theta-s,180)'',
''`Maps/Homolosine`(_theta,phi,r)
+ [s*r,0]'' ],
params = [r],
view = [-180 .. 180, -90 .. 90, 13, 7, -180 .. 180, -90 .. 90]:
makeprojections(`interrupted Homolosine`):
The map of the 50 largest land/water bodies can be plotted using the following command (note the creation of a border).
>
display(removelines(changecoords(world[50],`interrupted Homolosine`), 10), plot([[-30.1, x, x = 0..90],[-29.9, x, x = 0..90],[-119.9, x, x = 0..-90],[-120.1, x, x = 0..-90],[-15.1, x, x = 0..-90],[-14.9, x, x = 0..-90], [74.9, x, x = 0..-90], [75.1, x, x = 0..-90]], coords = `interrupted Homolosine`, color
= black));
>