<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p><br>
    </p>
    <div class="moz-cite-prefix">Le 22/02/2023 à 21:15, Lesparre, Jochem
      a écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:AM0P192MB04820D5A86C3545CA5E11879EFAA9@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator" content="Microsoft Word 15 (filtered
        medium)">
      <style>@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;}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.EmailStyle23
        {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;}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]-->
      <div class="WordSection1">
        <p class="MsoPlainText" style="margin-left:70.8pt"><span
            lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText" style="margin-left:70.8pt"><span
            lang="EN-GB">JL wrote:<o:p></o:p></span></p>
        <p class="MsoPlainText" style="margin-left:70.8pt"><span
            lang="EN-GB">> the route trough ETRF2000 should be the
            default […]<o:p></o:p></span></p>
        <p class="MsoPlainText" style="margin-left:70.8pt"><span
            lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText" style="margin-left:70.8pt"><span
            lang="EN-GB">> Thus ETRS89 -> ETRF2000 -> ITRF2000
            -> ITRF2014 instead of ETRS89 -> ETRF2014 ->
            ITRF2014. What makes PROJ choose the latter?<o:p></o:p></span></p>
        <p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText" style="margin-left:35.4pt"><span
            lang="EN-GB">ER wrote:<o:p></o:p></span></p>
        <p class="MsoPlainText" style="margin-left:35.4pt"><span
            lang="EN-GB">> PROJ has no idea of what is
            recommended/preferred by European geodestists ;-) It only
            trusts records in its database.<o:p></o:p></span></p>
        <p class="MsoPlainText" style="margin-left:35.4pt"><span
            lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText" style="margin-left:35.4pt"><span
            lang="EN-GB">> PROJ can only infer pipelines with at most
            one intermediate CRS. If you want ETRS89 -> ETRF2000
            -> ITRF2000 -> ITRF2014, you need an explicit
            concatenated operation chaining the 3 individual steps.<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">In fact, in PROJ the
            ETRS89 -> ETRF2000 -> ITRF2000 -> ITRF2014 route
            gives identical results to ETRS89 -> ETRF2000 ->
            ITRF2014, and this also has only one intermediate CRS:</span></p>
      </div>
    </blockquote>
    <p><span lang="EN-GB">ETRF2000 -> ITRF2000 </span>is EPSG:7941</p>
    <p><span lang="EN-GB">+proj=pipeline<br>
          +step +proj=axisswap +order=2,1<br>
          +step +proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad
        +z_out=m<br>
          +step +proj=cart +ellps=GRS80<br>
          +step +inv +proj=helmert +x=0.054 +y=0.051 +z=-0.048
        +rx=0.000891 +ry=0.00539<br>
                +rz=-0.008712 +s=0 +dx=0 +dy=0 +dz=0 +drx=8.1e-05
        +dry=0.00049<br>
                +drz=-0.000792 +ds=0 +t_epoch=2000
        +convention=position_vector<br>
          +step +inv +proj=cart +ellps=GRS80<br>
          +step +proj=unitconvert +xy_in=rad +z_in=m +xy_out=deg
        +z_out=m<br>
          +step +proj=axisswap +order=2,1<br>
      </span></p>
    <p><span lang="EN-GB">and ITRF2000 -> ITRF2014 is EPSG:8078<br>
      </span></p>
    +proj=pipeline<br>
      +step +proj=axisswap +order=2,1<br>
      +step +proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m<br>
      +step +proj=cart +ellps=GRS80<br>
      +step +proj=helmert +x=-0.0007 +y=-0.0012 +z=0.0261 +rx=0 +ry=0
    +rz=0<br>
            +s=-0.00212 +dx=-0.0001 +dy=-0.0001 +dz=0.0019 +drx=0 +dry=0
    +drz=0<br>
            +ds=-0.00011 +t_epoch=2010 +convention=position_vector<br>
      +step +inv +proj=cart +ellps=GRS80<br>
      +step +proj=unitconvert +xy_in=rad +z_in=m +xy_out=deg +z_out=m<br>
      +step +proj=axisswap +order=2,1<br>
    <p>And ETRF2000 -> ITRF2014 is EPSG:8405<br>
    </p>
    <p>+proj=pipeline<br>
        +step +proj=axisswap +order=2,1<br>
        +step +proj=unitconvert +xy_in=deg +z_in=m +xy_out=rad +z_out=m<br>
        +step +proj=cart +ellps=GRS80<br>
        +step +inv +proj=helmert +x=0.0547 +y=0.0522 +z=-0.0741
      +rx=0.001701<br>
              +ry=0.01029 +rz=-0.016632 +s=0.00212 +dx=0.0001 +dy=0.0001
      +dz=-0.0019<br>
              +drx=8.1e-05 +dry=0.00049 +drz=-0.000792 +ds=0.00011
      +t_epoch=2010<br>
              +convention=position_vector<br>
        +step +inv +proj=cart +ellps=GRS80<br>
        +step +proj=unitconvert +xy_in=rad +z_in=m +xy_out=deg +z_out=m<br>
        +step +proj=axisswap +order=2,1<br>
      <br>
    </p>
    <p>It appears that the authority in charge of ETRF and ITRF made
      sure that additivity works.</p>
    <p><br>
    </p>
    <blockquote type="cite"
cite="mid:AM0P192MB04820D5A86C3545CA5E11879EFAA9@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <div class="WordSection1">
        <p class="MsoPlainText"><span lang="EN-GB"><o:p></o:p></span></p>
        <p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">projinfo
            -s epsg:7931 -t epsg:7912<o:p></o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">Operation
            No. 1:<o:p></o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">unknown
            id, Conversion from ETRF2000 (geog3D) to ETRF2000
            (geocentric) + Inverse of ITRF2014 to ETRF2000 (1) +
            Conversion from ITRF2014 (geocentric) to ITRF2014 (geog3D),
            0 m<o:p></o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">projinfo
            -s epsg:8403 -t epsg:7912<o:p></o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">Operation
            No. 1:<o:p></o:p></span></p>
        <p class="MsoPlainText"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">unknown
            id, Conversion from ETRF2014 (geog3D) to ETRF2014
            (geocentric) + Inverse of ITRF2014 to ETRF2014 (2) +
            Conversion from ITRF2014 (geocentric) to ITRF2014 (geog3D),
            0 m<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">If it is not the
            number of steps, what makes PROJ not choose ETRS89 ->
            ETRF2000 -> ITRF2014 but  ETRS89 -> ETRF2014 ->
            ITRF2014 instead? And what would need to be changed in the
            database to change that transformation route?</span></p>
      </div>
    </blockquote>
    <p>That will make you smile (or not), but I believe it is
      lexicographic order.  ETRF2000->ITRF2014 and
      ETRF2014->ITRF2014 have both the same extent and advertized
      accuracy (0 m!), so when combined with the preliminary ETRS89
      -> ETRF2000 or ETRS89 -> ETRF2014 null transformation steps
      which are deduced from the definition of the ETRS89 assemble using
      its 0.1 m accuracy, the resulting pipelines <span lang="EN-GB">ETRS89
        -> ETRF2000 -> ITRF2014 and </span><span lang="EN-GB"><span
          lang="EN-GB">ETRS89 -> ETRF2014 -> ITRF2014 have both
          the same extent and advertized accuracy (0.1m) (if you look at
          projinfo -s ETRS89 -t ITRF2014  --3d output, you'll see that
          the one using ETRF2000->ITRF2014 is the 3rd one). So PROJ,
          when having to sort results, chooses the pipeline whose name
          is the greater given lexicographic order, and ETRF2014 >
          ETRF2000 according to that criterion. The preference for the
          higher lexicographic order has been chose because typically
          EPSG adds new transformations FOO (X) and FOO (Y) with
          increasing numbers, and all other things being equal, it can
          makes sense to use the more recent records. Obviously that's
          not always what you want, but that's slightly better than a
          dice roll, at least that's deterministic, which is what you
          need for a sort algorithm.<br>
        </span></span></p>
    <p><span lang="EN-GB"><span lang="EN-GB">So what would be needed
          here for what you want would be to register a ETRS89 to
          ITRF2014 transformation, typically by copying </span></span><span
        lang="EN-GB">the ETRF2000 -> ITRF2014 Helmert transformation
        and assigning it an accuracy slightly less than 0.1 m (I guess
        exactly 0.1 m would also work, because PROJ will normally favor
        pipelines that have less steps than other ones, all other things
        being equal, but that should be tested, especially in complex
        pipelines mixing horizontal & vertical transformations)<br>
      </span></p>
    <p>Even<br>
    </p>
    <blockquote type="cite"
cite="mid:AM0P192MB04820D5A86C3545CA5E11879EFAA9@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <div class="WordSection1">
        <p class="MsoPlainText"><span lang="EN-GB"><o:p></o:p></span></p>
        <p class="MsoPlainText"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoPlainText">Jochem<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>
        [<a class="moz-txt-link-freetext" href="https://www.kadaster.nl/algemene-leveringsvoorwaarden">https://www.kadaster.nl/algemene-leveringsvoorwaarden</a>].<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>
        [<a class="moz-txt-link-freetext" href="https://www.kadaster.com/general-terms-and-conditions">https://www.kadaster.com/general-terms-and-conditions</a>]. <br>
      </font>
    </blockquote>
    <pre class="moz-signature" cols="72">-- 
<a class="moz-txt-link-freetext" href="http://www.spatialys.com">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
  </body>
</html>