<div dir="ltr"><div>Hi</div><div><br></div><div>I have found a behaviour with the geoidmodel in WKT2 that I do not know if it is the expected one.</div><div><br></div><div>My understanding is:</div><div><br></div><div>- if there is a geoidmodel and it matches one defined in proj.db then it uses it, (regardless the vertical CRS)<br></div><div>  - if the proper grid file for that geoidmodel is NOT found then "* * inf" is returned.</div><div>- if there is a geoidmodel tag, but not found in proj.db then it is ignored</div><div>  - if the grid file for the vertical CRS is found then it is used</div><div>  - if the grid file for the vertical CRS is NOT found then the transformation is done, but not the vertical part.</div><div><br></div><div></div><div>Notice the difference between the 2nd and 5th statements (when grid file is NOT found)<br></div><div><br></div><div>Is that correct?</div><div><br></div><div>How did I get here? I wanted to get (in C++) the lat-long in WGS84 transformation from a CRS defined by the WKT2. I was not interested in the vertical part, but didn't remove it from the WKT2, just go ahead. It worked... until a WKT2 included a "valid" geoidmodel tag (for some reasons I have another WKTs with geoidmodel not present yet in proj.db). Then the (horizontal) transformation failed miserably. No, I am not using PROJ-data locally or remotely.<br></div><div><br></div><div>Here are some commands to test that (done in PROJ 7.0.1) I use NAVD88 in the first ones, and EGM96 in the second. Both cases on NAD83(2011) (to simplify)<br></div><div><br></div><div><font size="2"><span style="font-family:monospace">echo 40 -75 0 | cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID18"],')"<br>*  * inf<br>echo 40 -75 0 | cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID18_"],')"<br>40.00     -75.00 0.00<br>echo 40 -75 0 | cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID18"],')"<br>*    * inf<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID18"],')"<br>40.00      -75.00 32.87<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID12B"],')"<br>40.00      -75.00 32.85<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5703 -o WKT2:2019 -q )"<br>40.00    -75.00 32.87</span></font></div><div><font size="2"><span style="font-family:monospace"><br></span></font></div><div><font size="2"><span style="font-family:monospace">echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q )"<br>40.00    -75.00 34.04<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID12B"],')"<br>40.00      -75.00 32.85<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID12B_"],')"<br>40.00     -75.00 34.04<br>echo 40 -75 0 | PROJ_NETWORK=ON cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["EGM96"],')"<br>40.00 -75.00 34.04</span></font></div><div><font size="2"><span style="font-family:monospace">echo 40 -75 0 | cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["GEOID12B"],')"<br>*        * inf<br>echo 40 -75 0 | cs2cs EPSG:6319 "$(projinfo EPSG:6318+5773 -o WKT2:2019 -q | sed  '25iGEOIDMODEL["EGM96"],')"<br>40.00        -75.00 0.00<br></span></font></div><div><br></div><div><div class="gmail_signature" data-smartmail="gmail_signature">Thanks<br></div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">.___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__<br>Entre dos pensamientos racionales <br>hay infinitos pensamientos irracionales.<br><br></div></div></div>