将 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
我通过附加到电子邮件的 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