将整数转换为Lat long地理位置

时间:2016-04-08 18:38:17

标签: python gps coordinates gis tracker

我有跟踪teltonika GPS跟踪器的python脚本。 GPS数据被解析为整数 514511623,2201796 如此划分到10000000给了我拉特,很长。但是当跟踪器通过伦敦时,坐标就像这样 516631273,4293416810所以devision给我错误的经度。知道如何正确转换它

2 个答案:

答案 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。

注意:这里不需要加负号,因为我们是从较小的值中减去较大的值

修复 teltonika 设备的纬度

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