<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=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:422997947;
        mso-list-type:hybrid;
        mso-list-template-ids:-419547330 68354063 68354073 68354075 68354063 68354073 68354075 68354063 68354073 68354075;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:18.0pt;
        text-indent:-18.0pt;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:54.0pt;
        text-indent:-18.0pt;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:90.0pt;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:126.0pt;
        text-indent:-18.0pt;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:162.0pt;
        text-indent:-18.0pt;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:198.0pt;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:234.0pt;
        text-indent:-18.0pt;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:270.0pt;
        text-indent:-18.0pt;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        margin-left:306.0pt;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:782772766;
        mso-list-type:hybrid;
        mso-list-template-ids:-1591438048 -906300188 68354073 68354075 68354063 68354073 68354075 68354063 68354073 68354075;}
@list l1:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l1:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l2
        {mso-list-id:1208225779;
        mso-list-type:hybrid;
        mso-list-template-ids:1044122032 -223676940 68354051 68354053 68354049 68354051 68354053 68354049 68354051 68354053;}
@list l2:level1
        {mso-level-start-at:4;
        mso-level-number-format:bullet;
        mso-level-text:•;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
@list l2:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l2:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l2:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l2:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l3
        {mso-list-id:1264845969;
        mso-list-type:hybrid;
        mso-list-template-ids:-1029639472 68354049 68354051 68354053 68354049 68354051 68354053 68354049 68354051 68354053;}
@list l3:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:18.0pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l3:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:54.0pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l3:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:90.0pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l3:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:126.0pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l3:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:162.0pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l3:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:198.0pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l3:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:234.0pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l3:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:270.0pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l3:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:306.0pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l4
        {mso-list-id:1734505797;
        mso-list-type:hybrid;
        mso-list-template-ids:1346142406 68354049 68354051 68354053 68354049 68354051 68354053 68354049 68354051 68354053;}
@list l4:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l4:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l4:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l4:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l4:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l4:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l4:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l5
        {mso-list-id:2091652098;
        mso-list-type:hybrid;
        mso-list-template-ids:-683264104 68354063 68354073 68354075 68354063 68354073 68354075 68354063 68354073 68354075;}
@list l5:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l5:level4
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l5:level7
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;}
@list l5:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:none;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></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="NL" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoPlainText"><span lang="EN-GB">Hi, <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">For some reason specs generally don't introduce their main philosophy like an experienced user would do to a new user, but one has to deduct this slowly from the formal syntax descriptions. So I hoped for some more
 easily to digest document. I'm quite familiar with EPSG, so (that part of) the model seems not to be my problem. There are some things that I don't like about the model, so I might respond later to Thomas Knudsen and Martin Desruisseaux on that topic. But
 I'll first try to explain what I'm doing at the moment and hopefully someone can help me to get my WKT string right (and maybe also provide some tips on how I could do things easier with WKT).
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">I would like to define a custom CRS in QGIS using a PROJ pipeline in a WKT string so I can use the exact Helmert transformation (the error of the approximate Helmert transformation is 2 m in this case).<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">My approach has been:<o:p></o:p></span></p>
<ol style="margin-top:0cm" start="1" type="1">
<li class="MsoPlainText" style="mso-list:l1 level1 lfo6"><span lang="EN-GB">Create a PROJ4 string with approximate Helmert transformation:
<o:p></o:p></span></li></ol>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">+proj=tmerc +lat_0=0 +lon_0=-63 +k=0.9996 +x_0=29973.97 +y_0=-1947925.94 +ellps=intl +towgs84=1,2,3,4,5,6,7 +units=m +no_defs +type=crs<o:p></o:p></span></p>
<ol style="margin-top:0cm" start="2" type="1">
<li class="MsoPlainText" style="mso-list:l1 level1 lfo6"><span lang="EN-GB">Convert the PROJ4 string in QGIS to WKT<o:p></o:p></span></li></ol>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">NB: This is a bit funny, to have to use a PROJ4 string to get started, is there a better option?<o:p></o:p></span></p>
<ol style="margin-top:0cm" start="3" type="1">
<li class="MsoPlainText" style="mso-list:l1 level1 lfo6"><span lang="EN-GB">Replace the METHOD for the "PROJ-based operation method" (based on the example from
<a href="https://github.com/OSGeo/PROJ/pull/2521">https://github.com/OSGeo/PROJ/pull/2521</a>)<o:p></o:p></span></li><li class="MsoPlainText" style="mso-list:l1 level1 lfo6"><span lang="EN-GB">Replace the pipeline with the exact Helmert transformation:<o:p></o:p></span></li></ol>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">NB: Is there a way to use the actual height in QGIS instead of zero? The effect on the horizontal coordinates is 9 cm at the point of highest elevation in the area of use.
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">WKT with PROJ-based operation method for QGIS:
<a href="https://pastebin.com/Fc8eS5aJ">https://pastebin.com/Fc8eS5aJ</a> <o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">Input: 17.627494963  -63.234771976<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">Output: -10756.7796  -2480.3833<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">This is not what I expected. With cct, I do get the expected result when I replace the step +proj=unitconvert for the step +proj=tmerc (because in WKT the projection is in the SOURCECRS):<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">echo -63.234771976 17.627494963 257.5641 2020.00 | cct -I +proj=pipeline
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">            +step +proj=tmerc +inv +lat_0=0 +lon_0=-63 +k_0=0.9996 +x_0=29973.97 +y_0=-1947925.94 +ellps=intl
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">            +step +proj=cart +ellps=intl
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">            +step +proj=helmert +convention=coordinate_frame +exact
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">                +x=1138.7432 +y=-2064.4761 +z=110.7016
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">                +rx=-214.615206 +ry=479.360036 +rz=-164.703951 +s=-402.32073<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">            +step +proj=cart +inv +ellps=WGS84
<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB" style="font-family:Consolas">            +step +proj=unitconvert +xy_in=rad +xy_out=deg<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">Output: 5000.0000  1000.0000  300.0000  2020.00<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">PROJ can also use WKT strings, but to get the same result, some changes are needed:<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoPlainText" style="mso-list:l2 level1 lfo8"><span lang="EN-GB">Change BOUNDCRS to COORDINATEOPERATION<o:p></o:p></span></li></ul>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">NB: If I use the BOUNDCRS, I get the error "Inverse operation not available", which seems to suggest you could use a BOUNDCRS in cct if one specifies the inverse operation in the WKT?<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoPlainText" style="mso-list:l2 level1 lfo8"><span lang="EN-GB">Remove ABRIDGEDTRANSFORMATION but the keep METHOD part<o:p></o:p></span></li></ul>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">NB: The WKT indentation of projinfo is nice for reading, but not for editing, because it doesn’t use a new line for each bracket. This makes it harder to keep the brackets right when editing
 the WKT.<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoPlainText" style="mso-list:l2 level1 lfo8"><span lang="EN-GB">Add projection step:
<o:p></o:p></span></li></ul>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">+step +proj=tmerc +inv +lat_0=0 +lon_0=-63 +k_0=0.9996 +x_0=29973.97 +y_0=-1947925.94 +ellps=intl<o:p></o:p></span></p>
<p class="MsoPlainText" style="margin-left:36.0pt"><span lang="EN-GB">NB: This is confusingly different from what QGIS needs.<o:p></o:p></span></p>
<ul style="margin-top:0cm" type="disc">
<li class="MsoPlainText" style="mso-list:l2 level1 lfo8"><span lang="EN-GB">Remove all the line breaks and indents and replace all " with \"<o:p></o:p></span></li></ul>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB">How can I get this result in QGIS?<o:p></o:p></span></p>
<p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
<p class="MsoPlainText">Kind regards, Jochem<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
</div>
<br>
<br>
<font size="2">Disclaimer:<br>
De inhoud van deze e-mail is vertrouwelijk en uitsluitend bestemd voor de geadresseerde(n).<br>
Gebruik, openbaarmaking, vermenigvuldiging, verspreiding en/of verstrekking van deze informatie aan derden is niet toegestaan.<br>
Op al onze producten en diensten zijn onze algemene leveringsvoorwaarden van toepassing<br>
[https://www.kadaster.nl/algemene-leveringsvoorwaarden].<br>
<br>
Disclaimer:<br>
This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed.<br>
If you are not the intended recipient, you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited.<br>
Our general terms and conditions of delivery apply to all our products and services<br>
[https://www.kadaster.com/general-terms-and-conditions]. <br>
</font>
</body>
</html>