Application Center - Maplesoft

App Preview:

Transverse projections

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application


 

Transverse Projections

Traditional cylindrical projections assume that the cylinder onto which the world is projected is tangential to (or cuts) a parallel. In transverse projections the cylinder is tangential to a meridian. If a line joining the north pole to the south pole is considered to be vertical, then the projected cylinder in the transverse case is horizontal. There are three transverse projections in the Maps package: the Cassini projection, the transverse cylindrical equal area, and the Transverse Mercator. The latter has become one of the most important of all map projections.

Cassini Projection

The coordinate information for the Cassini projection is

> `Maps/coords`[`Cassini`] :=
input = [alpha,phi],
coords = [lambda = ''readlib(`Maps/shiftf`)(alpha+Pi/2,Pi)'',
x = r*arcsin(cos(phi)*sin(lambda)),
y = r*(`if`(abs(phi) >= Pi/2,
signum(phi)*Pi,
arctan(tan(phi)/cos(lambda)))
+ Pi/2*(1-'signum'(cos(lambda)))),
[''readlib(`Maps/shiftf`)(x,Pi)'',
''readlib(`Maps/shiftf`)(y,Pi)'']],
params = [r],
view = [-180..180,-90..90,13,7,-90..90,-180..180]:

Note here the first line of the coords option which shifts the longitude so that the central meridian is 90 W.

> makeprojections(Cassini):

Warning: coordinates already exists, system redefined.

Warning: default information already exists, redefining.

The coordinate system can be plotted using coordplot, but it is necessary to use removelines to eliminate undesired line wraps.

> ccoords:=removelines(coordplot(Cassini,scaling=constrained)): ccoords;

[Maple Plot]

> cmap:=removelines(changecoords(world[ng,1866],Cassini)):

> a:=90: b:=180:
cbox := plot([[-a,-b],[-a,b],[a,b],[a,-b],[-a,-b]],color=black):

> plots[display]({cmap,cbox,ccoords});

[Maple Plot]

Transverse Mercator

The transverse Mercator is one of the more complicated projections to create using the Maps package (a good reason for including it as a predefined system). The complication arises because the coordinate system is undefined at the poles, necessitating the use of traperror and lasterror in the command sequence. As with the Cassini, the central meridian is 90 W.

> `Maps/coords`[`Transverse Mercator`] :=
input = [alpha,phi],
coords = [lambda = ''readlib(`Maps/shiftf`)(alpha+Pi/2,Pi)'',
y = r*(`if`(abs(phi) >= Pi/2,
signum(phi)*Pi,
arctan(tan(phi)/cos(lambda)))
+ Pi/2*(1-'signum'(cos(lambda)))),
x = ''traperror(r/2*ln((1+cos(phi)*sin(lambda))/
(1 - cos(phi)*sin(lambda))))'',
''[`if`(lasterror = '`lasterror`',
readlib(`Maps/shiftf`)(x,Pi),FAIL),
readlib(`Maps/shiftf`)(y,Pi)]''],
params = [r],
view = [-180..180,-90..90,13,7,-180..180,-180..180]:

> makeprojections(`Transverse Mercator`);

Warning, check parameter definitions r <> lasterror

Warning: coordinates already exists, system redefined.

Warning: default information already exists, redefining.

[Maple Math]

> tmgrid:=removelines(coordplot(`Transverse Mercator`,scaling=constrained)):

> tmmap:=removelines(changecoords(world[ng,1866],`Transverse Mercator`)):

> plots[display]({tmmap,tmgrid},axes=boxed,xtickmarks=0,ytickmarks=0,view=[-110..110,-180..180]);

[Maple Plot]

>