【问题标题】:Converting dd° mm.mmm' to dd.ddddd° (latitude & longitude) in Python 3在 Python 3 中将 dd° mm.mmm' 转换为 dd.ddddd°(纬度和经度)
【发布时间】:2016-11-19 08:48:32
【问题描述】:

我有表格中的 GPS 坐标

纬度 = 3648.5518 朗 = 17443.258

然后我想转换成更传统的格式

纬度 = -36.8091667 朗 = 174.7209667

我可以通过字符串操作来做到这一点,如下所示。但是这种方法似乎很“罗嗦”。在 Python 3.4 中是否有更好的方法(任何内置功能)来实现这种转换?我的搜索是空白的。任何建议将不胜感激。

史蒂夫(python/编程新手)

Lat = 3648.5518
Lat = str(Lat)
Latdd = float(Lat[:2])
Latmmmmm = float(Lat[2:])
Latddmmmm = Latdd+(Latmmmmm/60.0)
print(Latddmmmm)


Lon = 17443.258
Lon = str(Lon)
Londd = float(Lon[:3])
Lonmmmmm = float(Lon[3:])
Londdmmmm = Londd+(Lonmmmmm/60.0)
print(Londdmmmm)

【问题讨论】:

  • 示例中的负号是否正确?它与代码不匹配。

标签: python-3.x gps


【解决方案1】:

看起来输入是对十进制表示法的滥用,将 deg min 设置为 100*deg + min。

您可以使用模除法提取度、分和秒部分。为了清楚起见,分成两个函数。

def dm(x):
    degrees = int(x) // 100
    minutes = x - 100*degrees

    return degrees, minutes

def decimal_degrees(degrees, minutes):
    return degrees + minutes/60 

print (decimal_degrees(*dm(3648.5518)))

【讨论】:

    猜你喜欢
    • 2014-08-11
    • 2021-10-20
    • 2019-11-18
    • 2016-03-20
    • 1970-01-01
    • 2020-09-02
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多