文章目录
- 高度相关的几个基本概念
- RTKLIB中高度设置与计算
- 参考文献
由于在GNSS定位中由多种高度表示,不同的高度概念很容易混淆,中英文对应有时候也容易搞混。因此整理了一下常用的两种高度——椭球高、正高的概念与计算,并且标注了对应的英文,让自己的脑子清醒一点。如果你也感兴趣的话,就请继续看下去吧。
高度相关的几个基本概念
椭球高 (Ellipsodial height):是以参考椭球面(ellipsoid) 为基准面的高程系统,也称大地高。

正高 (Orthometric height):以大地水准面(geoid) 为基准面的高程系统。即地面点到大地水准面的铅垂距离。又称为海拔高(height above mean sea level)。

大地水准面差距(Geoid height): 大地水准面与参考椭球面之间的高程差,英文中也常用Geoid separation, Geoid undulation 或者 Geoid deviation表示。
由上述表述可知: 大地水准面差距(Geoid height) = 椭球高 (Ellipsodial height) – 正高 (Orthometric height)

RTKLIB中高度设置与计算
如下图中RTKPOST的配置页面所示,RTKLIB中支持两种高度输出:
- 默认的ellipsoidal选项就是椭球高 (Ellipsodial height)
- Geodetic选项则是正高 (Orthometric height)

要计算正高 (Orthometric height),首先需要知道大地水准面的模型。根据不同的定义,有不同的大地水准面模型【3】。RTKLIB目前支持EGM96模型,具体模型相关参数位于源码geoid.c中。大地水准面模型包含了大地水准面差距(Geoid height)的网格值。
从上面等式我们知道,正高 (orthometric height) = 椭球高(ellipsoidal height) – 大地水准面差距(Geoid height)。因此可以通过插值的方法计算出不同经纬度下的正高 (Orthometric height)。
- 插值计算Geoid height可以参见位于geoid.c中的“geoidh_emb”函数
- 计算输出正高 (Orthometric height)可参见solution.c中的“outpos”函数,相关代码如下:
/* output solution as the form of lat/lon/height -----------------------------*/
static int outpos(uint8_t *buff, const char *s, const sol_t *sol,const solopt_t *opt)
{double pos[3],vel[3],dms1[3],dms2[3],P[9],Q[9];const char *sep=opt2sep(opt);char *p=(char *)buff;trace(3,"outpos :\n");ecef2pos(sol->rr,pos);soltocov(sol,P);covenu(pos,P,Q);if (opt->height==1) { /* geodetic height */pos[2]-=geoidh(pos); // 根据经纬度计算Geoid height,再从椭球高 (Ellipsodial height)中减去Geoid height}...
}
参考文献
[1]正常高、大地高、海拔高的测绘概念
[2]Ellipsoidal, orthometric and geoid height 101
[3]EGM96 and EGM2008 and Other Geoid Grids
[4]如何区分:大地水准面、似大地水准面、参考椭球面



![[复试——大地测量学]第一章节——2022/12/30](https://img-blog.csdnimg.cn/20191105112904493.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzI2NjQ2MTI5,size_16,color_FFFFFF,t_70)








