Ошибка печати запроса с использованием Overpass API с Python

Пока это мой код, я использую flickrapi для получения изображений с широтой и долготой, затем использую api overpass в flickr, чтобы найти информацию об узлах в этом месте.

import flickrapi
import overpy

api_key = "xxxxxxxxxxxxxxxxxxx"
secret_api_key = "xxxxxxxx"
flickr = flickrapi.FlickrAPI(api_key, secret_api_key)

def obtainImages():

    photo_list = flickr.photos.search(api_key=api_key, accuracy = 15, has_geo=1, per_page = 100, extras = 'tags, url_s')

    for photo in photo_list[0]:

        id = str(photo.attrib['id'])
        url = str(photo.attrib['url_s'])
        title = (photo.attrib['title']).encode('utf-8')

        photo_location = flickr.photos_geo_getLocation(photo_id=photo.attrib['id'])
        lat = float(photo_location[0][0].attrib['latitude'])
        lon = float(photo_location[0][0].attrib['longitude'])

        max_lat = lat + 0.25
        min_lat = lat - 0.25
        max_lon = lon + 0.25
        min_lon = lon - 0.25


        print lat
        print min_lat
        api = overpy.Overpass()
        query = "node(%s, %s, %s, %s);out;" % ( min_lat, min_lon, max_lat, max_lon )
        result = api.query(query)
        print query
        print len(result.nodes)

obtainImages()

Аспект flickr api работает отлично, если я пытаюсь напечатать любую из переменных, все это работает. Также min_lat и min_lon все работают при печати.

Однако, хотя ошибок нет, мой запрос не возвращает результатов. Лат и min_lat печатают один раз и только один раз, а затем программа продолжает работать, но больше ничего не делает и ничего не печатает

Есть ли у кого-нибудь предложения относительно того, почему это может быть? Любая помощь будет принята с благодарностью, так как я новичок!

1 ответ

Проблема в том, что вы запрашиваете огромные наборы данных, это заставит запрос занять много времени.

Например, я запросил только одно изображение из flickr, и ваш скрипт произвел этот запрос:

node(20.820875, -87.027648, 21.320875, -86.527648);out;

Есть 51162 результатов. Вы запрашиваете каждый доступный узел в окне площадью 2890 квадратных километров, см. Здесь для иллюстрации: http://bl.ocks.org/d/3d4865b71194101b9473

Чтобы лучше понять, как изменения (даже "маленькие", такие как +/- 0,25) долготы и широты влияют на результат, я предлагаю вам взглянуть на этот пост в GIS Stackexchange: /questions/22761892/luchshij-dvoichnyij-format-xml-dlya-javame/22761914#22761914

Другие вопросы по тегам