【问题标题】:reverse geopy geocoding pandas反向地理编码熊猫
【发布时间】:2018-01-06 02:31:17
【问题描述】:

我在 Jupyter Notebook 中有以下数据框,其中包含from geopy.geocoders import Nominatimimport pandas as pd 的 GPS 坐标列表。

    stop_id     Lat         Long
0   2        53.352280  -6.263668
1   3        53.352345  -6.263758
2   4        53.352604  -6.264143
3   6        53.352783  -6.264417
4   7        53.352867  -6.264543
5   8        53.353287  -6.265152

我一直在尝试向 GPS 坐标添加一个填充了相应地址的新列。

为此我尝试了

df['address'] = geolocator.reverse((df['Lat'], df['Long']))

但收到以下错误消息:

ValueError: 必须是坐标对或点。

然后我创建了另一个列 [LatLong]

df['LatLong'] = df[df.columns[1:]].apply(
    lambda x: ', '.join(x.dropna().astype(float).astype(str)),axis=1)

    stop_id     Lat         Long         LatLong
0   2       53.352280   -6.263668    53.35228, -6.263668
1   3       53.352345   -6.263758    53.352345, -6.263758
2   4       53.352604   -6.264143    53.352604, -6.264143
3   6       53.352783   -6.264417    53.352783, -6.264417
4   7       53.352867   -6.264543    53.352867, -6.264543
5   8       53.353287   -6.265152    53.353287, -6.265152

然后我运行了以下代码:

df['address'] = geolocator.reverse(df['LatLong'])

但是,我只是收到完全相同的错误消息。

我上面使用的代码改编自本网站上对类似问题和 GeoPy 文档的其他答案,所以我假设我的代码不够精确,无法以正确的方式提取 GPS 坐标以进行 geopy。

谁能指出我的错误?

【问题讨论】:

    标签: python python-3.x pandas jupyter-notebook geopy


    【解决方案1】:

    “大量 DataFrame 行可能会对地理编码服务产生大量地理编码请求,这可能会受到服务的限制(例如,通过返回 Too Many Requests 429 HTTP 错误或超时)。

    geopy.extra.rate_limiter.RateLimiter 类提供了一个方便的包装器,可用于在地理编码调用之间自动添加延迟,以减少地理编码服务的负载。它还可以重试失败的请求并吞下单个行的错误。”

    我在 Geopy 文档上找到了这个。也许你应该改变 tre RateLimiter ,看看它是否有帮助

    【讨论】:

      【解决方案2】:

      问题

      你的错误信息说:

      ValueError: 必须是坐标对或点

      在这两个方面:

      df['address'] = geolocator.reverse((df['Lat'], df['Long']))
      

      df['address'] = geolocator.reverse(df['LatLong'])
      

      您将 pandas 结构发送到不理解它们的方法中。

      解决方案

      我无法对此进行测试,但解决方案可能类似于:

      df['address'] = df.apply(
          lambda row: geolocator.reverse((row['Lat'], row['Long'])), axis=1)
      

      【讨论】:

      • 您好,感谢您的帮助!我尝试了您的解决方案,但不幸的是我收到了错误消息:GeocoderTimedOut: ('服务超时','发生在索引 231')。如果您认为有帮助,我很乐意提供更多信息。
      • 那将是一个完全不同的问题......因此是一个不同的问题。遗憾的是,这是一个我不熟悉的话题。
      • 好的,没问题。感谢您抽出宝贵时间提供帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-09
      相关资源
      最近更新 更多