我想获取已经清理过的数据框中列出的公司的纬度和经度,但是我仅有的信息是公司名称和国家/地区(在本例中仅是英国)。
在尝试了不同的方法之后,我得到了一些经纬度,但在大多数情况下却没有位于英国的经纬度。这是我尝试的代码:
base_url= "https://maps.googleapis.com/maps/api/geocode/json?"
AUTH_KEY = "AI**************QTk"
geolocator = GoogleV3(api_key = AUTH_KEY)
parameters = {"address": "Revolut, London",
"key": AUTH_KEY}
print(f"{base_url}{urllib.parse.urlencode(parameters)}")
r = requests.get(f"{base_url}{urllib.parse.urlencode(parameters)}")
data = json.loads(r.content)
data.get("results")[0].get("geometry").get("location") #That works for the first company
df["loc"] = df["Company name for communication"].apply(geolocator.geocode)
df["point"]= df["loc"].apply(lambda loc: tuple(loc.point) if loc else None)
df[['lat', 'lon', 'altitude']] = pd.DataFrame(df['point'].to_list(), index=df.index)
我会非常感谢您的帮助。如果我的解释不清楚,请提供详细信息。谢谢!
如果您仅尝试在英国获得Geocoding API结果,那么您将希望利用组件过滤。
地理编码API可以返回仅限于特定区域的地址结果。您可以使用components
过滤器指定限制。有关更多信息,请参见组件过滤。具体来说,您可能要包含country
。
请注意,该值应为国家名称或两个字母的ISO 3166-1国家/地区代码。API遵循用于定义国家/地区的ISO标准,并且在使用国家/地区的相应ISO代码时,过滤效果最佳。例如
这是一个示例地理编码Web请求,其在英国的国家/地区组成部分过滤如下所示:
https://maps.googleapis.com/maps/api/geocode/json?address=high+st+hasting&components=country:gb&key=YOUR_API_KEY
这只会返回仅位于英国的结果,如果不存在,将返回零结果。
您可能还想看看区域偏向。
请注意,如果您偏向该地区,则返回的
prefers
结果将在该国家/地区产生,但doesn't restrict
会返回该国家/地区,并将返回地址的结果。与组件过滤不同,此方法采用ccTLD(国家代码顶级域)参数来指定区域偏差。大多数ccTLD代码与ISO 3166-1代码相同,但有一些明显的例外。例如,英国的ccTLD为“ uk”(。co.uk),而其ISO 3166-1代码为“ gb”(专门针对“大不列颠及北爱尔兰联合王国”的实体)。
另请参阅地理编码API最佳做法
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句