Ошибка кода: запросы OSM URL в цикле Python - PullRequest
0 голосов
/ 14 мая 2019

Я новичок в коде и пытаюсь построить программу, которая передает несколько длинных / широтных координат (хранящихся в массиве), а затем для каждой длинной, широковой координаты говорит, находится ли пользователь в зеленом пространстве или нет , Это делается путем запроса плитки 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

Ожидаемые результаты примерно такие:

достигнута загрузка плитки сделать двоичный файл достигнут Пользователь в зеленой среде! загрузка плитки достигнута сделать двоичный файл достигнут Пользователь не в зеленой среде! загрузка плитки достигнута сделать двоичный файл достигнут Пользователь в зеленой среде!

Текущий результат:

достигнута загрузка плитки сделать двоичный файл достигнут Пользователь в зеленой среде! загрузка плитки достигла

...