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 以获得令人难以忍受的细节。
我有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 以获得令人难以忍受的细节。