【发布时间】:2016-02-06 04:46:43
【问题描述】:
当我使用 geopy 根据它们的经度和纬度计算 2 个地址之间的距离时,它适用于单个数据对。但是当有更多数据时,它总是给我这个错误:
地理编码中的文件“/Library/Python/2.7/site-packages/geopy/geocoders/osm.py”,第 193 行 self._call_geocoder(url, timeout=timeout), exact_one _call_geocoder 中的文件“/Library/Python/2.7/site-packages/geopy/geocoders/base.py”,第 171 行 引发 GeocoderServiceError(消息) geopy.exc.GeocoderServiceError: urlopen 错误 [Errno 65] 没有到主机的路由
你知道我该如何避免这个问题吗?
我的代码很简单:(为此输入的数据有很多对数据)
from geopy.geocoders import Nominatim
from geopy.distance import vincenty
def calculate_distance(add1, add2):
geolocator = Nominatim()
location1 = geolocator.geocode(add1)
al1 = (location1.latitude, location1.longitude)
location2 = geolocator.geocode(add2)
al2 = (location2.latitude, location2.longitude)
distce = vincenty(al1, al2).miles
return distce
【问题讨论】:
-
看起来更像是网络错误,而不是 API 的问题。
-
每次都会发生这种情况,我的网络工作正常......@user1157751
-
这也发生在我身上。我倾向于认为我被列入黑名单是因为请求太多。
-
@CherryWu 我遇到了同样的错误:/ 你是怎么解决的?可能正如 Hazam 所说,因为请求太多,它发生了。
-
嗨@waterkinq,我后来通过使用Google Geo API解决了这些问题。如果你只是想获得可视化的位置,你可以在这里使用我的 IPython Notebook 代码github.com/hanhanwu/Hanhan_Play_With_Social_Media/blob/master/… 如果你想获得详细的位置,请查看我在下面写的代码。有用。但是您可能需要更改
if子句,因为不同的位置有不同的标签。