HTTPError:HTTP错误403:使用smopy时出现urlib3

时间:2019-06-02 04:37:47

标签: python-3.x jupyter-notebook openstreetmap

我正在尝试使用smopy时生成一个osm映射,但是我一直收到禁止的错误,这是代码集:

box = (lat[region].min(), lon[region].min(),
       lat[region].max(), lon[region].max())
m = smopy.Map(box, z=12)
m.show_ipython()

然后出现以下错误:

HTTPError                                 Traceback (most recent call last)
<ipython-input-48-1060c6eba6aa> in <module>
      1 box = (lat[region].min(), lon[region].min(),
      2        lat[region].max(), lon[region].max())
----> 3 m = smopy.Map(box, z=12)
      4 m.show_ipython()
~\AppData\Roaming\Python\Python37\site-packages\smopy.py in __init__(self, *args, **kwargs)
    290         self.ymin = min(self.box_tile[1], self.box_tile[3])
    291         self.img = None
--> 292         self.fetch()
    293 
    294     def to_pixels(self, lat, lon=None):

~\AppData\Roaming\Python\Python37\site-packages\smopy.py in fetch(self)
    322         """Fetch the image from OSM's servers."""
    323         if self.img is None:
--> 324             self.img = fetch_map(self.box_tile, self.z)
    325         self.w, self.h = self.img.size
    326         return self.img

~\AppData\Roaming\Python\Python37\site-packages\smopy.py in fetch_map(box, z)
     63         for y in range(y0, y1 + 1):
     64             px, py = TILE_SIZE * (x - x0), TILE_SIZE * (y - y0)
---> 65             img.paste(fetch_tile(x, y, z), (px, py))
     66     return img
     67 

~\AppData\Roaming\Python\Python37\site-packages\smopy.py in fetch_tile(x, y, z)
     43     """
     44     url = get_url(x, y, z)
---> 45     png = BytesIO(urlopen(url).read())
     46     img = Image.open(png)
     47     img.load()

~\Anaconda31\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
    220     else:
    221         opener = _opener
--> 222     return opener.open(url, data, timeout)
    223 
    224 def install_opener(opener):

~\Anaconda31\lib\urllib\request.py in open(self, fullurl, data, timeout)
    529         for processor in self.process_response.get(protocol, []):
    530             meth = getattr(processor, meth_name)
--> 531             response = meth(req, response)
    532 
    533         return response

~\Anaconda31\lib\urllib\request.py in http_response(self, request, response)
    639         if not (200 <= code < 300):
    640             response = self.parent.error(
--> 641                 'http', request, response, code, msg, hdrs)
    642 
    643         return response

~\Anaconda31\lib\urllib\request.py in error(self, proto, *args)
    567         if http_err:
    568             args = (dict, 'default', 'http_error_default') + orig_args
--> 569             return self._call_chain(*args)
    570 
    571 # XXX probably also want an abstract factory that knows when it makes

~\Anaconda31\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
    501         for handler in handlers:
    502             func = getattr(handler, meth_name)
--> 503             result = func(*args)
    504             if result is not None:
    505                 return result

~\Anaconda31\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
    647 class HTTPDefaultErrorHandler(BaseHandler):
    648     def http_error_default(self, req, fp, code, msg, hdrs):
--> 649         raise HTTPError(req.full_url, code, msg, hdrs, fp)
    650 
    651 class HTTPRedirectHandler(BaseHandler):

知道该代码之前可以正常运行,所以我删除了浏览器cookie,但是没有用,并且我使用的是最新版本的python和anaconda

1 个答案:

答案 0 :(得分:0)

重新安装smopy(获取最新版本),他们更改了tileserver网址。 那应该工作。