Recently we have come across the case where a GPS device did not provide a value for the "height above the geoid" value in the NMEA GGA sentence. This value is used to calcuate precise altitudes since it is used to correct altitude value with respect to the projection system used to render the location. Our primary concern here is to provide the best possible GPS coordinates (including altitudes) and to ensure that our users understand when the device is giving sub-optimal information (due to its configuration, capabilities or environment).
The height above the geoid is provided in the 11th data slice in the GGA sentence with its units provided int the 12th slice. We can verify the existence of the value using the ViSit Anywhere GPS monitor by pulling the appropriate columns out of the hidden column box. In the screenshot below (with simulated GPS data), we can see the values in slices 11 and 12 are missing.
The problem with missing data is that we must not confuse it with data that has a value. For example, we can replace the missing height over the geoid with, say, the value 0.0 and just continue. To address this problem, the missing value is represented as Not-A-Number (double.NaN) internally and signaled to the user by showing the altitude in red. An altitude of this type indicates that while the GGA altitude value (slices 9 and 10) are present, the correcting height above the geoid is missing. We can see a screenshot of the uncorrected altitude data below.
When the altitude is shown in red, users must be careful when sampling locations, as the GPS altitude will not be corrected with respect to the geographic projection being used. In some cases, users are capturing the altitude using a property column based on the GpsToolProvider method GetCartograhicAltitude. When the correction data is not available from the height above geoid value, this method will throw an exception and users will have to forego the capture of altitude data or fallback to using the current GPS sample's Altitude value.
Prior to ViSit Anywhere release 17.1.2, GGA sentences that were missing the height above geoid values were not accepted as valid. Starting with release 17.1.2, these sentences will be considered valid (but with degraded altitude values as described above).