【问题标题】:determine the city from gps coordinates根据 GPS 坐标确定城市
【发布时间】:2021-11-05 14:05:31
【问题描述】:

我正在尝试使用 gps 坐标查找城市 我的数据框看起来像这样

        tripId  latitude    longitude
    0   1828765 50.126219   8.767003
    1   1828765 50.126173   8.766984
    ... ... ... ...
    497 1828714 53.680520   10.428270
    498 1828714 53.680497   10.428355
    499 1828714 53.680484   10.428431

我试过这段代码:

 import numpy as np
    df['location']=np.nan
from geopy.geocoders import Nominatim
geolocator = Nominatim(user_agent="geoapiExercises")
    for i in range(df.shape[0]): 
        df['location'][i] =  geolocator.reverse(str(df['latitude'][i])+","+str(df['longitude'][i]))

但它不起作用! init() 缺少 3 个必需的位置参数:“地址”、“点”和“原始” 你们中有人知道如何解决这个问题吗? 谢谢

【问题讨论】:

  • “它不起作用”。解释到底发生了什么
  • @AlexeyLarionov : UFuncTypeError: ufunc 'add' 不包含具有签名匹配类型的循环 (dtype(' dtype('
  • 我为经度和纬度添加了 str(),所以现在我有另一个错误:__init__() 缺少 3 个必需的位置参数:'address'、'point' 和 'raw'
  • Documentation 表示可以传递一个元组(df['latitude'][i], df['longitude'][i]),不一定是字符串!

标签: python data-analysis


【解决方案1】:

代码如下,希望对你有帮助:

from geopy.geocoders import Nominatim
import numpy as np

geolocator = Nominatim(user_agent='your_app_name')

coordinates = np.array([
    [50.126219,8.767003],
    [50.126173,8.766984],
    [53.680520,10.428270],
    [53.680497,10.428355],
    [53.680484,10.428431]
])

addresses = []

for coordinate in coordinates:
    addresses.append(geolocator.reverse(coordinate).address)

print(addresses)

# output:
['20, Willmannstraße, Fechenheim, Ost, Frankfurt am Main, Hessen, 60386, Deutschland',
 '20, Willmannstraße, Fechenheim, Ost, Frankfurt am Main, Hessen, 60386, Deutschland',
 'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland',
 'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland',
 'Pöhlen, Schönberg, Sandesneben-Nusse, Herzogtum Lauenburg, Schleswig-Holstein, 22929, Deutschland']

您唯一的错误是您试图进行格式化打印,而您只需要传递两个坐标。

我让该代码只保存地址,但如果您想要更多详细信息,您可以进入循环并排除 .address 方法。

我希望我确实帮助了你。祝你好运,伙计。

【讨论】:

  • 非常感谢:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
相关资源
最近更新 更多