代码错误:python循环中的OSM URL请求

时间:2019-05-14 00:57:41

标签: python openstreetmap urllib

我是一名编码新手,正在尝试构建一个传递多个长/纬度坐标(存储在数组中)的程序,然后对于每个长/纬度坐标,它说明用户是否在绿色空间中。这是通过请求用户所使用的OpenStreetMap磁贴(使用urllib)并将其转换为二进制的黑白图像-如果它是绿色空间则为白色来完成的。

当前程序正确地写入了第一个结果,但是在第二次迭代的下面一行中被“卡住”:

response = urllib.request.urlopen(url) 

我尝试通过手动插入每个长/纬度坐标来手动检查结果。仅当我通过长/纬度坐标数组添加while循环时,才会出现此问题。控制台日志告诉我代码到达上述urllib请求,然后停止。

def _download_tile(tile: mercantile.Tile):

    print("download tile reached")

    server = random.choice(['a', 'b', 'c'])
    url = 'http://{server}.tile.openstreetmap.org/{zoom}/{x}/{y}.png'.format(
    server=server,
    zoom=tile.z,
    x=tile.x,
    y=tile.y
    )
    #this is preventing loops from succeeding
    response = urllib.request.urlopen(url)
    img = PIL.Image.open(io.BytesIO(response.read()))
    return img, tile

......

if __name__ == '__main__':

    latArray = [51.457445,51.459029,51.470282,51.498874,51.518787,53.481106,53.532974,53.519284]
    longArray = [-2.601963,-2.605868,-2.619305,-2.648916,-2.58347,-1.751884,-1.701067,-1.67877]

    zoom1 = 19 #might have to make this a more zoomed out level

    bb = 0.00001

    f = 0
    while f < 8:
        lat = latArray[f]
        long = longArray[f]
        north = lat - bb
        west = long - bb
        south = lat + bb
        east = long + bb
        get_image(west, south, east, north, zoom1).save('osm_image.png')
        makebinary()
        f =+1
  

预期结果如下:

     

已到达下载磁贴   使达到二进制   用户处于绿色环境中!   下载瓦达到   使达到二进制   用户不在绿色环境中!   下载瓦达到   使达到二进制   用户处于绿色环境中!

     

当前结果是:

     

已到达下载磁贴   使达到二进制   用户处于绿色环境中!   下载瓦达到

0 个答案:

没有答案