栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

CPR编码学习

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CPR编码学习

1. 什么是CPR编解码?

CPR 编码是为提高ADS–B消息的传输效率而设计的,由于飞机在飞行时,正常情况下,表示经纬度的编码在较长的时间内高权重的位会保持不变,这样消息传输的效率就很低。而CPR编码方法通过对地球进行分区域的划分,然后对划分后的区域进行两种不同方式的编码,避免了高阶位的重复发送,在接收端通过比较不同类型的编码消息,得出位置信息,这样提高了传输效率。

2.CPR编码

由于高比特位的码元不进行传送,使得一个编码可能会代表多个地球的多个位置,CPR编码通过使用两种略微不同的编码方式(奇编码和偶编码)来确定唯一的位置,只要接收到两种类型的编码消息,就可以确定没有被发送的高比特位,这样就可以唯一的确定后续消息代表的位置。

如上图所示。先将地球划分位不同的区域(Zone),分为经度Zone和维度Zone,单个维度Zone的尺寸由如下公式确定:
D l a t i = 36 0 。 4 ∗ M Z − i { 6.0 0 。 i = 0 (偶编码) 6.1 0 。 i = 1 (奇编码) {Dlat_i} =frac{360^。}{4*MZ-i} left{ begin{aligned} {6.00^。} &&i= 0(偶编码) \ {6.10^。} &&i= 1(奇编码) end{aligned} \ right. Dlati​=4∗MZ−i360。​{6.00。6.10。​​i=0(偶编码)i=1(奇编码)​
其中NZ代表在赤道和南北两极之间的维度Zone的数量也就是说奇编码是近似6.1度,偶编码是精确的6度,如下图所示


根据技术标准中的CPR编码方式,不同的维度对应的经度Zone的尺寸是不同的,由下面公式给出:
D l a t i = 36 0 。 4 ∗ M Z − i { 36 0 。 [ N L ( R l a t i ) − i ] N L ( R l a t i ) − i > 0 36 0 。 N L ( R l a t i ) = 0 {Dlat_i} =frac{360^。}{4*MZ-i} left{ begin{aligned} {360^。[NL(Rlat_i)-i] } &&NL(Rlat_i)-i> 0 \ {360^。}&&NL(Rlat_i)= 0 end{aligned} \ right. Dlati​=4∗MZ−i360。​{360。[NL(Rlati​)−i]360。​​NL(Rlati​)−i>0NL(Rlati​)=0​
其中NL(x)代表x维度下经度的数量,如下公式所示:


在确定具体位置时,CPR算法又将每个Zone细分位不同数量的小区域,如上图所示,XZ和YZ共同觉得小区域的编号,每对编号即代表不同的小区域,对于用于
编码的比特位数Nb的规定如下:对空中位置编码Nb=17,对地面位置编码Nb=19,对于TCP
TCP+1位置的编码Nb=14.依据这样的规则就可以进行编码了,步骤如下:
(1) 根据CPR奇或偶形式确定维度Zone的尺寸;
(2) 用待编码的维度值依据如下公式得出YZ的值

(3) 由于YZ进行计算时有一定的舍入误差,将YZ代表的纬度值按照如下公式还原:

(4) 由Rlat来得到NL和Dlon,它们分别由之前的公式得到;
(5) 提取YZ和XZ的低位得到组后的编码结果,即:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号