lat/lon转换8位数

lat/lon conversion 8 digits

我有8位数lat/long

12345678, -34567890 as an example

如何将它们转换为十进制?

类似于 12.345678、-34.567890

我可以假设前 2 位数字后有小数吗? 我对 8 位数字的初始格式感到困惑。 如何将它们转换为十进制?

def dd2dms(deg):
    d = int(deg)
    md = abs(deg - d) * 60
    m = int(md)
    sd = (md - m) * 60
    return [d, m, sd]
print(dd2dms(12345678))

result: 12345678

如果假设有 2 个小数点则:

print(dd2dms(12.345678))

result: [12,20,44.4407...]

更新:

我发现我可以除以 1e6

取决于您如何获得数字,但在您的特定情况下您可能只除以 1e6,因为它似乎有六个小数点:

coords = (12345678, -34567890)
latitude, longitude = (i/1e6 for i in coords)
print(latitude, longitude)

您不能只假设前两位数字后面是小数,因为 -1.625730 是有效的经度(例如)。

如果您在浏览器中搜索“8 位纬度经度”,您会找到比我们在这里更好地解释这一点的参考资料。

您问题的直接答案是,这些是标准 lat/long 坐标,小数点后六位。输入的大小从 0.000000 到 179.999999 不等(好吧,180.000000),所以你也可以有 7 或 9 位数字。

检查 here 以获得令人难以忍受的细节。