我有跟踪teltonika GPS跟踪器的python脚本。 GPS数据被解析为整数 514511623,2201796 如此划分到10000000给了我拉特,很长。但是当跟踪器通过伦敦时,坐标就像这样 516631273,4293416810所以devision给我错误的经度。知道如何正确转换它
答案 0 :(得分:2)
我不熟悉teltonika GPS追踪器。但似乎你得到的经度数与负整数有关。该位置非常接近格林威治,经度为0.开始时它是0.22经度。然后,它进入负经度区域。但GPS接收器只处理正整数。假设它使用32位无符号整数,则最大帧间距为2 ** 32 = 4294967296 如果从4293416810中减去该数字
4293416810 - 4294967296 = -1550486
-1550486/1e7 = -0.1550486 longitude
当你靠近格林威治时,经度从0.2201796变为-0.1550486。
答案 1 :(得分:0)
我在使用 javascript 代码时遇到了与 teltonika 设备相同的问题。这是我与teltonika技术团队讨论后的解决方案,希望您能将其转换为python。
注意:这里不需要加负号,因为我们是从较小的值中减去较大的值
node:path
以下是将任何长度的
// NOTE: lat and lon should be a valid hex of 4 bytes each.
function fixLatLon(num) {
let maxVal = Math.pow(2, 32-1);
if (num > maxVal) num = maxVal - num
return num;
}
转换为其适当的 hex
的通用解决方案。
请注意,这个通用解决方案将其除以 1e7 并为您提供最终可用的经纬度
lat lon