<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Jochem<br>
    </p>
    <span lang="EN-GB"></span><span
      style="font-size:10.0pt;font-family:Consolas" lang="EN-GB"><o:p></o:p></span>
    <blockquote type="cite"
cite="mid:AM0P192MB04829A295976F90C3538C720EFA49@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoNormal"><b><span lang="EN-GB">RDNAP to ITRF2014:<o:p></o:p></span></b></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">echo
            128410.0957 445806.4960 -0.4754 2023.00 | cs2cs epsg:7415
            epsg:7912 -d 9
            <o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB">The result is a null
            transformation, which is
            <u>not</u> what we recommend:<o:p></o:p></span></p>
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB">52.00000<u>0000</u>
            5.00000<u>0000</u> 43.0<u>000</u> 2023.00</span></p>
      </div>
    </blockquote>
    <p>You didn't mention which PROJ version you use. But starting with
      9.1.0, here's the result I get:</p>
    <p>$ echo 128410.0957 445806.4960 -0.4754 2023.00 | PROJ_NETWORK=ON
      PROJ_DEBUG=2 bin/cs2cs epsg:7415 epsg:7912 -d 9 <br>
      [...]<br>
      Using coordinate operation Inverse of RD New + Amersfoort to
      ETRS89 (9) + Inverse of ETRS89 to NAP height (2) + Null geographic
      offset from ETRS89 (geog3D) to ETRS89 (geog2D) + ETRS89 to
      ETRF2014 + Conversion from ETRF2014 (geog2D) to ETRF2014
      (geocentric) + Inverse of ITRF2014 to ETRF2014 (2) + Conversion
      from ITRF2014 (geocentric) to ITRF2014 (geog3D)<br>
      [...]<br>
      52.000004918    5.000008844 43.001783708 2023.00<br>
    </p>
    <p>This is the first pipeline suggested by projinfo -s epsg:7415 -t
      epsg:7912:</p>
    <p>unknown id, Inverse of RD New + Amersfoort to ETRS89 (9) +
      Inverse of ETRS89 to NAP height (2) + Null geographic offset from
      ETRS89 (geog3D) to ETRS89 (geog2D) + ETRS89 to ETRF2014 +
      Conversion from ETRF2014 (geog2D) to ETRF2014 (geocentric) +
      Inverse of ITRF2014 to ETRF2014 (2) + Conversion from ITRF2014
      (geocentric) to ITRF2014 (geog3D), 0.102 m, Netherlands - onshore,
      including Waddenzee, Dutch Wadden Islands and 12-mile offshore
      coastal zone., at least one grid missing<br>
      <br>
      PROJ string:<br>
      +proj=pipeline<br>
        +step +inv +proj=sterea +lat_0=52.1561605555556
      +lon_0=5.38763888888889<br>
              +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel<br>
        +step +proj=hgridshift +grids=nl_nsgi_rdtrans2018.tif<br>
        +step +proj=vgridshift +grids=nl_nsgi_nlgeo2018.tif
      +multiplier=1<br>
        +step +proj=cart +ellps=GRS80<br>
        +step +inv +proj=helmert +x=0 +y=0 +z=0 +rx=0.001785
      +ry=0.011151 +rz=-0.01617<br>
              +s=0 +dx=0 +dy=0 +dz=0 +drx=8.5e-05 +dry=0.000531
      +drz=-0.00077 +ds=0<br>
              +t_epoch=2010 +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<br>
      <br>
      So this kind of works, but using the ETRS89 -> ETRF2014 direct
      transformation, not through the ETRF2000 -> ETRF2014 one you
      expect, which is quite logical since NAP height is only linked to
      ETRS89.<br>
    </p>
    <p><br>
    </p>
    <blockquote type="cite"
cite="mid:AM0P192MB04829A295976F90C3538C720EFA49@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <div class="WordSection1">
        <p class="MsoNormal"><span
            style="font-size:10.0pt;font-family:Consolas" lang="EN-GB"><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB">I assume that the best
            way to fix this is to ask EPSG to link RDNAP to ETRF2000
            instead of the ETRS89 datum ensemble. Would that indeed
            solve the problem in PROJ?</span></p>
      </div>
    </blockquote>
    I wouldn't say "instead", but "in addition". There should likely be
    a ETRF2014 to NAP height transformation, and a Amersfoort to
    ETRF2014 one (that could be a concatenation of Amersfoort to ETRS89
    (9) + ETRS89 -> ETRF2000 + ETRF2000 -> ETRF2014  or Amersfoort
    to ETRS89 (9) + ETRS89 -> ETRF2014 depending on your preference)<br>
    <blockquote type="cite"
cite="mid:AM0P192MB04829A295976F90C3538C720EFA49@AM0P192MB0482.EURP192.PROD.OUTLOOK.COM">
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-GB"><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB">Kind regards, Jochem<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-GB"><o:p> </o:p></span></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>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
PROJ mailing list
<a class="moz-txt-link-abbreviated" href="mailto:PROJ@lists.osgeo.org">PROJ@lists.osgeo.org</a>
<a class="moz-txt-link-freetext" href="https://lists.osgeo.org/mailman/listinfo/proj">https://lists.osgeo.org/mailman/listinfo/proj</a>
</pre>
    </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>