<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" 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 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri","sans-serif";
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
mso-fareast-language:EN-US;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:3.0cm 2.0cm 3.0cm 2.0cm;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="DA" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span lang="EN-US">All,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thomas Knudsen and I have written a paper about the Transformation Pipelines
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">framework that have been introduced to PROJ.4 recently. We have submitted it<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">to the FIG Working Week 2017 which is held in Helsinki next week. I’ll be<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">presenting the paper in the “Geodesy and Surveying Applications II” session on<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thursday June 1<sup>st</sup>. Please stop by and say hello if you are there.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The paper can be found at <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><a href="http://www.fig.net/resources/proceedings/fig_proceedings/fig2017/papers/iss6b/ISS6B_evers_knudsen_9156.pdf">http://www.fig.net/resources/proceedings/fig_proceedings/fig2017/papers/iss6b/ISS6B_evers_knudsen_9156.pdf</a><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">I have pasted in the abstract below.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">In section 4, about transformation pipelines, we show case a few examples of<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">how transformation pipelines can be used. The examples all feature the new<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">and much improved implementation of the Helmert transform. Keeping the<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">lively discussion about the Helmert transform in March in mind I figure that the<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">paper will be of great interest to those involved in the discussion.
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Happy reading,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Kristian<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">----------------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">TRANSFORMATION PIPELINES IN PROJ.4<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">For more than 2 decades, PROJ.4 has been the globally leading map projection<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">library for open source geospatial software. While focusing on mathematically<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">well-defined 2D projections from geographical to planar coordinates, PROJ.4<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">has nevertheless, since its introduction in the 1980s, provided limited<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">support for more general geodetic datum transformations, and has gradually<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">introduced a higher degree of support for 3D coordinate data and reference<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">systems.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The support has, however, been implemented over a long period of time, as<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">need became evident and opportunity was found, by a number of different<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">people, with different needs. Hence, the PROJ.4 3D support has not been the<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">result of neither deep geodetic, nor careful code architectural considerations.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">This has resulted in a library that supports only a subset of commonly<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">occurring geodetic transformations. To be more specific: It supports any datum<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">shift that can be completed by a combination of two Helmert shifts and a<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">non-linear planar correction derived from interpolation in a correction grid.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">While this is sufficient for most small scale mapping activities, it is not at<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">all sufficient for operational geodetic use, nor for many of the rapidly<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">emerging high accuracy geospatial applications in agriculture, construction and<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">transportation. To improve this situation, we have introduced a new framework<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">for implementation of geodetic transformations, which will appear in the next<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">release of the PROJ.4 library.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Before describing the details, let us first remark that most cases of geodetic<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">transformations can be expressed as a series of elementary operations, the<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">output of one operation being the input of the next. E.g. when going from UTM<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">zone 32, datum ED50, to UTM zone 32, datum ETRS89, one must, in the simplest
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">case, go through 5 steps:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">1. Back-project the UTM coordinates to geographic coordinates<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">2. Convert the geographic coordinates to 3D cartesian geocentric coordinates<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">3. Apply a Helmert transformation from ED50 to ETRS89<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4. Convert back from cartesian to geographic coordinates<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">5. Finally project the geographic coordinates to UTM zone 32 planar coordinates.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">The homology between these steps and a Unix shell style pipeline is evident.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">With this as its main architectural inspiration, the primary feature of our<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">implementation is a pipeline driver, that takes as its user supplied arguments,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">a series of elementary operations, which it strings together in order to<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">implement the full transformation needed. Also, we have added a number of<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">elementary geodetic operations, including Helmert transformations, general<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">high order polynomial shifts and the Molodensky transformation. In anticipation<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">of upcoming support for full time-varying transformations, we also introduce a<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">4D spatiotemporal data type, and a programming interface (API) for handling this.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">With these improvements in place, we assert that PROJ.4 is now well on its way<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">from being a mostly-map projection library, to becoming an
<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">almost-generic-geodetic-transformation library.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
</div>
</body>
</html>