[PROJ] geoid model + Helmert

Greg Troxel gdt at lexort.com
Fri May 2 15:52:00 PDT 2025


Javier Jimenez Shaw via PROJ <proj at lists.osgeo.org> writes:

> 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

These are CRSes I know ~nothing about so I went to read.  Things I think
I understood:

  EPSG:4258 and EPSG:4150 both seem to be 2D, not 3D.

  CH1903+ is a higher-accuracy realization of CH1903, intending to keep
  coordinates stable.

  I can't quite follow if CH1903+ is, strictly, a reference frame, and
  if it is the same as LV95, or if they are two realizations of the same
  system, but I think effectively they are interchangeable.  I would
  expect that CH1903 is truly a 2D datum, and maybe CH1903+ is 3D with
  HAE.

  LN02 (1902) is an orthometric datum based on leveling.

  LHN95 is sort of leveled and sort of geoid model, in a way I don't
  understand.

  Given that LHN95 goes with LV95/CH1903+, I find it strange that the
  grid file is expressed in ETRS89.  This would then use ETRS89
  horizontal for lookups, and give the difference between ETRS89 HAE and
  LHN95, intending to model LN02.

I see your point that converting to orthometric and using LLH in a
helmert transform is incorrect, and that you'd expect horizontal errors
to be small.  Vertically, it's taking heights in LHN95 and then applying
the HAE difference from ETRS89 to CH1903+, and that seems wrong, as I'd
assume that the HAE of a point in ETRS89 and CH1903+ are different.



What I think you want is to get a grid file that is indexed in CH1903+
and that gives the difference from CH1903+ HAE to LHN95 height (or
defines LHN95, giving an estimate from CH1903+ HAE to LN02).   I don't
understand why that isn't what's available.   In the US, GEOID18 gives
the difference in NAD83(2011) HAE to NAVD88, and those are more or less
analogous.


If you can't get that, I think you have to get the LHN95-h from the
model, and then transform the LLh to CH1903+ LLh, and then add LHN95-h,
and add h-ETRS89 - h_CH1903+ (or maybe subtract...).


More information about the PROJ mailing list