如何将 Google 地图链接转换为 GPS 坐标? (我认为
10°11'12.0"北纬 13°14'15.0"东经
是常见 GPS 坐标格式的示例。)
我问的原因是Android版谷歌地图(我使用三星Galaxy Note 3)似乎没有给出坐标。它只会提供 Google 链接。 (任何右键指令都无法在手机中执行,只能在电脑中执行。)
例如。如何转换以下链接以查找埃菲尔铁塔的坐标:
我认为谷歌有早期的标准,其中超链接参数包含坐标。但目前的标准更加神秘。
现在我想在我的 Android(三星 Galaxy Note 3)手机中手动执行此操作。但也许程序化转换也对这个问题感兴趣。
编辑:
这个问题不是关于坐标的十进制和DMS(度、分、秒)格式之间的转换。许多网页和代码片段都可用于此。
您需要取消缩短 url 链接,结果将是嵌入坐标的 url。在你的例子中:
请参阅此主题,了解如何使用 Python 取消缩短: 如何取消网址缩短?
然后您需要解析它的坐标,例如通过搜索
@
字符。假设您的长网址名为 longurl
。在Python中,你可以这样做
import re
temp = re.search('@([0-9]?[0-9]\.[0-9]*),([0-9]?[0-9]\.[0-9]*)', longurl, re.DOTALL)
latitude = temp.groups()[0]
longitude = temp.groups()[1]
(如果需要的话,您可以进一步将其从 DD 转换为分钟、秒。)
这是一个老问题,我认为接受的解决方案不适用于我刚刚得到的谷歌地图。这是目前有效的版本:
import re
def extract_lat_long_from_url(url):
"""
Extract latitude and longitude from a Google Maps URL.
:param url: Google Maps URL as a string.
:return: A tuple containing latitude and longitude as strings, or (None, None) if not found.
"""
regex = r"@([0-9.-]+),([0-9.-]+)"
match = re.search(regex, url)
if match:
latitude, longitude = match.groups()
return latitude, longitude
else:
return None, None
示例:
long_url = 'https://www.google.com/maps/place/Mount+Sunapee+Resort/@43.314131,-72.087448,14.25z/data=!4m6!3m5!1s0x89e1f3c35c83af93:0x74e50d9525036279!8m2!3d43.3313962!4d-72.0804797!16s%2Fm%2F0g563tg?entry=tts'
lat, long = extract_lat_long_from_url(long_url)
# ('43.314131', '-72.087448')
此链接向您展示如何将 Google 地图链接中的坐标(DD 格式,又称十进制度)转换为 GPS 坐标(DMS - 度、分、秒)。总体思路是使用以下过程获取 DD 值并将其分解为纬度和经度的度、分和秒值:
1) 取整数值。这变成了度。
2) 取剩余的小数值并乘以 60。该值的整数部分是分钟。
3) 最后,将剩下的十进制值再次乘以 60。这是秒值(通常四舍五入到小数点后两位)。
示例:48.8583701、2.2944813
纬度:
degrees
= 48
0.8583701 * 60 = 51.502206 =>
minutes
= 51
0.502206 * 60 = 30.13236 =>
seconds
= 30.13
纬度 (DMS):48° 51' 30.13" N
如果您想以编程方式执行此操作,该链接还包含一些代码。