English

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

Summary

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 the 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 the following web help documents, Collector for ArcGIS: Record GPS metadata and Collector for ArcGIS: Does Collector store the altitude on the z-value of a geometry?

Note:
CollectorUtils scripts are not supported by Esri Support.

Procedure

Note:
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 information on doing this, 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, this can be done using the script from GitHub: Add GNSS Metadata Fields.
  3. Collect the desired field data using Collector for ArcGIS. For an example 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.
User-added image
 
  1. Input the required parameters, as listed below, and click OK. The following image is an example of the parameter values.
    • ​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
User-added image
  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.
User-added image
 
  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 for the geoid height if the layer is not reprojected.

    User-added image
     
  2. Use the Extract Values to Points tool to output specific geoid values for the data collected with Collector for ArcGIS.

    User-added image
     
  3. 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.

    User-added image
    • Field Name: MSL_Elevation
    • Type: Double
    • Precision: 50 
    • Scale: 10
  4. 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):
      [ELEVATION] - [RASTERVALU] -1
User-added image

Related Information