如何将城市和国家/地区传递给地理编码

时间:2016-06-15 20:40:10

标签: python geopy

我想确保为正确的城市获得lat和lng。例如,澳大利亚有悉尼,加拿大有悉尼。这很好用

for d in listofobjs:
    location = geolocator.geocode(d['city'])
    d2 = {
        'username': d['username'],
        'latitude': location.latitude,
        'longitude': location.longitude
    }
    listofobjs2.append(d2)

但如果我尝试这样的位置

,我会收到错误
location = geolocator.geocode(d['city'],d['country'])

当我尝试从locatoion中读取纬度时出现错误

AttributeError: 'list' object has no attribute 'latitude'

是否可以将城市和国家/地区都传递给地理编码?

1 个答案:

答案 0 :(得分:0)

在文档中声明geolocator.geocode可以返回0,1或更多值。 该方法可以返回一个列表,因此当您尝试将其作为单个结构元素访问时,会返回错误消息。 或者遍历列表并根据需要附加到listofobjs2。

您无法确定是否正好获得1个位置匹配。但为什么传递2个参数?我会将它们组合在一个字符串中,如文档示例所示:

"有些人在NYC"。所以如果你提出这样的请求:

d ['城市'] +" &#34 + d ['国家']

它会更好地匹配示例

https://geopy.readthedocs.io/en/1.10.0/