python错误的pygeocoder

时间:2017-07-21 21:31:37

标签: python pandas

我使用城市和州生成坐标,然后用于计算2点之间的距离。我使用pygeocoder生成城市/州的坐标。偶尔我会得到一个通用的Google错误(这是pygoecoder使用的)并且会破坏该过程并迫使我在整个数据集上重新启动该过程。它通常在我再试一次时起作用。我并不熟悉" vectorize",但是我可以使用try / except进行Geocoder调用来阻止它在不干扰vectorize的情况下破坏吗?

单独提问。 Pygeocoder产生另一个更有意义的错误; OVER_QUERY_LIMIT。是否有另一个库可能没有查询限制,或者可以使用API​​身份验证来增加查询限制?

import pandas as pd
from pygeocoder import Geocoder
from math import sin, cos, sqrt, atan2, radians

def geocoder(city, state):
  print(city,state)
  coords = Geocoder.geocode("{0}, {1}".format(city, state)).coordinates                         
  lat, long = coords
  R = 6373.0
  lat1 = radians(lat)
  lon1 = radians(long)
  lat2 = radians(38.978443)
  lon2 = radians(-76.492180) 
  dlon = lon2 - lon1 
  dlat = lat2 - lat1
  a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 
  c = 2 * atan2(sqrt(a), sqrt(1 - a))
  distance = R * c
  return distance

players['distance'] = np.vectorize(geocoder)(players['City'], players['State'])

0 个答案:

没有答案