当前位置: 首页 > 知识库问答 >
问题:

如何从具有使用Google API的坐标的数据集获取地址?

公羊子真
2023-03-14

该数据集有9975个纬度和经度。我想提取地址。我写了以下代码:

import numpy as np
from bs4 import BeautifulSoup
import urllib.request
import json

coordinates=coordinates.as_matrix()
address=[]
for i in range(len(coordinates)):
    qpage = 'https://maps.googleapis.com/maps/api/js/GeocodeService.Search?5m2&1d'+str(coordinates[i][0])+'&2d'+str(coordinates[i][1])+'&7sUS&9sen&callback=_xdc_._jhwtgt&key=MY_API_KEY&token=53066'
    page = urllib.request.urlopen(qpage)
    data = page.read().decode('utf-8').replace('(','[').replace(')',']')
    data=data[34:]
    js = json.loads(data)
    address.append(js[0]['results'][1]['formatted_address'])

我得到的错误是:

HTTPError回溯(最近一次调用上次)在()8中针对范围内的i(len(坐标)):9 qpage='1https://maps.googleapis.com/maps/api/js/GeocodeService.Search?5m2

c:\users\anish\appdata\local\programs\python36\lib\urllib\request.py在urlopen中(url、数据、超时、cafile、capath、cadefault、上下文)221其他:222 opener=\u opener--

C:\用户\anish\appdata\本地\程序\python\python36\lib\urllib\request.py打开(自我,完整,数据,超时)530为处理器在self.process_response.get(协议, []): 531 meth=getattr(处理器,meth_name)--

c:\users\anish\appdata\local\programs\python36\lib\urllib\request.py在http\u响应(self、request、response)中,如果不是,则为640(200

C:\用户\anish\appdata\本地\程序\python\python36\lib\urllib\request.py错误(自我,原型,*args)568如果http_err: 569 args=(判决,'默认','http_error_default')orig_args-

C:\用户\anish\appdata\本地\程序\python\python36\lib\urllib\request.py在_call_chain(自我,链,种类,meth_name,*args)502处理程序中的处理程序:503 func=getattr(处理程序,meth_name)-

c:\users\anish\appdata\local\programs\python36\lib\urllib\request.py in http_error\u default(self,req,fp,code,msg,hdrs)648类HTTPDefaultErrorHandler(BaseHandler):649 def http_error\u default(self,req,fp,code,msg,hdrs):--

HTTPError:HTTP错误403:禁止

任何帮助都将不胜感激。

共有1个答案

吕淮晨
2023-03-14

您使用的URL

'https://maps.googleapis.com/maps/api/js/GeocodeService.Search?5m2

这是来自Google Maps JavaScript API的地理编码服务的内部调用。您不应该使用内部URL,而应该使用官方web服务调用。

看一看地理编码API留档,并用记录的反向地理编码URL替换URL:

'https://maps.googleapis.com/maps/api/geocode/json?latlng='str(坐标[i][0]),'str(坐标[i][1])'

我相信您得到的是403错误,因为您请求中的令牌已过期。此令牌由Maps JavaScript API生成,因此您应该使用web服务调用来解决此问题。

请注意,web服务限制为每秒50次查询。

此外,我建议看看谷歌地图服务的Python客户端。有了这个库,你可以很容易地反向地理编码你的坐标

import googlemaps

coordinates=coordinates.as_matrix()
gmaps = googlemaps.Client(key='YOUR_API_KEY')

for i in range(len(coordinates)):
    reverse_geocode_result = gmaps.reverse_geocode((coordinates[i][0], coordinates[i][1]))

我希望这能有所帮助!

 类似资料:
  • 问题内容: 拥有3m的microtouch显示器。它通过USB连接到我的debian系统,并重新识别为人机界面(hid)。我正在尝试访问和推送实时信息…如果被触摸,我想知道(x,y)的位置,并将其通过netcat通过管道传送到另一台主机。 不幸的是,我只能使用 要么 您会得到似乎无处可查的十六进制代码… 有人知道如何获取这些信息吗?必须有一种从十六进制代码中提取它的方法。不幸的是,我不知道如何解释

  • 我正在使用VEMap API。我有一张地图的左上点和右下点(包围框)的纬度和经度。我要得到中心点。有什么简单的方法可以做到这一点?我在谷歌上搜索也找不到解决办法。 我在想的是,如果我能用上面提到的两点定义地图,那么我就能非常容易地得到中心:

  • 我有一些带有json的URL,需要读取数据。在本例中,json如下所示: 我想将获取的数据作为组件的属性返回。最好的方法是什么?我试着用axios做到这一点。我设法获取数据,但在render()方法中设置state之后,我收到了一个空对象。以下是代码: 我不知道为什么在render()方法中数据消失了。如果我把 在。然后部分,我获得状态为200的数据。 所以我现在问是否有其他方法可以做到这一点。我

  • 问题内容: 首先,我不是Java开发人员:(我只需要一个小程序,它将从现有pdf文件中按字段名称输出到我的字段坐标,当我从命令行调用类时输入该字段的坐标,就像这样: 我在服务器上使用itext。现在,我正在尝试运行简单的代码: 但是我有一个错误:“类型不匹配:无法从列表转换为float []”。当我更换 与 我得到了结果“ [com.itextpdf.text.pdf.AcroFields$Fie

  • 因此,我试图在Github中托管我的天气应用程序项目,它从Accu天气API获取数据,我认为它使用了http,但我无法获取数据,并得到一个错误。 错误消息: forecast.js:21混合内容:“HTTPS://alapottra-troj1n.github.io/weather-app/”的页面是通过HTTPS加载的,但请求的资源“http://dataservice.accuweather.

  • 本文向大家介绍使用js获取鼠标坐标相关面试题,主要包含被问及使用js获取鼠标坐标时的应答技巧和注意事项,需要的朋友参考一下