Hi Javier,
yes, your analysis is fully correct , and your enhanced pipeline too.
However that would suck a bit to have to implement it like that as doing
and undoing the vgridshift is inefficient. The ideal solution would use
some storage space as we discussed a few months ago but couldn't reach a
conclusion how to implement that. For 3D operations only like that, we
could use the v_4 component as the temporary storage using push +v_3 /
axisswap order=3,4 / pop +v_3 trickery
Even
Le 02/05/2025 à 21:10, Javier Jimenez Shaw via PROJ a écrit :
Hi
This is a question to understand what should be more correct, not a
request to change anything in PROJ. The numerical difference is very
small.
The 3D transformation from EPSG:4258 to EPSG:4150+5729 has two
components: a grid file for the geoid model of LHN95 height,
interpolated in ETRS89, and the Helmert transformation from ETRS89
(EPSG:4258) to CH1903+ (EPSG:4150).
The input of the Helmert transformation should be ellipsoidal heights,
but in this pipeline they are orthometric heights. Right?
Technically that would change also the horizontal output because of
the change in elevation in the input of the Helmert (again, the
difference is very small. 1 or 2 mm. I just want to understand it).
PROJ_NETWORK=ON projinfo EPSG:4258 EPSG:4150+5729 -o proj --3d
+proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +inv +proj=vgridshift
+grids=ch_swisstopo_chgeo2004_ETRS89_LHN95.tif
+multiplier=1
+step +proj=push +v_3
+step +proj=cart +ellps=GRS80
+step +inv +proj=helmert +x=674.374 +y=15.056 +z=405.346
+step +inv +proj=cart +ellps=bessel
+step +proj=pop +v_3
+step +proj=unitconvert +xy_in=rad +xy_out=deg
+step +proj=axisswap +order=2,1
Would this be more correct? (undoing the vgridshift before calling
Helmert, but after "push +v_3")
+proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +inv +proj=vgridshift
+grids=ch_swisstopo_chgeo2004_ETRS89_LHN95.tif
+multiplier=1
+step +proj=push +v_3
+step +proj=vgridshift +grids=ch_swisstopo_chgeo2004_ETRS89_LHN95.tif
+multiplier=1
+step +proj=cart +ellps=GRS80
+step +inv +proj=helmert +x=674.374 +y=15.056 +z=405.346
+step +inv +proj=cart +ellps=bessel
+step +proj=pop +v_3
+step +proj=unitconvert +xy_in=rad +xy_out=deg
+step +proj=axisswap +order=2,1
Thanks.
Javier.
PS to get output in meters use EPSG:2056, that uses the Swiss
projection. I removed it to simplify the pipelines.
Just replace the last two lines of the pipeline with
+step +proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333
+k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel
_______________________________________________
PROJ mailing list
PROJ@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/proj
--
http://www.spatialys.com
My software is free, but my time generally not.
_______________________________________________
PROJ mailing list
PROJ@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/proj