转换GPS数据Cello-CANiQ

问题描述 投票:0回答:1

我正在从GPS追踪器接收数据。 文件说: 字节对齐表:

[1] -> System Code, byte 1 – ASCII "M"
[2] -> System Code, byte 2 – ASCII "C"
[3] -> System Code, byte 3 – ASCII "G"
[4] -> System Code, byte 4 – ASCII "P"
...
[45] -> Longitude
[46] -> Longitude
[47] -> Longitude
[48] -> Longitude
[49] -> Latitude
[50] -> Latitude
[51] -> Latitude
[52] -> Latitude
...

我有以下(十六进制)数据:

...
[45] -> 09
[46] -> 36
[47] -> 4b
[48] -> f8

[49] -> a7
[50] -> 70
[51] -> 7b
[52] -> 00
...

当前位置定位的经度,纬度经度和纬度坐标。两个坐标都以32位有符号整数形式发送,表示10 -8弧度分辨率的坐标。经度的可能值为-Π到+Π,纬度为-Π/ 2到+Π/ 2。坐标参考WGS-84地图基准和椭圆体。

如何将其转换为经度〜-74,纬度~4附近的坐标?

gps hex latitude-longitude
1个回答
0
投票

我的答案只能基于你上面写的内容。

你有两个32位整数,其中“1”代表10e-8rad。

所以你可以做的是乘以1e-7得到弧度。要转换为度数(通常用于表示WGS84坐标),请乘以180 / pi

像这样的东西:

const oneRadMultiplier = 1e-7 * 180 / pi;

latitudeDeg  = 0x09364bf8 * oneRadMultiplier; 
longitudeDeg = 0xa7707b00 * oneRadMultiplier; 

作为示例,您提供的数字似乎并不真正匹配。可能是这些整数存储为小端。我没试过,但希望上面的内容有助于你进一步发展。

© www.soinside.com 2019 - 2024. All rights reserved.