[Proj] C++ code for exact Transverse Mercator Projection

Gerald I. Evenden geraldi.evenden at gmail.com
Tue Sep 16 21:50:24 EDT 2008


On Tuesday 16 September 2008 5:51:06 pm Charles Karney wrote:
	...
> This is just a straightforward implementation of transformations given
> by Lee in his 1976 monograph.  The resulting code is quite fast.  I
> haven't done detailing timing on it.  However I estimate that it's no
> more than a "few" times slower than a standard series solution (a la
> Krueger).

Your claim that the all the code in your procedure is going to come within 
a '"few" times' of the following:

FORWARD(e_forward); /* ellipse */
    double al, als, n, cosphi, sinphi, t;

    sinphi = sin(lp.phi); cosphi = cos(lp.phi);
    t = fabs(cosphi) > 1e-10 ? sinphi/cosphi : 0.;
    t *= t;
    al = cosphi * lp.lam;
    als = al * al;
    al /= sqrt(1. - P->es * sinphi * sinphi);
    n = P->esp * cosphi * cosphi;
    xy.x = P->k0 * al * (FC1 +
        FC3 * als * (1. - t + n +
        FC5 * als * (5. + t * (t - 18.) + n * (14. - 58. * t +
         n * (13. - 64. * t + n * (4. - 24 * t)))
        + FC7 * als * (61. + t * ( t * (179. - t) - 479. ) )
        )));
    xy.y = P->k0 * (proj_mdist(lp.phi, sinphi, cosphi, P->en) - P->ml0 +
        sinphi * al * lp.lam * FC2 * ( 1. +
        FC4 * als * (5. - t + n * (9. + 4. * n) +
        FC6 * als * (61. + t * (t - 58.) + n * (270. - 330 * t +
         n * (445. - 680. * t + n * (324. - 600. * t + n * (88. - 192. * t))))
        + FC8 * als * (1385. + t * ( t * (543. - t) - 3111.) )
        ))));
   return(xy);
}
??  Hmmmm.  I am not strutting my code as the above is straight forward 
implementation of the currently accepted TM with the only exception being the 
proj_mdist procedure which is a fairly simple series procedure that is more 
precise that the standard version.  The above is about 24 lines.

Right now I am trying to get the c++ routines to compile but I can see this 
may take a bit.  First problem was reference to '/GeographicLib/*.hpp' which 
file structure no longer exists in this distribution.  That was reasonably 
simple but I have another snag at the moment.  The distribution was not ready 
for prime time.  ;-)

Surely, there will be more later.  ;-)
	...
-- 
The whole religious complexion of the modern world is due
to the absence from Jerusalem of a lunatic asylum.
-- Havelock Ellis (1859-1939) British psychologist


More information about the Proj mailing list