将 hddd° mm.mm′ 转换为十进制

Converting hddd° mm.mm′ to decimal degrees

我通过附加到电子邮件的 HTML 文档获取数据(不要问为什么...)。我需要从该文件中读取 GPS 坐标并希望使用 OSM 生成路线。我可以毫无问题地将 GPS 坐标作为字符串获取,但我真的很难将它们形成 OSM 可以使用的东西。

GPS 坐标看起来像这样:N53°09.20 E009°11.82,拆分不是问题,但我需要将它们组成正常的经纬度,例如 (53.119897, 7.944012)。

有没有人遇到同样的问题或者有没有我可以使用的库?

以下代码可用于将您提供的格式的度、分和秒转换为十进制经纬度:

import re

coords = "N53°09.20 E009°11.82"
regex = "N(\d+)°(\d+)\.(\d+) E(\d+)°(\d+)\.(\d+)"

match = re.split(regex, coords)

x = int(match[1]) + (int(match[2]) / 60) + (int(match[3]) / 3600)

y = int(match[4]) + (int(match[5]) / 60) + (int(match[6]) / 3600)

print("%f, %f" %(x, y))

输出:

53.155556, 9.206111

如果你的坐标只有度数和小数分,那么代码可以稍微修改一下,如下图:

import re

coords = "N53°09.20 E009°11.82"
regex = "N(\d+)°(\d+)\.(\d+) E(\d+)°(\d+)\.(\d+)"

match = re.split(regex, coords)

x = int(match[1]) + ((int(match[2]) + (int(match[3]) / 100)) / 60)

y = int(match[4]) + ((int(match[5]) + (int(match[6]) / 100)) / 60)


print("%f, %f" %(x, y))

输出:

53.153333, 9.197000