Правильно понимаете, над уровнем моря. Каким образом приемник GPS вычислит истинную (под пузом) высоту?
В продолжение, описание строки NMEA GGA
Пример строки из GPS-приемника (в данном случае коммуникатор GloFiish x650)
$GPGGA,043513.000,5300.8184,N,06302.9800,E,1,11,0.8,198.3,M,-19.0,M,,0000*77
Высота над уровнем моря 198.3m, высота эллипсоида над геоидом -19.0m.
Чтобы восстановить высоту относительно WGS84, складываем эти два значения, получаем 179.3. Что это означает:
1. Сначала внутри приемника после измерения получились координаты и высота WGS84
53°00.8184'N, 063°02.9800'E, 179.3m
2. Firmware взяло координаты 53°00.8184'N, 063°02.9800'E и нашло в своей таблице значение geoid separation -19.0m
3. Firmware взяло высоту 179.3m и исправило её так, чтобы она была относительно уровня моря. Получилось 198.3m
4. Firmware сформировало текстовую строку NMEA, получилось
...5300.8184,N,06302.9800,E,....,198.3,M,-19.0,M
Высота исправлена, пользователю ничего не нужно делать.
В базе данных любой GPS будь то навороченная или туристическая есть файл с данными geoid separation. Единственный его недостаток - слишком грубая сетка (я уже писал - 450х450 метров) для всего мира. Плюс не всегда может совпасть значение волны геоида с принятой в какой либо стране системы высот ( ну как у нас, Балтийская например). Там расхождение что-то около 7 метров. Сложив все это в кучу, можете получить "высоту под брюхом". Она не будет зависеть ни от установок барометра, ни от его погрешности - то есть , ИМХО, для пилота самая информативная и удобная. Но, как справедливо заметил stranger267, нужна диффпопавка, чтобы высота в предложении GGA не "гуляла". В этом примере - данные без поправки ( в поле после координаты Е стоит 1). Как только станет 2 - значит жпс использует диффпоправку. Более того, эта двоечка (абсолютной уверенности, правда у меня нет) "вырубает" программно остальные высоты - от РВ и барометра, считая ее самой точной (геометрическая).