当前位置:网站首页>GPS从入门到放弃(十四)、电离层延时
GPS从入门到放弃(十四)、电离层延时
2022-07-06 13:46:00 【追捕的风】
一、电离层概念
电离层(Ionosphere)是地球大气的一个电离区域。它是受到太阳高能辐射以及宇宙线的激励而电离的大气高层。50千米以上的整个地球大气层都处于部分电离或完全电离的状态,电离层是部分电离的大气区域,完全电离的大气区域称磁层。
电离层的范围从离地面约50公里开始一直伸展到约1000公里高度的地球高层大气空域。电离层的主要特性由电子密度、电子温度、碰撞频率、离子密度、离子温度和离子成分等空间分布的基本参数来表示。
电离层的研究对象主要是电子密度随高度的分布。电子密度(或称电子浓度)是指单位体积的自由电子数,随高度的变化与各高度上大气成分、大气密度以及太阳辐射通量等因素有关。电离层内任一点上的电子密度,决定于上述自由电子的产生、消失和迁移三种效应。在不同区域,三者的相对作用和各自的具体作用方式也大有差异。电离层中存在相当多的自由电子和离子,能使无线电波改变传播速度,发生折射、反射和散射,产生极化面的旋转并受到不同程度的吸收。
二、电离层对卫星导航的影响

三、双频接收机消除电离层延时
四、单频接收机消除电离层延时
以上每条公式中最后的括号内的表示运算单位,semi-circle是半圆,其与弧度的换算关系是 π 弧度等于一个半圆。下面摘录了 RTKLIB 中用 Klobuchar 模型计算电离层延时的函数代码,可以跟以上公式进行一一对应。需要注意的是计算时的单位换算,azel[0], azel[1]分别是方位角和仰角,pos[0], pos[1]分别是接收机纬度和经度,它们的单位都是弧度,所以换算成半圆时需要除以π 。
double ionmodel(gtime_t t, const double *ion, const double *pos,
const double *azel)
{
const double ion_default[]={ /* 2004/1/1 */
0.1118E-07,-0.7451E-08,-0.5961E-07, 0.1192E-06,
0.1167E+06,-0.2294E+06,-0.1311E+06, 0.1049E+07
};
double tt,f,psi,phi,lam,amp,per,x;
int week;
if (pos[2]<-1E3||azel[1]<=0) return 0.0;
if (norm(ion,8)<=0.0) ion=ion_default; //若没有电离层参数,用默认参数
/* earth centered angle (semi-circle) */
psi=0.0137/(azel[1]/PI+0.11)-0.022;
/* subionospheric latitude/longitude (semi-circle) */
phi=pos[0]/PI+psi*cos(azel[0]);
if (phi> 0.416) phi= 0.416;
else if (phi<-0.416) phi=-0.416;
lam=pos[1]/PI+psi*sin(azel[0])/cos(phi*PI);
/* geomagnetic latitude (semi-circle) */
phi+=0.064*cos((lam-1.617)*PI);
/* local time (s) */
tt=43200.0*lam+time2gpst(t,&week);
tt-=floor(tt/86400.0)*86400.0; /* 0<=tt<86400 */
/* slant factor */
f=1.0+16.0*pow(0.53-azel[1]/PI,3.0);
/* ionospheric delay */
amp=ion[0]+phi*(ion[1]+phi*(ion[2]+phi*ion[3]));
per=ion[4]+phi*(ion[5]+phi*(ion[6]+phi*ion[7]));
amp=amp< 0.0? 0.0:amp;
per=per<72000.0?72000.0:per;
x=2.0*PI*(tt-50400.0)/per;
return CLIGHT*f*(fabs(x)<1.57?5E-9+amp*(1.0+x*x*(-0.5+x*x/24.0)):5E-9);
}
单频接收机用 Klobuchar 模型计算电离层延时大致能消除电离层延时的50%,而双频的方法能消除绝大部分,精度达到1m以下。
边栏推荐
- Four common ways and performance comparison of ArrayList de duplication (jmh performance analysis)
- 关于程序员的职业操守,从《匠艺整洁之道》谈起
- Why is the cluster mode of spark on Yan better than the client mode
- 设置状态栏样式Demo
- Description of web function test
- Persistence / caching of RDD in spark
- 在Pi和Jetson nano上运行深度网络,程序被Killed
- Why rdd/dataset is needed in spark
- Z function (extended KMP)
- Some problems about the use of char[] array assignment through scanf..
猜你喜欢
一行代码可以做些什么?
C how to set two columns comboboxcolumn in DataGridView to bind a secondary linkage effect of cascading events
Four common ways and performance comparison of ArrayList de duplication (jmh performance analysis)
Checkpoint of RDD in spark
用aardio写一个旋转验证码标注小工具
50个常用的Numpy函数解释,参数和使用示例
Dialogue with Jia Yangqing, vice president of Alibaba: pursuing a big model is not a bad thing
Sequoia China, just raised $9billion
JS method to stop foreach
[Yu Yue education] higher mathematics of Nanchang University (2) reference materials
随机推荐
ROS error: could not find a package configuration file provided by "move_base“
Digital transformation takes the lead to resume production and work, and online and offline full integration rebuilds business logic
Numpy download and installation
It's not my boast. You haven't used this fairy idea plug-in!
Broadcast variables and accumulators in spark
Solution to the problem of UOS boot prompt unlocking login password ring
Summary of cross partition scheme
Binary tree node at the longest distance
AI 企业多云存储架构实践 | 深势科技分享
mysql根据两个字段去重
在最长的距离二叉树结点
MariaDb数据库管理系统的学习(一)安装示意图
Leveldb source code analysis series - main process
NPM run dev start project error document is not defined
红杉中国,刚刚募资90亿美元
Method return value considerations
Mysql相关术语
50个常用的Numpy函数解释,参数和使用示例
Microsoft technology empowerment position - February course Preview
麦趣尔砸了小众奶招牌