Creating Vertical Adjustment Grid Files for Use With FME

Liz Sanderson
Liz Sanderson
  • Updated

FME Version

  • FME 2022.1


GPS heights are typically recorded as heights above an ellipsoidal model of the Earth (or “ellipsoid height”). For certain applications such as engineering work, we may wish to determine heights above sea level, or “orthometric heights”, derived from a geoid model of the Earth. Ellipsoidal heights must first be adjusted or converted before they can be compared to mean sea level (orthometric) heights. FME allows us to convert between ellipsoid height and orthometric height by using the CsmapReprojector transformer.

For a more complete discussion on the difference between ellipsoid height and orthometric height please see the following page.

The CsmapReprojector can use the following grid formats:

  • Geoid96 (.geo)
  • Geoid99 (.bin)
  • OSGM91 (.txt)
  • Byn (.byn)
  • EGM96 (.grd)

If you have a grid that is not in one of these formats, it is possible to convert it using FME. The simplest grid format to create is the EGM96 Ascii GRD format, based on the specifications found here.


The two workspaces below illustrate how to convert from your own grid to the EGM96 GRD format. They are available for download from the Files section on this article. They have been updated for 2022.1. If you are using an older version of FME and are missing transformers, use the _old.fmw workspaces. 

Convert from Raster Grid File


This workspace will convert a Vertical Mapper Ngrid file into an EGM96 compatible grid file. This workspace has been made as generic as possible, so you can replace the Ngrid reader with any of the raster readers supported by FME. The only requirement is that the source grid is in a lat/long coordinate system, and the height adjustment is in meters. If the source grid is in another projection, use a Reprojector transformer after the reader to reproject to lat/long.

Convert from Ascii Point Cloud


This workspace is a slightly modified version that will read from an Ascii file of adjustments, in the form Lat, Long, Adjustment. The Ascii adjustments are read as a point cloud, which is then converted to a raster grid for conversion. This workspace requires you to supply the grid pixel spacing, which should be equal to or larger than the separation between the Ascii points. If the points are not in a lat/long projection, please add a Reprojector after the reader to reproject the point cloud before rasterizing. 


Using the New Grid

There are two Vertical Handling options in the CsmapReprojector that use the conversion grids:

  • Geocentric or ellipsoid height -> Orthometric height
  • Orthometric height -> Geocentric or ellipsoid height

First, enable the Vertical section, then when either of these options is chosen for Vertical Handling, the Geoid Height Grid will be enabled.


However, clicking the ellipsis button prompts you for a GDC file instead of the GRD file. 


GDC Files

The GDC file is a simple text file containing a catalog of grids to use for a particular conversion, allowing you to use several grid files covering different areas for the same conversion. The first grid listed that the data falls within will be used for the conversion.

For example, here are the contents of Geoid03-Nad83_Navd88-2003.gdc:


Lines preceded with # are for comments. Paths to the grid files are relative to the location of the GDC file.

Once you have created the GRD file(s), and placed it in the desired location, create a GDC file and place it in the FME\Reproject\GeoidHeightGrids folder. It will then be available for use within the CsmapReprojector.


The first time FME uses the .grd file, it will try to compile to a binary ._96 file. If FME is installed under Program Files in newer versions of Windows, it does not have sufficient access to create this file in the GridData folder and will fail the translation. In this case, it may be best to store the .grd file under your Documents folder instead and modify the .gdc to point to that. Once the _96 file is created, you can move both the .grd and ._96 to GridData.

Was this article helpful?



Please sign in to leave a comment.