How To: Calculate mean sea level values from altitudes using a high-accuracy receiver connected to Collector for ArcGIS


Collector for ArcGIS stores altitude values representing height above ellipsoid (HAE) instead of mean sea level (MSL). The antenna height value associated with or entered for the receiver is used to subtract the incoming altitude values to ensure accuracy at ground level.

A field can be created to record MSL values, which are calculated using the following formula:

Z-value (MSL) = HAE - geoid separation – antenna height

This formula must be configured manually in ArcMap, or incorporated into the CollectorUtils scripts available on GitHub.

The current version of Collector for ArcGIS only stores altitude values (HAEs) as field attributes, and not as the actual geometry of the feature. However, the altitude values can be captured by adding a Double type field to the attribute table to store the values, and using the ProjectZ geoprocessing tool to transfer these values to geometry z-values. For more information, refer to Collector for ArcGIS: Record GPS metadata and Collector for ArcGIS: Does Collector store the altitude on the z-value of a geometry?

CollectorUtils scripts are not supported by Esri Support.


Some tools in this workflow require the Spatial Analyst license.

To calculate MSL values and store the values in the field of a feature class, follow the instructions provided below.

  1. Prepare the map for data collection in ArcMap. For more information, refer to Collector for ArcGIS: Prepare your data in ArcGIS Desktop.
  2. Configure a feature class to store Global Navigation Satellite System (GNSS) fields. Add the fields manually using Esri's recommended workflow. For more information, refer to Collector for ArcGIS: Configure a feature service to store GPS metadata. Alternatively, use the script from GitHub: Add GNSS Metadata Fields .
  3. Collect the desired field data using Collector for ArcGIS. For an example workflow on collecting field data, saving, and sharing the data, refer to Collector for ArcGIS: Collect data.
  4. Add the collected data from Step 3 to ArcMap.
  5. To transfer the altitude values to geometry z-values, add the collected data as the input for the ProjectZ tool.
    1. Download the CollectorUtils toolbox.
    2. From the Catalog window, connect to the folder containing the toolbox.
    3. Open the ProjectZ tool.
Catalog window
  1. Input the required parameters, as listed below, and click OK.
    • ​Input Features
    • Input Coordinate System (of the x, y, z values)
    • X-Value Coordinates
    • Y-Value Coordinates
    • Z-Value Coordinates
    • Output Dataset or Feature Class
    • Output Coordinate System

The image below shows the parameter fields for input.

  1. Download the relevant le*binary GEOID12B file here. Determine the appropriate grid using this image.
  2. Add the downloaded GEOID12B .bin file to ArcMap by creating a connection to the file in the Catalog window, and dragging the .bin file to the map frame.
Creating a connection to the file in the Catalog window
  1. Project the GEOID12B .bin file to the same coordinate system as the data using the Project Raster tool. The .bin file projects on-the-fly when added to the map, which may add some degree of inaccuracy to the geoid height if the layer is not reprojected.
Project Raster tool window
  1. Use the Extract Values to Points tool to output specific geoid values for the data collected with Collector for ArcGIS.
Extract Values to Points tool window
  1. Open the Add Field tool, and add a field with the following information to store the MSL values in the output feature class from Step 9. Refer to ArcMap: Adding fields for more information.
Add Field tool window
  • Field Name: MSL_Elevation
  • Type: Double
  • Precision: 50
  • Scale: 10
  1. Use the following expressions in Field Calculator to output MSL values in the field created in Step 10.
MSL = altitude (HAE) - geoid separation (RASTERVALU) – antenna height
  • Using Python (and the given Antenna Height = 1 meter):
!ELEVATION!.firstpoint.Z - !RASTERVALU!-1
  • Using VB Script (and the given Antenna Height = 1 meter):
Output MSL values in the field

Related Information