[PROJ] geoid model + Helmert

Even Rouault even.rouault at spatialys.com
Fri May 2 15:27:54 PDT 2025


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 at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/proj

-- 
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20250503/942db60f/attachment.htm>


More information about the PROJ mailing list