我正在使用geopy获取城市名称的纬度-经度对。
对于单个查询,这很好用。现在我尝试遍历一个包含46,000个城市名称的大列表,并为每个城市获取地理编码。之后,我会将它们通过检查循环,将位于美国的城市(如果有的话)分类到正确的州。我的问题是,我一直收到“GeocoderTimedOut('服务超时')”的错误,所有东西都非常缓慢,我不确定是我的问题还是geopy的性质。以下是相关的代码片段:
for tweetcount in range(number_of_tweets):
#Get the city name from the tweet
city = data_dict[0]['tweetList'][tweetcount]['user']['location']
#Sort out useless tweets
if(len(city)>3 and not(city is None)):
# THE RESPONSIBLE LINE, here the error occurs
location = geolocator.geocode(city);
# Here the sorting into the state takes place
if location is not None:
for statecount in range(len(data)):
if point_in_poly(location.longitude, location.latitude, data[statecount]['geometry']):
state_tweets[statecount] += 1;
break;
在每2到3次调用时,这一行代码总是会超时。City的格式为"曼彻斯特"、"纽约,纽约"或类似形式。我已经在代码周围添加了try-except块,但这并没有真正解决问题,所以我现在已将其删除...希望有任何想法。