[Proj] Transverse Mercator algorithm

Charles Karney ckarney at sarnoff.com
Wed Sep 3 16:59:53 EDT 2008


 >> There is, however, one noteworthy difference.  The Swedish algorithm
 >> is only approximately conformal, whereas the Finnish method is
 >> conformal (to round-off).  This is easily remedied by substituting
 >> the exact formula for the conformal latitude (as is done in the
 >> Finnish report).
 >
 > In general, I am not that interested in answers to machine precision
 > merely to about 0,0001mm or 0,001mm would be acceptable.

Fair enough.  Nevertheless, it does seem worth preserving the conformal
property to machine precision -- especially when it can be done so
easily.  (As an example of why this is useful, you can compute accurate
transformations from one UTM zone to the neighboring one which rely on
the fact that the transformation is conformal.  A 4-point fit gives 2um
accuracy over a 10km x 10km area.)

 >> For my purposes, the exact method serves chiefly to gauge the
 >> accuracy of the approximate method.  In particular, the error in the
 >> Finnish and
 >
 > That is a useful and valuable asset.
 >
 >> The exact method and the derivations of the various series
 >> approximations are all done in macsyma.  You'll probably need to have
 >> macsyma installed if you want to use these.
 >
 > I have maxima and wxmaxima on my machine which seem to be related some
 > time ago.  It is my understanding that macsyma is a commercial product
 > and thus outside my pocketbook.  I do everything on the cheap.  ;-) It
 > allows me to make everything I do free.

No need to pay.  I use the free SourceForge version.

It'll take a day or so to make my macsyma code for the exact transverse
Mercator transformation presentable.  In the meantime, perhaps you can
verify that your version of maxima functions the way I expect...

Download

     http://charles.karney.info/geographic/ellint.mac

Start maxima, and at the prompts, enter:

     load("ellint.mac")$
     ei(0.5b0+%i*0.3b0,0.1b0);

You should see something like:

     $ maxima
     Maxima 5.15.0 http://maxima.sourceforge.net
     Using Lisp CLISP 2.43 (2007-11-18)
     Distributed under the GNU Public License. See the file COPYING.
     Dedicated to the memory of William Schelter.
     The function bug_report() provides bug reporting information.
     (%i1) load("ellint.mac")$
     (%i2) ei(0.5b0+%i*0.3b0,0.1b0);
     (%o2) 2.96791299781263464924153153342948346508216221524596248948086\
     569795186664726317202946771827533813431304024592226608707871b-1 %i +
     4.99982389810326059482523070296819795538149014362475838573470325689\
     693122595700138979618859431972907386511841619290335085b-1
     (%i3)

If you get the same or equivalent output then you should be in good
shape.

 > The math presented by Thompson and Lee seem quite at odds with several
 > of the expanded range methods in that they express the problem in
 > Jacobian functions.  Is there a parallel of have you looked into their
 > methods?

The Finnish algorithm is related.  The series relating [xi,eta] and
[xi',eta'] are just expansions (in eccentricity) of the transformation
between two of the TM projections described on p. 92 of Lee's 1976
monograph (namely what he calls the spheroidal projection [xi',eta'] and
the Gauss-Krueger projection [xi,eta]).

-- 
Charles Karney <ckarney at sarnoff.com>
Sarnoff Corporation, Princeton, NJ 08543-5300

URL: http://charles.karney.info
Tel: +1 609 734 2312
Fax: +1 609 734 2662


More information about the Proj mailing list