Я новичок в коде и пытаюсь построить программу, которая передает несколько длинных / широтных координат (хранящихся в массиве), а затем для каждой длинной, широковой координаты говорит, находится ли пользователь в зеленом пространстве или нет , Это делается путем запроса плитки OpenStreetMap (с использованием urllib), в которой находится пользователь, и превращения ее в двоичное черно-белое изображение - белое, если это зеленая зона.
В настоящее время программа правильно записывает первый результат, но затем «застревает» в строке ниже на второй итерации:
response = urllib.request.urlopen(url)
Я попытался вручную проверить результаты, вставив каждую длинную / широту координату вручную. Эта проблема появляется только тогда, когда я добавляю цикл while к массивам координат long / lat. Журнал консоли сообщает мне, что код достигает вышеуказанного запроса 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
Ожидаемые результаты примерно такие:
достигнута загрузка плитки
сделать двоичный файл достигнут
Пользователь в зеленой среде!
загрузка плитки достигнута
сделать двоичный файл достигнут
Пользователь не в зеленой среде!
загрузка плитки достигнута
сделать двоичный файл достигнут
Пользователь в зеленой среде!
Текущий результат:
достигнута загрузка плитки
сделать двоичный файл достигнут
Пользователь в зеленой среде!
загрузка плитки достигла