Height transformation using R or Python

Dear EMLID community,
I am using REACH RS2 to collect ground control points for drone mapping and supporting monitoring vegetation after fire. Using also reach view 3. version 7.6.

I have collected data in LAT,LON (CRS EPSG 4326) and ellipsoidal height (m) and would like to transform it to another CRS. Target horizontal is EPSG: 25831 and target height is based on EGM2008 (EPSG 3855).

The horizontal transformation.
I have performed with sf package in R without problems but can be performed with QGIS and many other tools.

Vertical transformation.
I know that I can choose the desired CRS when collecting the points but I thought that transformation is also possible afterwards. I wonder if someone has done the vertical transformation using emlid studio or one of the libraries in R or Python? And how my emlid reach RS is doing the transformation ? I would like to check with that value too.

A sample dataset is here:

Thanks in advance for any guidance.

Kind regards,

Hi Inti,

Welcome to our community!

ReachView 3 uses geoid models to provide orthometric heights. Emlid Studio doesn’t support them, so it outputs ellipsoidal heights only.

As for performing transformation with a code, we don’t have a ready solution to share. Normally, it’s just not needed since it’s much easier to obtain the coordinates in the required CS and vertical datum with ReachView 3. I’ve double-checked that you can use ETRS89 / UTM zone 31N and EGM2008 height together in the app.

I know that I can choose the desired CRS when collecting the points but I thought that transformation is also possible afterwards.

Is there any specific reason why you’d like to survey in WGS84 and apply the transformation afterward? Or is it just for a test?

Hi Kseniia,
Thank you for your message.

The reason I would like to transform from ellipsoidal height to orthometric heights is because we have collected some data with WGS84 as CRS (at a time when we thought the vertical datum transformation was common task to perform afterwards) and for comparison with other datasets we need to perform the transformation. For all survey projects in the future we will be using directly the CRS of interest.

Is it possible to use the EGM2008 model that is used in ReachView 3 to perform the transformation in another setting like in my laptop with R,Python or QGIS for example?

I have been suggested to use:

  1. A web app like [Geoid Height Calculator | Software | UNAVCO](unavco conversion tool)

  2. Download a tiff of the EGM2008 geoid model and subtract the ellipsoidal height.
    One source that was passed to me was the [Agisoft Metashape: Geoids](geoids tiff from agisoft) which has a EGM2008 1’ geoid model tif file.

Thank you for helping understand better about this topic and please let me know if there is any error in my calculations or how can I improve it.

Kind regards,


Got it now, thanks!

From what I see, both methods can work. Using an online tool for height conversion seems the most straightforward way to me. As for the second option, I can hardly help with a particular implementation. But if you’re experienced in programming/GIS, you can try to create a similar converter yourself or use Raster functions to apply the geoid-ellipsoid separation.