Python:更快的地理编码 API 方法

-1 投票
1 回答
30 浏览
提问于 2025-04-14 15:53

我用我的代码把60个地址转换成坐标,差不多要花1分钟。我希望结果能按顺序显示地址、纬度和经度。有没有更快的方法呢?谢谢!

代码:

import time
import requests
import json
import pandas as pd
import numpy as np
import string

addressList=['xxx','xx1'] #330,000 addresses in total

def get_latitude_longtitude(address, GOOGLE_PLACES_API_KEY): 
    url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '&key=' + GOOGLE_PLACES_API_KEY
    while True:
        res = requests.get(url)
        js = json.loads(res.text)

        if js['status'] != 'OVER_QUERY_LIMIT':   
            time.sleep(1) 
            break

    result = js['results'][0]['geometry']['location']
    lat = result['lat'] 
    lng = result['lng'] 

    return address, lat, lng

lst=[]
for address in addressList:
    GOOGLE_PLACES_API_KEY = 'kkkkkkk'
    res = get_latitude_longtitude(address,GOOGLE_PLACES_API_KEY)
    #print(res)
    address=res[0]
    lat=res[1]
    lng=res[2]
    lst.append(address)
    lst.append(lat)
    lst.append(lng)

1 个回答

0

你可以使用Python的multiprocessing库(或者类似的工具)来同时运行固定数量的进程。然后让每个进程以固定的速度发送请求,比如每秒发送一个请求。通过调整进程的数量,你就可以控制整体的请求速度。

Google地图平台的API有默认的使用限制,具体可以查看这个链接

如果你想要尽可能快地发送请求,可以参考使用方向API网络服务的最佳实践,特别是礼貌使用Google API这一部分。简单来说,如果你试图发送请求的速度过快,反而可能会导致速度变慢(因为会出现重试的情况)。

撰写回答