[Proj] Kruger 1912 inverse formulas are faster than I claimed.
Mikael.Rittri at carmenta.com
Thu May 29 09:12:38 EDT 2008
I must apologize. My timings for the Krüger
formulas in the inverse direction were wrong.
It's embarassing, but when I generated a lot of test
points, I did not realize that they could get latitudes
far outside the range of -90 to 90. I am not sure why
this affected my computations so much (since they are
not iterative), but it seems to have made the computation
about 10 times longer.
I have also managed to do a few real improvements.
For example, it turned out that calling sinh(t) and cosh(t),
on the same t, was inefficient on my computer. It was much
better to use the definition and write
double exp_t = exp(t);
double exp_minust = 1.0 / exp_t;
double sinh_t = 0.5 * (exp_t - exp_minust);
double cosh_t = 0.5 * (exp_t + exp_minust);
After these and a few other minor improvements, my current timings are
Snyder/tmerc 220 675
Krüger formulas 625 625
where the numbers give the milliseconds needed to process a million points.
So the Krüger inverse is not slower than tmerc. In the forward direction,
Krüger is around 3 times slower than tmerc.
So, after I have seen these figures, I do not see much need for a
A clever algorithm could call the tmerc forward where this is accurate
enough for the application, perhaps out to 6 or 9 longitude degrees
from the central meridian. Elsewhere, it would use the Krüger forward.
In the inverse direction, the algorithm could just as well use
Krüger formulas everywhere.
About the area of usefulness for the Krüger formulas, I do not see
any troubles around the north and south poles. The worst error
I found was that the inverse rounded a latitude, which should
be 89.999999401 or 6.7 cm from the pole, was rounded to 90.0 exactly.
The Krüger formulas do not work near the "west pole" and "east pole",
though (the points on the equator, 90 degrees from the central meridian.)
I am not sure yet exactly how near you can go. As a rough estimate,
I would say that the formulas work at least to 6000 km from the central
meridian and its antipodal meridian (true distance, not projected
distance), but I have not done enough tests yet.
I am sorry that I asked a question based on faulty data.
(I just hope that my figures are right this time!)
SE-404 28 Göteborg
Visitors: Sankt Eriksgatan 5
Tel: +46-31-775 57 37
Mob: +46-703-60 34 07
mikael.rittri at carmenta.com
From: proj-bounces at lists.maptools.org [mailto:proj-bounces at lists.maptools.org] On Behalf Of Mikael Rittri
Sent: den 22 maj 2008 11:04
To: proj at lists.maptools.org
Subject: [Proj] Transverse Mercator algorithm with good accuracy/speedtrade-off?
[--- Text deleted ---]
I have implemented the Swedish proposal[*], which was not too difficult, and I got it to agree with Oscar van Vlijmen's test point. But my implementation is about 4.5 times slower than tmerc in the forward direction, and about 15 times slower in the inverse direction. I doubt that I can improve the speed much.
[--- Text deleted ---]
More information about the Proj