<div dir="ltr"><div>Thanks Even</div><div><br></div><div>Finally I am patching the db to "undeprecate" the transformation EPSG:9925, with a worse accuracy. It produces the same outputs as 9.2.0.</div><div>Let's see what can we conclude with BKG/AdV about it.</div><div><br></div><div>Cheers,</div><div>Javier<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 2 May 2023 at 19:12, Even Rouault <<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
  
    
  
  <div>
    <p>Javier,</p>
    <p>so for doing ETRF2000 <--> DHDN + DHHN2016 height<br>
    </p>
    <p>What exists as relevant transformations in proj.db:<br>
      ETRF2000 <--> ETRS89/DREF91/2016: Helmert<br>
      DHHN2016 height <--> ETRS89/DREF91/2016: grid<br>
    </p>
    <p>but nothing for ETRS89/DREF91/2016 <--> DHDN</p>
    <p>I'm not sure if having such transformation would help (I guess so
      though)</p>
    <p>The "ETRS89 to ETRF2000" null Helmert transformation inserted by
      PROJ from the definition of the ETRS89 datum ensemble cannot help
      here, because, yes, we can do the horizontal and vertical steps
      with:<br>
    </p>
    <p>ETRF2000 --> ETRS89/DREF91/2016 --> DHHN2016 height</p>
    <p>ETRF2000 --> ETRS89 --> DHDN</p>
    <p>but when combining them, we're stuck because the intermediate
      datum (ETRS89/DREF91/2016 for vertical, ETRS89 for horizontal)
      isn't the same (I guess having a known transformation could help,
      but I'm not sure)</p>
    <p>And even if that worked, I don't think that could be used to do
      ETRS89 <--> DHDN + DHHN2016 height because of the too many
      inference steps required.</p>
    <p>Even<br>
    </p>
    <div>Le 02/05/2023 à 18:45, Javier Jimenez
      Shaw a écrit :<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">
        <div>Hi</div>
        <div><br>
        </div>
        <div>When I was going to add the Helmert transformation, I
          realized that there is already something similar in proj.db:</div>
        <div>PROJ:ETRS89_TO_ETRF2000 "ETRS89 to ETRF2000" , with all
          zeros.</div>
        <div><br>
        </div>
        <div>However, if I try to go from ETRS89 (via ETRF2000) to "DHDN
          + DHH2016 height" it has the same output: horizontal (to DHDN,
          that is the big chunk) or vertical, not both.<br>
        </div>
        <div>(There is already a transformation in proj.db: EPSG:10292
          'ETRS89/DREF91/2016 to ETRF2000 (1)')</div>
        <div><br>
        </div>
        <div><span style="font-family:monospace">PROJ_NETWORK=ON
            projinfo -s EPSG:4937 -t EPSG:4314+7837 -o proj
            --spatial-test intersects<br>
            Candidate operations found: 11<br>
            -------------------------------------<br>
            Operation No. 1:<br>
            <br>
            unknown id, Inverse of Ballpark geographic offset from
            ETRS89/DREF91/2016 to ETRS89 + ETRS89/DREF91/2016 to
            DHHN2016 height (1) + Inverse of Ballpark geographic offset
            from DHDN to ETRS89/DREF91/2016, unknown accuracy, Germany -
            onshore and offshore., has ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +inv +proj=vgridshift +grids=GCG2016.txt
            +multiplier=1<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------<br>
            Operation No. 2:<br>
            <br>
            unknown id, Inverse of Null geographic offset from ETRS89
            (geog2D) to ETRS89 (geog3D) + ETRS89 to ETRF2000 + Inverse
            of Conversion from ETRF2000 (geocentric) to ETRF2000
            (geog2D) + Inverse of ETRS89/DREF91/2016 to ETRF2000 (1) +
            Inverse of Conversion from ETRS89/DREF91/2016 (geog3D) to
            ETRS89/DREF91/2016 (geocentric) + ETRS89/DREF91/2016 to
            DHHN2016 height (1) + Inverse of Ballpark geographic offset
            from DHDN to ETRS89/DREF91/2016, unknown accuracy, Germany -
            onshore and offshore., has ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +proj=cart +ellps=GRS80<br>
              +step +inv +proj=helmert +x=0 +y=0 +z=0 +rx=0.000658
            +ry=-0.000208 +rz=0.000755<br>
                    +s=0 +convention=position_vector<br>
              +step +inv +proj=cart +ellps=GRS80<br>
              +step +inv +proj=vgridshift +grids=GCG2016.txt
            +multiplier=1<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------<br>
            Operation No. 3:<br>
            <br>
            unknown id, Inverse of Transformation from DHHN2016 height
            to ETRS89 (ballpark vertical transformation, without
            ellipsoid height to vertical height correction) + Inverse of
            DHDN to ETRS89 (8), unknown accuracy, Germany - onshore -
            states of Baden-Wurtemberg, Bayern, Berlin, Brandenburg,
            Bremen, Hamburg, Hessen, Mecklenburg-Vorpommern,
            Niedersachsen, Nordrhein-Westfalen, Rheinland-Pfalz,
            Saarland, Sachsen, Sachsen-Anhalt, Schleswig-Holstein,
            Thuringen., has ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +inv +proj=hgridshift +grids=de_adv_BETA2007.tif<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------</span></div>
        <div><br>
        </div>
        <div><br>
        </div>
        <div>If I use directly ETRF2000 instead of ETRS89, similar. It
          is not applying vertical and horizontal transformations
          together.<br>
        </div>
        <div><br>
        </div>
        <div><span style="font-family:monospace">PROJ_NETWORK=ON
            projinfo -s ETRF2000 -t EPSG:4314+7837 -o proj
            --spatial-test intersects<br>
            Candidate operations found: 11<br>
            -------------------------------------<br>
            Operation No. 1:<br>
            <br>
            unknown id, Inverse of Ballpark geographic offset from
            ETRS89/DREF91/2016 to ETRF2000 + ETRS89/DREF91/2016 to
            DHHN2016 height (1) + Inverse of Ballpark geographic offset
            from DHDN to ETRS89/DREF91/2016, unknown accuracy, Germany -
            onshore and offshore., has ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +inv +proj=vgridshift +grids=GCG2016.txt
            +multiplier=1<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------<br>
            Operation No. 2:<br>
            <br>
            unknown id, Inverse of Conversion from ETRF2000 (geocentric)
            to ETRF2000 (geog3D) + Inverse of ETRS89/DREF91/2016 to
            ETRF2000 (1) + Inverse of Conversion from ETRS89/DREF91/2016
            (geog3D) to ETRS89/DREF91/2016 (geocentric) +
            ETRS89/DREF91/2016 to DHHN2016 height (1) + Inverse of
            Ballpark geographic offset from DHDN to ETRS89/DREF91/2016,
            unknown accuracy, Germany - onshore and offshore., has
            ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +proj=cart +ellps=GRS80<br>
              +step +inv +proj=helmert +x=0 +y=0 +z=0 +rx=0.000658
            +ry=-0.000208 +rz=0.000755<br>
                    +s=0 +convention=position_vector<br>
              +step +inv +proj=cart +ellps=GRS80<br>
              +step +inv +proj=vgridshift +grids=GCG2016.txt
            +multiplier=1<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------<br>
            Operation No. 3:<br>
            <br>
            unknown id, Inverse of Transformation from DHHN2016 height
            to ETRF2000 (ballpark vertical transformation, without
            ellipsoid height to vertical height correction) + Inverse of
            ETRS89 to ETRF2000 + Inverse of DHDN to ETRS89 (8), unknown
            accuracy, Germany - onshore - states of Baden-Wurtemberg,
            Bayern, Berlin, Brandenburg, Bremen, Hamburg, Hessen,
            Mecklenburg-Vorpommern, Niedersachsen, Nordrhein-Westfalen,
            Rheinland-Pfalz, Saarland, Sachsen, Sachsen-Anhalt,
            Schleswig-Holstein, Thuringen., has ballpark transformation<br>
            <br>
            PROJ string:<br>
            +proj=pipeline<br>
              +step +proj=axisswap +order=2,1<br>
              +step +proj=unitconvert +xy_in=deg +xy_out=rad<br>
              +step +inv +proj=hgridshift +grids=de_adv_BETA2007.tif<br>
              +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
              +step +proj=axisswap +order=2,1<br>
            <br>
            -------------------------------------</span></div>
        <div><br>
        </div>
        <div>I was not expecting that. Am I missing anything?</div>
        <div><br>
        </div>
        <div>Thanks,</div>
        <div>Javier<br>
        </div>
        <div><br>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Sat, 29 Apr 2023 at 20:31,
          Even Rouault <<a href="mailto:even.rouault@spatialys.com" target="_blank">even.rouault@spatialys.com</a>>
          wrote:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
          Le 29/04/2023 à 19:58, Javier Jimenez Shaw a écrit :<br>
          > Thanks Even.<br>
          ><br>
          > Yes, I will contact BKG.<br>
          ><br>
          > I was thinking on another option: defining a Helmert
          transformation <br>
          > between ETRS89/DREF91/2016 and ETRS89, (probably with
          0,0,0 params) <br>
          > and some (in)accuracy, to "connect" the new system with
          the old ones. <br>
          > Otherwise the "new" systems and the "old" ones are
          disconnected and <br>
          > only ballpark transformations are possible. Something
          like <br>
          > <a href="https://epsg.org/transformation_9703/ETRF2000-PL-to-ETRS89-1.html" rel="noreferrer" target="_blank">https://epsg.org/transformation_9703/ETRF2000-PL-to-ETRS89-1.html</a>
          for <br>
          > Poland. (<a href="https://epsg.org/search/by-name/?query=ETRF2000-PL" rel="noreferrer" target="_blank">https://epsg.org/search/by-name/?query=ETRF2000-PL</a>
          sounds <br>
          > very similar to <br>
          > <a href="https://epsg.org/search/by-name?searchedTerms=ETRS89%2FDREF91%2F2016" rel="noreferrer" target="_blank">https://epsg.org/search/by-name?searchedTerms=ETRS89%2FDREF91%2F2016</a>
          <br>
          > but without that "link" to the "old" systems).<br>
          > What do you think about this? Would it work?<br>
          <br>
          Yes that also crossed through my mind. I believe it should
          work (but <br>
          beware of the limitations of PROJ inference logic of guessing
          at most a <br>
          single intermediate CRS, but for doing WGS84 -> ETRS89
          -> <br>
          ETRS89/DREF91/2016, that should work). You might simulate that
          <br>
          beforehand by creating such a Helmert transformation.<br>
          <br>
          <br>
          -- <br>
          <a href="http://www.spatialys.com" rel="noreferrer" target="_blank">http://www.spatialys.com</a><br>
          My software is free, but my time generally not.<br>
          <br>
        </blockquote>
      </div>
    </blockquote>
    <pre cols="72">-- 
<a href="http://www.spatialys.com" target="_blank">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
  </div>

</blockquote></div>