<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Javier,</p>
    <p>Inspecting with "projinfo -k operation PROJ:ITRF2020_TO_ETRS89",
      you got the extent code wrong, it should be EPSG:4755 (using the
      same one as ETRS89)</p>
    <p>The magic in the instantiation of concatenated operations also
      takes care of inserting the appropriate geographic<-->geocentric
      conversion steps. Cf
<a class="moz-txt-link-freetext" href="https://github.com/OSGeo/PROJ/blob/master/src/iso19111/operation/concatenatedoperation.cpp#L554-L571">https://github.com/OSGeo/PROJ/blob/master/src/iso19111/operation/concatenatedoperation.cpp#L554-L571</a><br>
    </p>
    Once fixed, "projinfo ETRS89 ITRF2020" (only) reports that
    transformation.<br>
    <p>Even<br>
    </p>
    <div class="moz-cite-prefix">Le 03/09/2024 à 16:35, Javier Jimenez
      Shaw a écrit :<br>
    </div>
    <blockquote type="cite"
cite="mid:CADRrdKtKaC4=K7PZD_zYX-1NXJRpcFR06HX5zEQqGd7dBcNKgw@mail.gmail.com">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="ltr">
        <div dir="ltr">
          <div dir="ltr">
            <div>Well. I tried it... and something does not work
              (probably a silly mistake)</div>
            <div><br>
            </div>
            <div>at the end of data/sql/other_transformation_custom.sql
              I added this:<br>
            </div>
            <div><br>
            </div>
            <div style="margin-left:40px"><span
                style="font-family:monospace">INSERT INTO
                "concatenated_operation"
                VALUES('PROJ','ITRF2020_TO_ETRS89','ITRF2020 to
                ETRS89','Time-dependent transformation from ITRF2020 to
                ETRS89 based on
                EPSG:10573','EPSG','9990','EPSG','4258',0.1,NULL,0);<br>
                INSERT INTO "concatenated_operation_step"
                VALUES('PROJ','ITRF2020_TO_ETRS89',1,'EPSG','10573');<br>
                INSERT INTO "concatenated_operation_step"
                VALUES('PROJ','ITRF2020_TO_ETRS89',2,'PROJ','ETRS89_TO_ETRF2020');<br>
                INSERT INTO "usage" VALUES(<br>
                    'PROJ',<br>
                    'ITRF2020_TO_ETRS89_USAGE',<br>
                    'concatenated_operation',<br>
                    'PROJ',<br>
                    'ITRF2020_TO_ETRS89',<br>
                    'EPSG','1289', -- extent<br>
                    'EPSG','1024'  -- unknown<br>
                );</span></div>
            <div><br>
            </div>
            <div>And the transformation is this ballpark:<br>
            </div>
            <div><br>
            </div>
            <div style="margin-left:40px"><span
                style="font-family:monospace">PROJ_DATA=../data/
                ./projinfo EPSG:9990 EPSG:4258 --spatial-test intersects
                --bbox 7,42,8,43 -o proj<br>
                Candidate operations found: 1<br>
                -------------------------------------<br>
                Operation No. 1:<br>
                <br>
                unknown id, Ballpark geographic offset from ITRF2020 to
                ETRS89, unknown accuracy, World, has ballpark
                transformation<br>
                <br>
                PROJ string:<br>
                +proj=noop</span></div>
            <div><br>
            </div>
            <div>While without that change it is this (just showing the
              first transformation)<br>
            </div>
            <div><br>
            </div>
            <div style="margin-left:40px"><span
                style="font-family:monospace">PROJ_DATA=../data/
                ./projinfo EPSG:9990 EPSG:4258 --spatial-test intersects
                --bbox 7,42,8,43 -o proj</span></div>
            <div style="margin-left:40px"><span
                style="font-family:monospace">Candidate operations
                found: 4<br>
                -------------------------------------<br>
                Operation No. 1:<br>
                <br>
                unknown id, Conversion from ITRF2020 (geog2D) to
                ITRF2020 (geocentric) + ITRF2020 to ETRF2020 (2) +
                Conversion from ETRF2020 (geocentric) to ETRF2020
                (geog2D) + Inverse of ETRS89 to ETRF2020, 0.1 m, Europe
                - onshore and offshore - ETRF extent - approximately
                16°W to 33°E and 33°N to 84°N.<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 +proj=helmert +x=0 +y=0 +z=0 +rx=0.002236
                +ry=0.013494 +rz=-0.019578 +s=0<br>
                        +dx=0 +dy=0 +dz=0 +drx=8.6e-05 +dry=0.000519
                +drz=-0.000753 +ds=0<br>
                        +t_epoch=2015 +convention=position_vector<br>
                  +step +inv +proj=cart +ellps=GRS80<br>
                  +step +proj=unitconvert +xy_in=rad +xy_out=deg<br>
                  +step +proj=axisswap +order=2,1</span></div>
            <div style="margin-left:40px"><span
                style="font-family:monospace">...</span></div>
            <div><br>
            </div>
            <div>Am I doing anything wrong?</div>
            <div>I guessed that EPSG:10573 is a transformation between
              geocentric systems, while PROJ:ETRS89_TO_ETRF2020 is
              between geographic 2D. So there could be a missing
              geocentric->geographic2D in between. But I don't know
              how to set it.</div>
            <div>It is also surprising that not only it is not finding
              this concatenated operation, but not finding anyone!<br>
            </div>
            <div><br>
            </div>
            <div>Thanks,</div>
            <div>Javier<br>
            </div>
          </div>
        </div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">On Tue, 3 Sept 2024 at 13:21,
          Even Rouault <<a href="mailto:even.rouault@spatialys.com"
            moz-do-not-send="true" class="moz-txt-link-freetext">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> Javier,
            <blockquote type="cite">
              <div dir="ltr">
                <div><br>
                </div>
                <div>In the DB, the operation registered is
                  ETRS89_TO_ETRF2020, so it has to be "inverted".
                  However, I do not see any way to indicate that in the
                  concatenated operation.<br>
                </div>
                <div><br>
                </div>
                <div>For instance, this concatenated operation does not
                  mention that the second step should be "inverted" (if
                  I understood correctly)<br>
                </div>
                <div><span style="font-family:monospace">    ('NKG',
                    'ITRF2014_TO_DK', 1, 'EPSG', '8366'), -- ITRF2014
                    -> ETRF2014<br>
                        ('NKG', 'ITRF2014_TO_DK', 2, 'NKG',
                    'NKG_ETRF14_TO_ETRF2014'),<br>
                        ('NKG', 'ITRF2014_TO_DK', 3, 'NKG',
                    'PAR_2020_DK'),<br>
                        ('NKG', 'ITRF2014_TO_DK', 4, 'NKG',
                    'DK_2020_INTRAPLATE')</span></div>
                <div><br>
                </div>
                <div>Does it mean that PROJ is finding it automatically?</div>
              </div>
            </blockquote>
            Unfortunately yes, PROJ has to figure out the direction of
            operations, and it is an awful and error prone job,
            especially when one of the step is a conversion which lacks
            explicit source and target CRS. I complained about that to
            IOGP to ask to add a direction (forward/inverse) column in
            the coordinate_step table, but I wasn't apparently
            sufficiently convincing.<br>
            <blockquote type="cite">
              <div dir="ltr">
                <div><br>
                </div>
                <div>Thanks.<br>
                </div>
                <div><br>
                </div>
                <div>PS Should I add the concatenated operation
                  (ITRF2020->ETRS89) to PROJ in a PR? There are
                  different "paths" from ITRF2020 to ETRS89. All
                  apparently equivalent, but probably not exactly the
                  same.<br>
                </div>
              </div>
            </blockquote>
            <p>Maybe try first to see if EPSG wants to add it?</p>
            <br>
            <pre cols="72">-- 
<a href="http://www.spatialys.com" target="_blank"
            moz-do-not-send="true" class="moz-txt-link-freetext">http://www.spatialys.com</a>
My software is free, but my time generally not.</pre>
          </div>
        </blockquote>
      </div>
    </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>