<html><head></head><body name="Mail Message Editor"><div><font class="Apple-style-span" face="Georgia">Colleagues:</font><div><font class="Apple-style-span" face="Georgia"><br></font></div><div><font class="Apple-style-span" face="Georgia">I received an inquiry off list about the posting below from February 2010, so I will update the thread with recent developments.</font><div><span class="Apple-style-span" style=""><br></span></div><div><font class="Apple-style-span" face="Georgia">I have since stumbled onto N. Tissot’s work on this problem* and found that his solution yields the same results as mine. He was a lot smarter than I am, though, so his formulation is much more compact. He rolled the constraints into the Albers formula itself, a move that collapses away much of the calculation.<br><br>phiN = northern limit of region of interest<br>phiS = southern limit of region of interest<br><div><span class="Apple-style-span" style=""><br></span></div><div><span class="Apple-style-span" style=""> Initialization:</span></div><div><span class="Apple-style-span" style=""><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>double<span class="Apple-tab-span" style="white-space:pre"> </span>delta (<span style="color: #3200fd">0.5</span> * (phiN - phiS));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>double <span class="Apple-tab-span" style="white-space:pre"> </span>phi0 (<span style="color: #3200fd">0.5</span> * (phiN + phiS));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>double<span class="Apple-tab-span" style="white-space:pre"> </span>cosDelta = cos (delta);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><br></p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>n = sin (phi0);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>rN = <span style="color: #3200fd">1.0</span> / n;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>C = <span style="color: #3200fd">0.5</span> * (n/cosDelta + cosDelta*rN);</p><div><br></div></span></div></font></div><div><font class="Apple-style-span" face="Georgia"> Per point:</font></div><div><font class="Apple-style-span" face="Georgia"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>double<span class="Apple-tab-span" style="white-space:pre"> </span>rho = sqrt (<span style="color: #3200fd">2.0</span> * rN * (C - sin (phi)));</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>double<span class="Apple-tab-span" style="white-space:pre"> </span>theta = n * lambda;</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="font-size: medium;"><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br></span></font></span></font></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px"><span class="Apple-tab-span" style="white-space:pre"> </span>x = rho * sin (theta);</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco"><span class="Apple-tab-span" style="white-space:pre"> </span>y = -rho * cos (theta);</p><div><br></div></font></div><div><br></div><div><font class="Apple-style-span" face="Georgia">Regards,</font><div><font class="Apple-style-span" face="Georgia">— daan Strebe</font></div></div></div></div><div><font class="Apple-style-span" face="Georgia"><br></font></div><div><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">* </span></font><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">1881, </span></font><i><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">Mémoire sur la représentation </span></font></i><i><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">des surfaces et les projections des cartes </span></font></i><i><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">géographiques</span></font></i><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;">: Paris, Gauthier Villars, 337 p. + 60 p. tables.</span></font></div><div><font class="Apple-style-span" face="Georgia"><span class="Apple-style-span" style="background-color: transparent;"><br></span></font></div><div>______</div><div><span class="Apple-style-span" style=""><br></span></div><div><span class="Apple-style-span"><div>[Resending minus tables, since they exceeded the 40K limit for posting.]</div><div><br></div><div>On Feb 16, 2010, at 3:01:04 AM, "Jan Hartmann" <<a href="http://osgeo-org.1803224.n2.nabble.com/user/SendEmail.jtp?type=node&node=4583775&i=0" target="_top" rel="nofollow" link="external">[hidden email]</a>> wrote:<br><blockquote style="padding-left: 5px; margin-left: 5px; border-left-width: 2px; border-left-style: solid; border-left-color: blue; color: blue; "><div style="width: 749px; color: rgb(0, 0, 0); "><div id="felix-mail-header-block" style="color: black; background-color: white; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: silver; padding-bottom: 1em; margin-bottom: 1em; width: 749px; ">Do
you have a programmatic version of the algorithm? It's something that
would be really useful for a global map provider. I am working with the
Royal Tropical Institute here in Amsterdam (<a class="moz-txt-link-abbreviated" href="http://www.kit.nl" target="_top" rel="nofollow" link="external">www.kit.nl</a>),
on an index for their 10.000s of historical maps from all over the
globe. In the long run we would like to offer some thematic
functionality, with an optimal projection</div></div></blockquote><div>I
have no program code (that I can find or recall), though I found the
Maple V worksheet I constructed at the time, and from which I made the
corrections noted below. I also found tables I calculated giving optimal
standard parallels for pairs of bounding parallels.</div><div><br></div>On Feb 16, 2010, at 3:57:03<font class="Apple-style-span" size="3"><span class="Apple-style-span" style="background-color: transparent; font-size: 12px; "> AM, </span></font><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="background-color: transparent; font-size: 12px; ">Oscar van Vlijmen</span></font><font class="Apple-style-span" size="3"><span class="Apple-style-span" style="background-color: transparent; font-size: 12px; "> <ovv@hetnet.</span></font>nl> wrote:<br><blockquote style="padding-left: 5px; margin-left: 5px; border-left-width: 2px; border-left-style: solid; border-left-color: blue; color: blue; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="font-family: monospace; font-size: 11px; ">Very interesting!<br>But, could you please balance the parentheses in equation 4 (and 3), because <br>equation 4 cannot be calculated.<br></span></span></blockquote><br><div>Eek. Yes. Correcting, and using more uniform notation:</div><div><br></div><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">1) sin (phi[0]) = A +/- sqrt (A^2 - 1)</p><div><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">2) A = [sin (phi[N]) * cos^2 (phi[S]) - sin (phi[S]) * cos^2 (phi[N])] /</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; "> </span>[cos^2 (phi[S]) - cos^2 (phi[N])]</p><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">3) sin (phi[2]) = [sin (phi[1]) - 2 * sin (phi[0]) + sin (phi[1]) * sin^2 (phi[0])] /</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; "> </span>[2 * sin (phi[0]) * sin (phi[1]) - sin^2 (phi[0]) - 1]</p><div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; ">4) cos^2 (phi[1]) * sqrt [1 + sin^2 (phi[0]) - 2 * sin (phi[0]) * sin (phi[S])] -</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-tab-span" style="white-space: pre; "> </span>cos (phi[S]) * [1 + sin^2 (phi[0]) - 2 * sin (phi[0]) * sin (phi[1])] = 0</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" color="#0000FF"><br></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">Equation (4) is of the form</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><span class="Apple-style-span" style="font-family: Monaco; font-size: 11px; ">5) a * cos^2 (phi[1]) + b * sin (phi[1]) + c = 0</span></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">which has a closed-form solution, though it is a little messy. There</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica">a = sqrt [1 + sin^2 (phi[0]) - 2 * sin (phi[0]) * sin (phi[S])]</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica">b = 2 * cos (phi[S]) * sin (phi[0])</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica">c = - cos (phi[S]) - cos (phi[S]) * sin^2 (phi[0])</font></p><div><font class="Apple-style-span" face="Helvetica"><font class="Apple-style-span" face="Monaco" size="3"><span class="Apple-style-span" style="font-size: 11px;"><br></span></font></font></div><p></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium; ">with solution</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-style-span" style="background-color: transparent;">6) phi[1] = Atan2 (-[a*x^2 + c]/b], x)</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">where</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-style-span" style="background-color: transparent;">7) x = +/- sqrt (-4*a*c - 2*b^2 +/- 2*z) / (2*a)</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">and</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><span class="Apple-style-span" style="background-color: transparent;">8) z = sqrt (4*a*b^2*c + b^4 + 4*a^2*b^2)</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">The
sign for (1) is chosen as the opposite of the average of the signs of
the northern and southern bounding parallels. Using all combinations of
signs in (7) yields four solutions. The two that are between phiS and
phiN are the two of interest. (3) becomes superfluous in this scenario,
since it yields the same as one of the combinations. I have supplied a
few examples below. rn is the inset of the northern standard parallel as
a ratio of the latitudinal span of the region of interest; rs is the
southern.</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">Regards,</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;">— daan Strebe</span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-size: medium;"><br></span></font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[S] = 20<span class="Apple-tab-span" style="white-space:pre"> </span>phi[2] = 46.34188<span class="Apple-tab-span" style="white-space:pre"> </span>rn = 0.12192</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[N] = 50<span class="Apple-tab-span" style="white-space:pre"> </span>phi[1] = 25.06720<span class="Apple-tab-span" style="white-space:pre"> </span>rs = 0.16890</p><div><font class="Apple-style-span" size="1"><span class="Apple-style-span" style="font-size: 9px;"><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[S] = 25<span class="Apple-tab-span" style="white-space:pre"> </span>phi[2] = 77.03289<span class="Apple-tab-span" style="white-space:pre"> </span>rn = 0.05393</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[N] = 80<span class="Apple-tab-span" style="white-space:pre"> </span>phi[1] = 37.74930<span class="Apple-tab-span" style="white-space:pre"> </span>rs = 0.23181</p><div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[S] = 30<span class="Apple-tab-span" style="white-space:pre"> </span>phi[2] = 38.61324<span class="Apple-tab-span" style="white-space:pre"> </span>rn = 0.13860</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[N] = 40<span class="Apple-tab-span" style="white-space:pre"> </span>phi[1] = 31.53993<span class="Apple-tab-span" style="white-space:pre"> </span>rs = 0.15390</p><div><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco"><br></p><p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[S] = 50<span class="Apple-tab-span" style="white-space:pre"> </span>phi[2] = 58.69310<span class="Apple-tab-span" style="white-space:pre"> </span>rn = 0.13068</p>
<p style="margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco">phi[N] = 60<span class="Apple-tab-span" style="white-space:pre"> </span>phi[1] = 51.61978<span class="Apple-tab-span" style="white-space:pre"> </span>rs = 0.16200</p><div><br></div></div></div></span></font></div><p></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Monaco; "><br></p></div></div></span></font></div></div></div></span></div><div class="aol_ad_footer" id="u69ED2B82846E4BDD88BEAA9B2535F738"></div></body></html>