Using the (unfortunately undocumented) crs_src/crs_dst way of initialising an operation in gie, it seems that any time a grid is required in the transformation results in an error.
Running the file below
<gie-strict>
# ETRS89 -> ETRS89/UTM32
crs_src EPSG:4258
crs_dst EPSG:25832
accept 55.0 12.0
expect 691875.6321 6098907.8250
# ETRS89 -> ETRS89+DVR90(2023)
crs_src EPSG:4937
crs_dst EPSG:10488
tolerance 1 cm
require_grid dk_sdfi_dvr90_2023.tif
accept 55.0 12.0 40.0
expect 55.0 12.0 2.39
</gie-strict>
through gie results in an error in the last test case. Output here:
> set PROJ_NETWORK=ON
> gie epsg_verification_dk.gie
-------------------------------------------------------------------------------
Reading file 'epsg_verification_dk.gie'
-----
FAILURE in epsg_verification_dk.gie(18):
expected: 55.0 12.0 2.39
got: inf inf inf
deviation: 999999999.999000 mm, expected: 10.000000 mm
-------------------------------------------------------------------------------
total: 1 tests succeeded, 0 tests skipped, 1 tests FAILED!
-------------------------------------------------------------------------------
> echo 55.0 12.0 40.0 | cs2cs EPSG:4937 EPSG:10488
55.00 12.00 2.39
Using cs2cs, the transformation goes through as expected, so something seems to be going wrong in gie. Not sure what, but seems to be related to needing the grid.
Below the same file is processed with full debug output. Here it looks like the grid file is picked up but somehow the resulting coordinates end up as a bunch of infs.
I've tested this with both PROJ 9.7.1 and 9.8.0 with similar results.
> set PROJ_DEBUG=3
> gie epsg_verification_dk.gie
-------------------------------------------------------------------------------
Reading file 'epsg_verification_dk.gie'
pj_open_lib(proj.ini): call fopen(C:\Users\b012349\AppData\Local\mambaforge\envs\transformo-dev\Library\share\proj\proj.ini) - succeeded
pj_open_lib(proj.db): call fopen(C:\Users\b012349\AppData\Local\mambaforge\envs\transformo-dev\Library\share\proj\proj.db) - succeeded
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
pipeline: pj_ellipsoid - final: ellps=GRS80
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
pipeline: pj_ellipsoid - final:
pipeline: Pipeline: Building arg list for step no. 0
pipeline: Pipeline: init - proj=axisswap, 2
pipeline: order=2,1
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 0 (proj=axisswap) at 00000247F1D41420
pipeline: Pipeline at [00000247F1D410C0]: step at [00000247F1D41420] (proj=axisswap) done
pipeline: Pipeline: Building arg list for step no. 1
pipeline: Pipeline: init - proj=unitconvert, 3
pipeline: xy_in=deg
pipeline: xy_out=rad
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
unitconvert: pj_ellipsoid - final: ellps=GRS80
unitconvert: xy_in unit: Degree
unitconvert: xy_out unit: Radian
pipeline: Pipeline: Step 1 (proj=unitconvert) at 00000247F1DC8160
pipeline: Pipeline at [00000247F1D410C0]: step at [00000247F1DC8160] (proj=unitconvert) done
pipeline: Pipeline: Building arg list for step no. 2
pipeline: Pipeline: init - proj=utm, 3
pipeline: zone=32
pipeline: ellps=GRS80
utm: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
utm: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 2 (proj=utm) at 00000247F1DC8660
pipeline: Pipeline at [00000247F1D410C0]: step at [00000247F1DC8660] (proj=utm) done
pipeline: Pipeline: 3 steps built. Determining i/o characteristics
pj_open_lib(dk_sdfi_dvr90_2023.tif): call fopen(C:\Users\b012349\AppData\Local/proj\dk_sdfi_dvr90_2023.tif) - succeeded
pj_open_lib(dk_sdfi_dvr90_2023.tif): call fopen(C:\Users\b012349\AppData\Local/proj\dk_sdfi_dvr90_2023.tif) - succeeded
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
pipeline: pj_ellipsoid - final:
pipeline: Pipeline: Building arg list for step no. 0
pipeline: Pipeline: init - proj=axisswap, 2
pipeline: order=2,1
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 0 (proj=axisswap) at 00000247F1DC8A30
pipeline: Pipeline at [00000247F1DC8D90]: step at [00000247F1DC8A30] (proj=axisswap) done
pipeline: Pipeline: Building arg list for step no. 1
pipeline: Pipeline: init - proj=unitconvert, 3
pipeline: xy_in=deg
pipeline: xy_out=rad
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
unitconvert: pj_ellipsoid - final: ellps=GRS80
unitconvert: xy_in unit: Degree
unitconvert: xy_out unit: Radian
pipeline: Pipeline: Step 1 (proj=unitconvert) at 00000247F1DC86D0
pipeline: Pipeline at [00000247F1DC8D90]: step at [00000247F1DC86D0] (proj=unitconvert) done
pipeline: Pipeline: Building arg list for step no. 2
pipeline: Pipeline: init - inv, 4
pipeline: proj=vgridshift
pipeline: grids=dk_sdfi_dvr90_2023.tif
pipeline: multiplier=1
vgridshift: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
vgridshift: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 2 (inv) at 00000247F1DC90F0
pipeline: Pipeline at [00000247F1DC8D90]: step at [00000247F1DC90F0] (inv) done
pipeline: Pipeline: Building arg list for step no. 3
pipeline: Pipeline: init - proj=unitconvert, 3
pipeline: xy_in=rad
pipeline: xy_out=deg
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
unitconvert: pj_ellipsoid - final: ellps=GRS80
unitconvert: xy_in unit: Radian
unitconvert: xy_out unit: Degree
pipeline: Pipeline: Step 3 (proj=unitconvert) at 00000247F1DC9B10
pipeline: Pipeline at [00000247F1DC8D90]: step at [00000247F1DC9B10] (proj=unitconvert) done
pipeline: Pipeline: Building arg list for step no. 4
pipeline: Pipeline: init - proj=axisswap, 2
pipeline: order=2,1
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 4 (proj=axisswap) at 00000247F1E7F760
pipeline: Pipeline at [00000247F1DC8D90]: step at [00000247F1E7F760] (proj=axisswap) done
pipeline: Pipeline: 5 steps built. Determining i/o characteristics
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
pipeline: pj_ellipsoid - final:
pipeline: Pipeline: Building arg list for step no. 0
pipeline: Pipeline: init - proj=axisswap, 2
pipeline: order=2,1
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 0 (proj=axisswap) at 00000247F1E80840
pipeline: Pipeline at [00000247F1E804E0]: step at [00000247F1E80840] (proj=axisswap) done
pipeline: Pipeline: Building arg list for step no. 1
pipeline: Pipeline: init - proj=unitconvert, 3
pipeline: xy_in=deg
pipeline: xy_out=rad
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
unitconvert: pj_ellipsoid - final: ellps=GRS80
unitconvert: xy_in unit: Degree
unitconvert: xy_out unit: Radian
pipeline: Pipeline: Step 1 (proj=unitconvert) at 00000247F1E81260
pipeline: Pipeline at [00000247F1E804E0]: step at [00000247F1E81260] (proj=unitconvert) done
pipeline: Pipeline: Building arg list for step no. 2
pipeline: Pipeline: init - inv, 4
pipeline: proj=vgridshift
pipeline: grids=dk_sdfi_dvr90_2023.tif
pipeline: multiplier=1
vgridshift: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
vgridshift: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 2 (inv) at 00000247F1E80BA0
pipeline: Pipeline at [00000247F1E804E0]: step at [00000247F1E80BA0] (inv) done
pipeline: Pipeline: Building arg list for step no. 3
pipeline: Pipeline: init - proj=unitconvert, 3
pipeline: xy_in=rad
pipeline: xy_out=deg
unitconvert: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
unitconvert: pj_ellipsoid - final: ellps=GRS80
unitconvert: xy_in unit: Radian
unitconvert: xy_out unit: Degree
pipeline: Pipeline: Step 3 (proj=unitconvert) at 00000247F1E815C0
pipeline: Pipeline at [00000247F1E804E0]: step at [00000247F1E815C0] (proj=unitconvert) done
pipeline: Pipeline: Building arg list for step no. 4
pipeline: Pipeline: init - proj=axisswap, 2
pipeline: order=2,1
axisswap: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
axisswap: pj_ellipsoid - final: ellps=GRS80
pipeline: Pipeline: Step 4 (proj=axisswap) at 00000247F1E7FE20
pipeline: Pipeline at [00000247F1E804E0]: step at [00000247F1E7FE20] (proj=axisswap) done
pipeline: Pipeline: 5 steps built. Determining i/o characteristics
noop: pj_ellipsoid - final: a=6378137.000 f=1/298.257, errno=0
noop: pj_ellipsoid - final: ellps=GRS80
pj_open_lib(dk_sdfi_dvr90_2023.tif): call fopen(C:\Users\b012349\AppData\Local/proj\dk_sdfi_dvr90_2023.tif) - succeeded
pj_open_lib(dk_sdfi_dvr90_2023.tif): call fopen(C:\Users\b012349\AppData\Local/proj\dk_sdfi_dvr90_2023.tif) - succeeded
-----
FAILURE in epsg_verification_dk.gie(18):
expected: 55.0 12.0 2.39
got: inf inf inf
deviation: 999999999.999000 mm, expected: 10.000000 mm
-------------------------------------------------------------------------------
total: 1 tests succeeded, 0 tests skipped, 1 tests FAILED!
-------------------------------------------------------------------------------
Using the (unfortunately undocumented)
crs_src/crs_dstway of initialising an operation in gie, it seems that any time a grid is required in the transformation results in an error.Running the file below
through gie results in an error in the last test case. Output here:
Using cs2cs, the transformation goes through as expected, so something seems to be going wrong in gie. Not sure what, but seems to be related to needing the grid.
Below the same file is processed with full debug output. Here it looks like the grid file is picked up but somehow the resulting coordinates end up as a bunch of
infs.I've tested this with both PROJ 9.7.1 and 9.8.0 with similar results.