我是一名编码新手,正在尝试构建一个传递多个长/纬度坐标(存储在数组中)的程序,然后对于每个长/纬度坐标,它说明用户是否在绿色空间中。这是通过请求用户所使用的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
预期结果如下:
已到达下载磁贴 使达到二进制 用户处于绿色环境中! 下载瓦达到 使达到二进制 用户不在绿色环境中! 下载瓦达到 使达到二进制 用户处于绿色环境中!
当前结果是:
已到达下载磁贴 使达到二进制 用户处于绿色环境中! 下载瓦达到