<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:"Trebuchet MS";
        panose-1:2 11 6 3 2 2 2 2 2 4;}
@font-face
        {font-family:"Arial Narrow";
        panose-1:2 11 5 6 2 2 2 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Trebuchet MS";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Arial Narrow";
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple><!--ppd1000033-->

<div class=Section1>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>I had a question about the typical method
used by existing CRS code in different projects to perform transformations from
one CRS to another.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>Does most code search for the definition of
a transformation algorithm, with no real knowledge of the projection geometry
of the source and destination CRS, to perform the transformation?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>Or does most code, on the contrary, use knowledge
of the projection geometry of the source and destination CRS to determine the
transformation algorithm on its own?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>I imagine there are distinct advantages and
disadvantages to each approach. As an example, in the first scenario I might
leave CRS definitions out of the picture altogether, and instead implement a
system in which support for a CRS was added by a single programming interface
that performed transformations to and from the subject CRS and a pivot CRS. In
this scenario the CRS code performing the transformation would need almost no
knowledge of the subject CRS, all of the burden would be placed on the person
implementing the programming interface.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>In the second scenario I eliminate the programming
interface altogether, and I place all of the emphasis on the definition of the
subject CRS. I then place logic in the CRS code that performs the correct
transformation operations based on the parameters in the definition. (I do
these three (3) steps for a cylindrical projection, while I do these five (5)
steps for a conical projection.)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>I&#8217;d think the first scenario is the easiest
to program, but the most difficult to add CRS definitions too. (To add a
definition would require knowledge of the particular programming language used
to implement the library.)<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>In the second scenario the CRS code would be
more complex, but a CRS definition could be added with a simple text file.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>Are there any thoughts on which approach is
superior? Which approach is used by existing CRS solutions?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>Is a hybrid approach possible?<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'>Landon<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Arial Narrow"><span style='font-size:
12.0pt;font-family:"Arial Narrow"'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Trebuchet MS"><span style='font-size:
12.0pt'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face="Trebuchet MS"><span style='font-size:
12.0pt'><o:p>&nbsp;</o:p></span></font></p>

</div>

<BR><BR><FONT face=Arial><FONT size=1><STRONG>Warning:<BR></STRONG>Information provided via electronic media is not guaranteed against defects including translation and transmission errors. If the reader is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited.&nbsp; If you have received this information in error, please notify the sender immediately.</FONT></FONT></body>

</html>