当前位置:网站首页>GPS从入门到放弃(十七) 、对流层延时
GPS从入门到放弃(十七) 、对流层延时
2022-07-06 13:46:00 【追捕的风】
一、对流层概念
对流层(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;
}
边栏推荐
- MySQL related terms
- Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
- Numpy download and installation
- 在最长的距离二叉树结点
- C language: comprehensive application of if, def and ifndef
- ViT论文详解
- guava: Multiset的使用
- Hill | insert sort
- 红杉中国,刚刚募资90亿美元
- The role of applicationmaster in spark on Yan's cluster mode
猜你喜欢
Microsoft technology empowerment position - February course Preview
【MySQL】Online DDL详解
JPEG2000-Matlab源码实现
uni-app App端半屏连续扫码
[Chongqing Guangdong education] Information Literacy of Sichuan Normal University: a new engine for efficiency improvement and lifelong learning reference materials
爬虫实战(五):爬豆瓣top250
抖音将推独立种草App“可颂”,字节忘不掉小红书?
Michael smashed the minority milk sign
Absolute primes (C language)
美国科技行业结束黄金时代,芯片求售、裁员3万等哀声不断
随机推荐
Web开发小妙招:巧用ThreadLocal规避层层传值
MySQL - transaction details
Why does MySQL index fail? When do I use indexes?
关于char[]数组通过scanf赋值使用上的一些问题。。
十一、服务介绍及端口
What is the RDD operator in spark
互联网快讯:吉利正式收购魅族;胰岛素集采在31省全面落地
Leetcode learning records (starting from the novice village, you can't kill out of the novice Village) ---1
Redistemplate common collection instructions opsforhash (IV)
[go][reprint]vscode run a HelloWorld example after configuring go
搜素专题(DFS )
C language char, wchar_ t, char16_ t, char32_ Relationship between T and character set
Enhance network security of kubernetes with cilium
JPEG2000-Matlab源码实现
Redistemplate common collection instructions opsforset (V)
Sql: stored procedures and triggers - Notes
Fastjson parses JSON strings (deserialized to list, map)
LeetCode学习记录(从新手村出发之杀不出新手村)----1
首批入选!腾讯安全天御风控获信通院业务安全能力认证
Sdl2 source analysis 7: performance (sdl_renderpresent())