将 Google 地图链接转换为坐标

问题描述 投票:0回答:3

如何将 Google 地图链接转换为 GPS 坐标? (我认为

10°11'12.0"北纬 13°14'15.0"东经

是常见 GPS 坐标格式的示例。)

我问的原因是Android版谷歌地图(我使用三星Galaxy Note 3)似乎没有给出坐标。它只会提供 Google 链接。 (任何右键指令都无法在手机中执行,只能在电脑中执行。)

例如。如何转换以下链接以查找埃菲尔铁塔的坐标:

http://goo.gl/maps/VqEsU

我认为谷歌有早期的标准,其中超链接参数包含坐标。但目前的标准更加神秘。

现在我想在我的 Android(三星 Galaxy Note 3)手机中手动执行此操作。但也许程序化转换也对这个问题感兴趣。

编辑:

这个问题不是关于坐标的十进制和DMS(度、分、秒)格式之间的转换。许多网页和代码片段都可用于此。

google-maps hyperlink gps coordinates
3个回答
2
投票

您需要取消缩短 url 链接,结果将是嵌入坐标的 url。在你的例子中:

https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z/data=!3m1!4b1!4m2!3m1!1s0x0:0x8ddca9ee380ef7e0?hl=en

请参阅此主题,了解如何使用 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 转换为分钟、秒。)


0
投票

这是一个老问题,我认为接受的解决方案不适用于我刚刚得到的谷歌地图。这是目前有效的版本:

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')

-1
投票

链接向您展示如何将 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

如果您想以编程方式执行此操作,该链接还包含一些代码。

© www.soinside.com 2019 - 2024. All rights reserved.