一、对流层概念
对流层(Troposphere)地球大气层靠近地面的一层。它同时是地球大气层里密度最高的一层,它蕴含了整个大气层约75%的质量,以及几乎所有的水蒸气及气溶胶。
- 对流层的下界与地面相接,上界高度随地理纬度和季节而变化,在低纬度地区平均高度为 17 ~ 18 公里,在中纬度地区平均为 10 ~ 12 公里,在高维度地区平均为 8 ~ 9 公里,并且夏季高于冬季。
- 卫星导航领域所说的对流层与严格的大气科学中的对流层定义有所区别。卫星导航领域中需要考虑对流层延时,所以把从地球表面到电离层之间的区域都认为是对流层,即从0km到约50km的大气层区域。
- 云、雾、雨、雪等众多天气现象都发生在对流层。
- 对流层中主要的传播方式或效应有:大气折射、波导传播、对流层散射、多径传播、大气吸收,以及水汽凝结体和其他大气微粒的吸收和散射。
二、对流层对卫星导航的影响
因为卫星都处于大气层外,卫星信号传播到地球上必须要经过大气层中的对流层,于是必然要受到对流层的影响。对流层是非弥散性介质,即介质的介电常数与频率无关,所以在对流层中,不同频率的电磁波具有相同的传播速度。因此在电离层延时一文中用到的利用双频接收机消除电离层延时的方法对对流层就无法使用了。这使得我们在实际中一般采用数学模型来估计对流层延时。当然,对于有基站的情况,也可以通过差分的方式来消除对流层延时(可参考文章差分GPS)。
三、对流层模型
可能是由于对流层模型太多,准确度并不是那么高,在GPS的接口说明文档中并没有给出官方的参考对流层模型。这里我们以 RTKLIB 中用到的 Saastamoinen 模型说一下。
标准大气层模型可以表示为:
下面摘录了 RTKLIB 中用 Saastamoinen 模型计算对流层延时的函数代码,可以跟以上公式进行一一对应。需要注意的是计算时的单位换算,azel[0], azel[1]分别是方位角和仰角,pos[0], pos[1]分别是接收机纬度和经度,它们的单位都是弧度,pos[2]为接收机高度,单位为米。
/* troposphere model -----------------------------------------------------------
* compute tropospheric delay by standard atmosphere and saastamoinen model
* args : gtime_t time I time
* double *pos I receiver position {lat,lon,h} (rad,m)
* double *azel I azimuth/elevation angle {az,el} (rad)
* double humi I relative humidity
* return : tropospheric delay (m)
*-----------------------------------------------------------------------------*/
extern double tropmodel(gtime_t time, const double *pos, const double *azel,
double humi)
{
const double temp0=15.0; /* temparature at sea level */
double hgt,pres,temp,e,z,trph,trpw;
if (pos[2]<-100.0||1E4<pos[2]||azel[1]<=0) return 0.0;
/* standard atmosphere */
hgt=pos[2]<0.0?0.0:pos[2];
pres=1013.25*pow(1.0-2.2557E-5*hgt,5.2568);
temp=temp0-6.5E-3*hgt+273.16;
e=6.108*humi*exp((17.15*temp-4684.0)/(temp-38.45));
/* saastamoninen model */
z=PI/2.0-azel[1];
trph=0.0022768*pres/(1.0-0.00266*cos(2.0*pos[0])-0.00028*hgt/1E3)/cos(z);
trpw=0.002277*(1255.0/temp+0.05)*e/cos(z);
return trph+trpw;
}