2017-04-18 5 views
0

私は、私の街のキーワードに関連するすべてのビジネスをgeolocateしようとしています。まず、radarsearch APIを使用してプレイスIDを取得し、後でPlaces APIを使用して各プレイスID(名前やフォーマットされたアドレスなど)。Googleのradarsearch APIの結果

私の最初のアプローチでは、半径22kmの9つの円周上に私の都市を分割し、ビジネスにはならない郊外を避けました。このようにして、約150のビジネスが重複しているため、重複した結果を一旦削除してしまいました。会社の公式ウェブページには245があると主張しているため、この結果は信頼できません。

すべてのビジネスを検索するために、私は半径10kmの周りで私の都市を分割しました。したがって、約50組の座標で、私は今、すべてのゾーン(農村部と非農村部)を含めて、都市を埋める。今、驚くべきことに私はわずか81の企業しか手に入らない!どのようにこれを可能にすることができますか?

私はすべての情報を別々の辞書に保存していますが、半径が大きくなるにつれて各辞書のデータ量が増え、常に一定の半径であることに気付きました。

これまでの質問とは別に、リクエストごとに結果の量を制限する方法はありますか?

dict1 = {} 
radius=20000 
keyword='keyworkd' 
key=YOUR_API_KEY 
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?" 
list_dicts = [] 
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)): 
    url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key 
    response = urllib2.urlopen(url) 
    table = json.load(response) 
    if table['status']=='OK': 
     for j,line in enumerate(table['results']): 
      temp = {j : line['place_id']} 
      dict1.update(temp) 
     list_dicts.append(dict1) 
    else: 
     pass 

答えて

0

最後に、私はこの問題を解決するために管理:

私が使用しているコードは次のようです。

各ループの繰り返しでdictの初期化を行う必要がありました。これですべての情報が保存され、最初から欲しかったものを取り出すことができます。

dict1 = {} 
radius=20000 
keyword='keyworkd' 
key=YOUR_API_KEY 
url_base="https://maps.googleapis.com/maps/api/place/radarsearch/json?" 
list_dicts = [] 
for i,(lo, la) in enumerate(zip(lon_txt,lat_txt)): 
    url=url_base+'location='+str(lo)+','+str(la)+'&radius='+str(radius)+'&keyword='+keyword+'&key='+key 
    response = urllib2.urlopen(url) 
    table = json.load(response) 
    if table['status']=='OK': 
     for j,line in enumerate(table['results']): 
      temp = {j : line['place_id']} 
      dict1.update(temp) 
     list_dicts.append(dict1) 
     dict1 = {} 
    else: 
     pass 
関連する問題